diff --git a/src/main/java/com/fkzy/warn/common/constants/ReportConstants.java b/src/main/java/com/fkzy/warn/common/constants/ReportConstants.java new file mode 100644 index 0000000..a98f953 --- /dev/null +++ b/src/main/java/com/fkzy/warn/common/constants/ReportConstants.java @@ -0,0 +1,85 @@ +package com.fkzy.warn.common.constants; + +import com.fkzy.warn.model.EnterpriseInfo; + +/** + * 用户常量 + * + * @param + * @author zhangjing + * @return + * @create 2024/12/4 + **/ +public class ReportConstants { + + /** + * 一,司法体检背景 + **/ + public static final String BACKGROUND_JUDICIAL = "backgroundJudicial"; + + /** + * 二、企业基本信息 + **/ + public static final String BASIC_ENTERPRISE = "basicEnterprise"; + /** + * 四、近三月新发案件告警Text1 + **/ + public static final String THREE_MONTHS_TEXT1 = "threeMonthsText1"; + + /** + * 四、近三月新发案件告警Table1 + **/ + public static final String THREE_MONTHS_TABLE1 = "threeMonthsTable1"; + /** + * 四、近三月新发案件告警Text2 + **/ + public static final String THREE_MONTHS_TEXT2 = "threeMonthsText2"; + /** + * 四、近三月新发案件告警Text2 + **/ + public static final String THREE_MONTHS_TEXT3 = "threeMonthsText3"; + /** + * 四、近三月新发案件告警Table4 + **/ + public static final String THREE_MONTHS_TABLE3 = "threeMonthsTable3"; + /** + * 5.1 案件审理阶段Text1 + **/ + public static final String CASE_STAGE_TEXT1 = "caseStageText1"; + /** + * 5.2 案件发生地域与管辖法院 + **/ + public static final String LOCATION_TEXT = "locationText"; + /** + * 5.3案件类型与案由Text1 + **/ + public static final String CASE_ACTION_TEXT1 = "caseActionText1"; + /** + * 5.3案件类型与案由Table1 + **/ + public static final String CASE_ACTION_TABLE1 = "caseActionTable1"; + /** + * 5.3案件类型与案由Text2 + **/ + public static final String CASE_ACTION_TEXT2 = "caseActionText2"; + /** + * 5.4 涉案金额 + **/ + public static final String AMOUNT_INVOLVED_TEXT = "amountInvolvedText"; + /** + * 5.5 诉讼地位 + **/ + public static final String LITIGATION_STATUS_TEXT = "litigationStatusText"; + /** + * 6.2 重大法律纠纷案件 + **/ + public static final String MAJOR_CASE_TEXT = "majorCaseText"; + /** + * 6.3 执行案件 + **/ + public static final String EXECUTION_CASES_TEXT = "executionCasesText"; + /** + * 6.4 高频诉讼对手 + **/ + public static final String HIGH_FREQUENCY_TEXT = "highFrequencyText"; +} diff --git a/src/main/java/com/fkzy/warn/common/util/Demo.java b/src/main/java/com/fkzy/warn/common/util/Demo.java index 4eab5ed..6902187 100644 --- a/src/main/java/com/fkzy/warn/common/util/Demo.java +++ b/src/main/java/com/fkzy/warn/common/util/Demo.java @@ -25,6 +25,9 @@ public class Demo { // LawResearchUtil law = new LawResearchUtil(); // law.querySssxxg(null, null); // } + + + public static void main(String[] args) { String filePath = "司法.txt"; String jsonOutput = convertTextToJson(filePath); diff --git a/src/main/java/com/fkzy/warn/common/util/ReportUtil.java b/src/main/java/com/fkzy/warn/common/util/ReportUtil.java index ba1b172..5291f04 100644 --- a/src/main/java/com/fkzy/warn/common/util/ReportUtil.java +++ b/src/main/java/com/fkzy/warn/common/util/ReportUtil.java @@ -1,10 +1,1099 @@ package com.fkzy.warn.common.util; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.fkzy.warn.common.constants.ReportConstants; +import com.fkzy.warn.model.*; +import org.apache.poi.ooxml.POIXMLDocument; +import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.openxml4j.util.ZipSecureFile; +import org.apache.poi.xwpf.usermodel.*; +import org.apache.xmlbeans.XmlCursor; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; + /** * @author zhangjing * @date 2024/12/15 19:42 * @description */ public class ReportUtil { + static final String[] stages = {"一审", "二审", "再审审查", "再审", "执行", "审结"}; + public static void createReport(ReportModel reportModel) { + // 指定现有Word文档的路径 + String inputFilePath = "司法风险报告demo.docx"; + // 指定保存修改后文档的路径 + String outputFilePath = "司法风险报告.docx"; + ZipSecureFile.setMinInflateRatio(0.001); + OPCPackage opcPackage; + try { + opcPackage = POIXMLDocument.openPackage(inputFilePath); + } catch (IOException e) { + throw new RuntimeException(e); + } + XWPFDocument xwpfDocument; + try { + xwpfDocument = new XWPFDocument(opcPackage); + } catch (IOException e) { + throw new RuntimeException(e); + } + List xwpfParas = xwpfDocument.getParagraphs(); + for (int i = 0; i < xwpfParas.size(); i++) { + XWPFParagraph xwpfParagraph = xwpfParas.get(i); + String text = xwpfParagraph.getText(); + switch (text) { + case ReportConstants.BACKGROUND_JUDICIAL: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getBackgroundJudicial()); + break; + case ReportConstants.BASIC_ENTERPRISE: + tableBasicEnterprise(xwpfParagraph, xwpfDocument, reportModel.getBasicEnterprise()); + break; + case ReportConstants.THREE_MONTHS_TEXT1: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getThreeMonthsText1()); + break; + case ReportConstants.THREE_MONTHS_TABLE1: + threeMonthsTable1(xwpfParagraph, xwpfDocument, reportModel.getThreeMonthsCases()); + break; + case ReportConstants.THREE_MONTHS_TEXT2: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getThreeMonthsText2()); + break; + case ReportConstants.THREE_MONTHS_TEXT3: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getThreeMonthsText3()); + break; + case ReportConstants.THREE_MONTHS_TABLE3: + threeMonthsTable3(xwpfParagraph, xwpfDocument, reportModel.getThreeMonthsCases()); + break; + case ReportConstants.CASE_STAGE_TEXT1: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getCaseStageText1()); + break; + case ReportConstants.LOCATION_TEXT: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getLocationText()); + break; + case ReportConstants.CASE_ACTION_TEXT1: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getCaseActionText1()); + break; + case ReportConstants.CASE_ACTION_TABLE1: + caseActionTable1(xwpfParagraph, xwpfDocument, reportModel.getThreeYearsCases()); + break; + case ReportConstants.CASE_ACTION_TEXT2: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getCaseActionText2()); + break; + case ReportConstants.AMOUNT_INVOLVED_TEXT: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getAmountInvolvedText()); + break; + case ReportConstants.LITIGATION_STATUS_TEXT: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getLitigationStatusText()); + break; + case ReportConstants.MAJOR_CASE_TEXT: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getMajorCaseText()); + break; + case ReportConstants.HIGH_FREQUENCY_TEXT: + paragraph(xwpfParagraph, xwpfDocument, reportModel.getHighFrequencyText()); + break; + } + //插入图片 +// if(text.equals("${mark_newPicture}")){ +// +// XmlCursor cursor = xwpfParagraph .getCTP().newCursor(); +// XWPFParagraph newPara = xwpfDocument.insertNewParagraph(cursor); +// newPara.setAlignment(ParagraphAlignment.CENTER);//居中 +// XWPFRun newParaRun = newPara.createRun(); +// newParaRun.addPicture(new FileInputStream("./doc/bus.png"),XWPFDocument.PICTURE_TYPE_PNG,"bus.png,",Units.toEMU(200), Units.toEMU(200)); +// xwpfDocument.removeBodyElement(xwpfDocument.getPosOfParagraph(xwpfParagraph)); +// } + } + + write(xwpfDocument, outputFilePath); + } + + private static void paragraph(XWPFParagraph xwpfParagraph, XWPFDocument xwpfDocument, + String content) { + XmlCursor cursor = xwpfParagraph.getCTP().newCursor(); + XWPFParagraph newPara = xwpfDocument.insertNewParagraph(cursor); + //两端对齐 + newPara.setAlignment(ParagraphAlignment.BOTH); + //首行缩进24磅 + newPara.setIndentationFirstLine(500); + XWPFRun newParaRun = newPara.createRun(); + newParaRun.setText(content); + newParaRun.setFontFamily("宋体"); + //四号字体 + newParaRun.setFontSize(15); + newParaRun.setBold(false); + xwpfDocument.removeBodyElement(xwpfDocument.getPosOfParagraph(xwpfParagraph)); + } + + + /** + * 一,司法体检背景 + * + * @param enterpriseInfo + * @return java.lang.String + * @author zhangjing + * @create 2024/12/17 + **/ + public static String backgroundJudicial(EnterpriseInfo enterpriseInfo) { + StringBuilder result = new StringBuilder(); + result.append("图灵高斯依托人民法院大数据管理服务平台与“供应链司法人工智能联合创新中心”,通过大数据挖掘,助力企业实时、全面掌握涉诉风险,为企业监管提供有力支撑。企业名称:") + .append(enterpriseInfo.getENTNAME()) + .append(",社会统一信用代码:") + .append(enterpriseInfo.getCREDITCODE()) + .append("。所采用的数据为生成本报告时(截止2024年7月23日9时)人民法院大数据管理和服务平台最新数据。本报告的统计口径为2024年1月1日0时至2024年7月23日9时期间的新发与结转案件。"); + return result.toString(); + } + + /** + * 二、企业基本信息 + * + * @param xwpfParagraph + * @param xwpfDocument + * @param enterpriseInfo + * @return void + * @author zhangjing + * @create 2024/12/17 + **/ + private static void tableBasicEnterprise(XWPFParagraph xwpfParagraph, XWPFDocument xwpfDocument, + EnterpriseInfo enterpriseInfo) { + XmlCursor cursor = xwpfParagraph.getCTP().newCursor(); + XWPFTable table = xwpfDocument.insertNewTbl(cursor); + XWPFTableRow tableRow1 = table.getRow(0); + tableRow1.getCell(0).setText("公司名称"); + tableRow1.createCell().setText(enterpriseInfo.getENTNAME()); + tableRow1.createCell(); + tableRow1.createCell(); + XWPFTableRow tableRow2 = table.createRow(); + tableRow2.getCell(0).setText("成立日期"); + tableRow2.getCell(1).setText(TimeUtil.formatTimeStr(enterpriseInfo.getESDATE())); + tableRow2.getCell(2).setText("营业期限"); + tableRow2.getCell(3).setText(TimeUtil.formatTimeStr(enterpriseInfo.getOPFROM()) + "至无固定期限"); + XWPFTableRow tableRow3 = table.createRow(); + tableRow3.getCell(0).setText("法定代表人"); + tableRow3.getCell(1).setText(enterpriseInfo.getFRNAME()); + tableRow3.getCell(2).setText("行业名称"); + tableRow3.getCell(3).setText(enterpriseInfo.getCEICATEGORYNAME1()); + XWPFTableRow tableRow4 = table.createRow(); + tableRow4.getCell(0).setText("统一社会信用代码"); + tableRow4.getCell(1).setText(enterpriseInfo.getCREDITCODE()); + tableRow4.getCell(2).setText("公司类型"); + tableRow4.getCell(3).setText(enterpriseInfo.getENTTYPE()); + XWPFTableRow tableRow5 = table.createRow(); + tableRow5.getCell(0).setText("注册资本"); + tableRow5.getCell(1).setText(enterpriseInfo.getREGCAP()); + tableRow5.getCell(2).setText("实缴资本"); + tableRow5.getCell(3).setText(enterpriseInfo.getCEIREALCAPITAL()); + XWPFTableRow tableRow6 = table.createRow(); + tableRow6.getCell(0).setText("所在省份"); + tableRow6.getCell(1).setText(enterpriseInfo.getREGORGPROVINCE()); + tableRow6.getCell(2).setText("登记机关"); + tableRow6.getCell(3).setText(enterpriseInfo.getREGORG()); + XWPFTableRow tableRow7 = table.createRow(); + tableRow7.getCell(0).setText("注册地址"); + tableRow7.getCell(1).setText(enterpriseInfo.getDOM()); + XWPFTableRow tableRow8 = table.createRow(); + tableRow8.getCell(0).setText("经营范围"); + tableRow8.getCell(1).setText(enterpriseInfo.getZSOPSCOPE()); + + mergeCellsHorizontal(table, 0, 1, 3); + mergeCellsHorizontal(table, 6, 1, 3); + mergeCellsHorizontal(table, 7, 1, 3); + + setTableFont(table, "宋体", 15, false); + ReportUtil.setTableLocation(table, "center"); + ReportUtil.setCellLocation(table, "CENTER", "center"); + + xwpfDocument.removeBodyElement(xwpfDocument.getPosOfParagraph(xwpfParagraph)); + } + + /** + * 四、近三月新发案件告警Text1 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/15 + **/ + public static String threeMonthsText1(List caseList) { + // 初始化统计数据 + int totalCases = 0; + BigDecimal totalAmount = BigDecimal.ZERO; + int plaintiffCases = 0; + BigDecimal plaintiffAmount = BigDecimal.ZERO; + int defendantCases = 0; + BigDecimal defendantAmount = BigDecimal.ZERO; + int thirdPartyCases = 0; + BigDecimal thirdPartyAmount = BigDecimal.ZERO; + + // 遍历案件列表并统计 + for (LawCase lawCase : caseList) { + totalCases++; + if (lawCase.getNQsbdje() != null) { + totalAmount = totalAmount.add(lawCase.getNQsbdje()); + } + + List litigantList = lawCase.getLitigantInfoList(); + for (LitigantInfo litigantInfo : litigantList) { + if ("原告".equals(litigantInfo.getNSsdw())) { + plaintiffCases++; + if (lawCase.getNQsbdje() != null) { + plaintiffAmount = plaintiffAmount.add(lawCase.getNQsbdje()); + } + } else if ("被告".equals(litigantInfo.getNSsdw())) { + defendantCases++; + if (lawCase.getNQsbdje() != null) { + defendantAmount = defendantAmount.add(lawCase.getNQsbdje()); + } + } else if ("第三人".equals(litigantInfo.getNSsdw())) { + thirdPartyCases++; + if (lawCase.getNQsbdje() != null) { + thirdPartyAmount = thirdPartyAmount.add(lawCase.getNQsbdje()); + } + } + } + } + // 构建返回字符串 + StringBuilder result = new StringBuilder(); + result.append("近三个月新发案件").append(totalCases).append("件,涉案金额").append(totalAmount.divide(BigDecimal.valueOf(10000), 2, BigDecimal.ROUND_HALF_UP)).append("万元。"); + result.append("其中,原告案件").append(plaintiffCases).append("件,涉诉金额").append(plaintiffAmount.divide(BigDecimal.valueOf(10000), 2, BigDecimal.ROUND_HALF_UP)).append("万元;"); + result.append("被告案件").append(defendantCases).append("件,涉诉金额").append(defendantAmount.divide(BigDecimal.valueOf(10000), 2, BigDecimal.ROUND_HALF_UP)).append("万元;"); + result.append("第三人案件").append(thirdPartyCases).append("件,涉诉金额").append(thirdPartyAmount.divide(BigDecimal.valueOf(10000), 2, BigDecimal.ROUND_HALF_UP)).append("万元。"); + result.append("案件审理阶段分布如下:\n"); + + return result.toString(); + } + /** + * 四、近三月新发案件告警Table1 + * + * @param xwpfParagraph + * @param xwpfDocument + * @param caseList + * @return void + * @author zhangjing + * @create 2024/12/17 + **/ + private static void threeMonthsTable1(XWPFParagraph xwpfParagraph, XWPFDocument xwpfDocument, + List caseList) { + Map countMap = new HashMap<>(); + Map amountMap = new HashMap<>(); + // 初始化所有阶段的数量和金额为 0 + for (String stage : stages) { + countMap.put(stage, 0); + amountMap.put(stage, BigDecimal.ZERO); + } + // 遍历 caseList 统计数量和金额 + for (LawCase lawCase : caseList) { + String stage = lawCase.getNSlcx(); + if (countMap.containsKey(stage)) { + countMap.put(stage, countMap.get(stage) + 1); + BigDecimal currentAmount = amountMap.get(stage); + if (lawCase.getNQsbdje()!=null){ + amountMap.put(stage, currentAmount.add(lawCase.getNQsbdje())); + } + } + } + + XmlCursor cursor = xwpfParagraph.getCTP().newCursor(); + XWPFTable table = xwpfDocument.insertNewTbl(cursor); + XWPFTableRow tableRow1 = table.getRow(0); + tableRow1.getCell(0).setText("审理阶段"); + tableRow1.createCell().setText("案件数量(件)"); + tableRow1.createCell().setText("涉案金额(万元)"); + for (String stage : stages) { + int count = countMap.get(stage); + BigDecimal amount = amountMap.get(stage); + // 在这里可以将统计结果添加到文档中 +// xwpfParagraph.createRun().setText(stage + " 数量: " + count + ", 金额: " + amount.toString()); +// xwpfDocument.createParagraph(); // 创建一个新的段落 + + XWPFTableRow tableRow = table.createRow(); + tableRow.getCell(0).setText(stage); + tableRow.getCell(1).setText(String.valueOf(count)); + tableRow.getCell(2).setText(String.valueOf(amount.divide(BigDecimal.valueOf(10000),2, RoundingMode.HALF_UP))); + } + setTableFont(table, "宋体", 15, false); + ReportUtil.setTableLocation(table, "center"); + ReportUtil.setCellLocation(table, "CENTER", "center"); + + xwpfDocument.removeBodyElement(xwpfDocument.getPosOfParagraph(xwpfParagraph)); + + // 输出统计结果 + } + /** + * 四、近三月新发案件告警Text2 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/15 + **/ + public static String threeMonthsText2(List caseList) { + // 使用 Map 存储每个省份的案件数量 + Map provinceCountMap = new HashMap<>(); + + // 遍历案件列表并统计 + for (LawCase lawCase : caseList) { + String province = lawCase.getCSsdy(); // 假设 LawCase 类有 getCSsdy() 方法获取所属省份 + provinceCountMap.put(province, provinceCountMap.getOrDefault(province, 0) + 1); + } + + // 按数量排序,找出前三个省份 + List> sortedProvinces = new ArrayList<>(provinceCountMap.entrySet()); + sortedProvinces.sort((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue())); + + // 构建返回字符串 + StringBuilder result = new StringBuilder(); + + // 添加前三省份的统计信息 + if (!sortedProvinces.isEmpty()) { + result.append("新发案件分布全国").append(provinceCountMap.size()).append("省,其中"); + for (int i = 0; i < Math.min(3, sortedProvinces.size()); i++) { + Map.Entry entry = sortedProvinces.get(i); + result.append(entry.getKey()).append("案件数量位列第").append(i + 1).append(",为").append(entry.getValue()).append("件"); + if (i < 2 && i + 1 < sortedProvinces.size()) { + result.append(","); + } else if (i == 2 && i + 1 < sortedProvinces.size()) { + result.append("。"); + } + } + result.append("案件分布详细情况如下:\n"); + } + + // 详细 +// for (Map.Entry entry : sortedProvinces) { +// result.append(entry.getKey()).append(": ").append(entry.getValue()).append("件\n"); +// } + + return result.toString(); + } + /** + * 四、近三月新发案件告警Text3 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/15 + **/ + public static String threeMonthsText3(List caseList) { + // 使用 Map 存储每种案件类型的数量 + Map caseTypeCountMap = new HashMap<>(); + // 使用 Map 存储每种案件类型的总金额 + Map amountMap = new HashMap<>(); + + // 案件类型名称映射 + Map caseTypeNameMap = new HashMap<>(); + caseTypeNameMap.put("civil", "民事案件"); + caseTypeNameMap.put("criminal", "刑事案件"); + caseTypeNameMap.put("administrative", "行政案件"); + caseTypeNameMap.put("preservation", "非诉保全审查"); + caseTypeNameMap.put("implement", "执行案件"); + caseTypeNameMap.put("bankrupt", "强制清算与破产案件"); + caseTypeNameMap.put("jurisdict", "管辖案件"); + caseTypeNameMap.put("compensate", "赔偿案件"); + + // 遍历案件列表并统计 + for (LawCase lawCase : caseList) { + String caseType = lawCase.getCaseType(); // 假设 LawCase 类有 getCaseType() 方法获取案件类型 + caseTypeCountMap.put(caseType, caseTypeCountMap.getOrDefault(caseType, 0) + 1); + if (lawCase.getNQsbdje() != null) { + BigDecimal currentAmount = amountMap.getOrDefault(caseType, BigDecimal.ZERO); + amountMap.put(caseType, currentAmount.add(lawCase.getNQsbdje())); + } + } + + // 按数量排序,找出前三个案件类型 + List> sortedList = new ArrayList<>(caseTypeCountMap.entrySet()); + sortedList.sort((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue())); + + // 构建返回字符串 + StringBuilder result = new StringBuilder(); + if (!sortedList.isEmpty()) { + result.append("新发案件类型:"); + for (int i = 0; i < Math.min(3, sortedList.size()); i++) { + Map.Entry entry = sortedList.get(i); + String caseTypeName = caseTypeNameMap.getOrDefault(entry.getKey(), entry.getKey()); + result.append(caseTypeName).append(entry.getValue()).append("件"); + if (i < 2) { + result.append(","); + } else { + result.append("。"); + } + } + result.append("案件分布详细情况如下:\n"); + + // 添加详细分布情况 +// for (Map.Entry entry : sortedList) { +// String caseType = entry.getKey(); +// String caseTypeName = caseTypeNameMap.getOrDefault(caseType, caseType); +// int count = entry.getValue(); +// BigDecimal totalAmount = amountMap.getOrDefault(caseType, BigDecimal.ZERO); +// result.append(caseTypeName).append(count).append("件,总金额:").append(totalAmount).append("元\n"); +// } + } + + return result.toString(); + } + /** + * 四、近三月新发案件告警Table3 + * + * @param xwpfParagraph + * @param xwpfDocument + * @param caseList + * @return void + * @author zhangjing + * @create 2024/12/17 + **/ + private static void threeMonthsTable3(XWPFParagraph xwpfParagraph, XWPFDocument xwpfDocument, + List caseList) { + // 使用 Map 存储每种案件类型的数量 + Map caseTypeCountMap = new HashMap<>(); + // 使用 Map 存储每种案件类型的总金额 + Map amountMap = new HashMap<>(); + + // 案件类型名称映射 + Map caseTypeNameMap = new HashMap<>(); + caseTypeNameMap.put("civil", "民事案件"); + caseTypeNameMap.put("criminal", "刑事案件"); + caseTypeNameMap.put("administrative", "行政案件"); + caseTypeNameMap.put("preservation", "非诉保全审查"); + caseTypeNameMap.put("implement", "执行案件"); + caseTypeNameMap.put("bankrupt", "强制清算与破产案件"); + caseTypeNameMap.put("jurisdict", "管辖案件"); + caseTypeNameMap.put("compensate", "赔偿案件"); + + // 遍历案件列表并统计 + for (LawCase lawCase : caseList) { + String caseType = lawCase.getCaseType(); // 假设 LawCase 类有 getCaseType() 方法获取案件类型 + caseTypeCountMap.put(caseType, caseTypeCountMap.getOrDefault(caseType, 0) + 1); + if (lawCase.getNQsbdje() != null) { + BigDecimal currentAmount = amountMap.getOrDefault(caseType, BigDecimal.ZERO); + amountMap.put(caseType, currentAmount.add(lawCase.getNQsbdje())); + } + } + XmlCursor cursor = xwpfParagraph.getCTP().newCursor(); + XWPFTable table = xwpfDocument.insertNewTbl(cursor); + XWPFTableRow tableRow1 = table.getRow(0); + tableRow1.getCell(0).setText("案件类型"); + tableRow1.createCell().setText("案件数量(件)"); + tableRow1.createCell().setText("涉案金额(万元)"); + //map循环 + for (Map.Entry entry : caseTypeNameMap.entrySet()) { + XWPFTableRow tableRow = table.createRow(); + tableRow.getCell(0).setText(caseTypeNameMap.getOrDefault(entry.getKey(), entry.getKey())); + tableRow.getCell(1).setText(String.valueOf(caseTypeCountMap.getOrDefault(entry.getKey(),0))); + tableRow.getCell(2).setText(String.valueOf(amountMap.getOrDefault(entry.getKey(),BigDecimal.ZERO).divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP))); + } + setTableFont(table, "宋体", 15, false); + ReportUtil.setTableLocation(table, "center"); + ReportUtil.setCellLocation(table, "CENTER", "center"); + + xwpfDocument.removeBodyElement(xwpfDocument.getPosOfParagraph(xwpfParagraph)); + + // 输出统计结果 + } + /** + * 5.1 案件审理阶段Text1 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/15 + **/ + public static String caseStageText1(List caseList) { + + // 统计变量 + int totalCases = 0; + BigDecimal totalAmount = BigDecimal.ZERO; + Map roleCaseCountMap = new HashMap<>(); + Map roleAmountMap = new HashMap<>(); + Map stageCaseCountMap = new HashMap<>(); + + roleCaseCountMap.put("原告", 0); + roleCaseCountMap.put("被告", 0); + roleCaseCountMap.put("第三人", 0); + + for (String stage : stages) { + stageCaseCountMap.put(stage, 0); + } + + for (LawCase lawCase : caseList) { + totalCases++; + if (lawCase.getNQsbdje() != null) { + totalAmount = totalAmount.add(lawCase.getNQsbdje()); + } + + List litigantList = lawCase.getLitigantInfoList(); + for (LitigantInfo litigantInfo : litigantList) { + String role = litigantInfo.getNSsdw(); + if (roleCaseCountMap.containsKey(role)) { + roleCaseCountMap.put(role, roleCaseCountMap.get(role) + 1); + if (lawCase.getNQsbdje() != null) { + BigDecimal currentRoleAmount = roleAmountMap.getOrDefault(role, BigDecimal.ZERO); + roleAmountMap.put(role, currentRoleAmount.add(lawCase.getNQsbdje())); + } + } + } + + // 统计阶段 + String stage = lawCase.getNSlcx(); + if (stageCaseCountMap.containsKey(stage)) { + stageCaseCountMap.put(stage, stageCaseCountMap.get(stage) + 1); + } + } + + // 返回 + StringBuilder result = new StringBuilder(); + result.append("案件总数").append(totalCases).append("件,总涉案金额") + .append(totalAmount.divide(BigDecimal.valueOf(10000),2,RoundingMode.HALF_UP)).append("万元"); + for (String role : roleCaseCountMap.keySet()) { + int roleCaseCount = roleCaseCountMap.get(role); + BigDecimal roleAmount = roleAmountMap.getOrDefault(role, BigDecimal.ZERO); + roleAmount = roleAmount.divide(BigDecimal.valueOf(10000),2,RoundingMode.HALF_UP); + result.append(",").append(role).append("案件").append(roleCaseCount).append("件,涉诉金额").append(roleAmount).append("万元"); + } + result.append("。"); + for (String stage : stages) { + int stageCaseCount = stageCaseCountMap.get(stage); + if (stageCaseCount > 0) { + result.append(stage).append("案件").append(stageCaseCount).append("件、"); + } + } + + if (result.charAt(result.length() - 1) == '、') { + result.setLength(result.length() - 1); + } + result.append("。"); + + return result.toString(); + } + /** + * 5.2 案件发生地域与管辖法院 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/15 + **/ + + public static String locationText(List caseList) { + // 统计变量 + Map provinceCaseCountMap = new HashMap<>(); + + // 遍历案件列表并统计 + for (LawCase lawCase : caseList) { + String province = lawCase.getCSsdy(); // 假设 LawCase 类有 getCSSDY() 方法获取所属省 + if (province != null && !province.isEmpty()) { + provinceCaseCountMap.put(province, provinceCaseCountMap.getOrDefault(province, 0) + 1); + } + } + + // 构建返回字符串 + StringBuilder result = new StringBuilder(); + result.append("涉诉案件分布全国").append(provinceCaseCountMap.size()).append("省,其中"); + + // 获取案件数量最多的三个省份 + List> sortedProvinces = new ArrayList<>(provinceCaseCountMap.entrySet()); + sortedProvinces.sort((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue())); + + for (int i = 0; i < Math.min(3, sortedProvinces.size()); i++) { + Map.Entry entry = sortedProvinces.get(i); + result.append(entry.getKey()).append("案件数量位列第").append(i + 1).append(",共").append(entry.getValue()).append("起"); + if (i < Math.min(2, sortedProvinces.size() - 1)) { + result.append(","); + } + } + result.append("。各省涉诉案件分布情况如下图所示:"); + + return result.toString(); + } + /** + * 5.3案件类型与案由Text1 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/15 + **/ + public static String caseActionText1(List caseList) { + // 使用 Map 存储每种案件类型的数量 + Map caseTypeCountMap = new HashMap<>(); + // 使用 Map 存储每种案件类型的总金额 + Map amountMap = new HashMap<>(); + + // 案件类型名称映射 + Map caseTypeNameMap = new HashMap<>(); + caseTypeNameMap.put("civil", "民事案件"); + caseTypeNameMap.put("criminal", "刑事案件"); + caseTypeNameMap.put("administrative", "行政案件"); + caseTypeNameMap.put("preservation", "非诉保全审查"); + caseTypeNameMap.put("implement", "执行案件"); + caseTypeNameMap.put("bankrupt", "强制清算与破产案件"); + caseTypeNameMap.put("jurisdict", "管辖案件"); + caseTypeNameMap.put("compensate", "赔偿案件"); + + // 遍历案件列表并统计 + for (LawCase lawCase : caseList) { + String caseType = lawCase.getCaseType(); // 假设 LawCase 类有 getCaseType() 方法获取案件类型 + caseTypeCountMap.put(caseType, caseTypeCountMap.getOrDefault(caseType, 0) + 1); + if (lawCase.getNQsbdje() != null) { + BigDecimal currentAmount = amountMap.getOrDefault(caseType, BigDecimal.ZERO); + amountMap.put(caseType, currentAmount.add(lawCase.getNQsbdje())); + } + } + + // 按数量排序,找出前三个案件类型 + List> sortedList = new ArrayList<>(caseTypeCountMap.entrySet()); + sortedList.sort((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue())); + + // 构建返回字符串 + StringBuilder result = new StringBuilder(); + if (!sortedList.isEmpty()) { + result.append("案件类型:"); + for (int i = 0; i < Math.min(3, sortedList.size()); i++) { + Map.Entry entry = sortedList.get(i); + String caseTypeName = caseTypeNameMap.getOrDefault(entry.getKey(), entry.getKey()); + result.append(caseTypeName).append(entry.getValue()).append("件"); + if (i < 2) { + result.append(","); + } else { + result.append("。"); + } + } + result.append("案件分布详细情况如下:\n"); + + // 添加详细分布情况 +// for (Map.Entry entry : sortedList) { +// String caseType = entry.getKey(); +// String caseTypeName = caseTypeNameMap.getOrDefault(caseType, caseType); +// int count = entry.getValue(); +// BigDecimal totalAmount = amountMap.getOrDefault(caseType, BigDecimal.ZERO); +// result.append(caseTypeName).append(count).append("件,总金额:").append(totalAmount).append("元\n"); +// } + } + + return result.toString(); + } + /** + * 5.3案件类型与案由Table1 + * + * @param xwpfParagraph + * @param xwpfDocument + * @param caseList + * @return void + * @author zhangjing + * @create 2024/12/17 + **/ + private static void caseActionTable1(XWPFParagraph xwpfParagraph, XWPFDocument xwpfDocument, + List caseList) { + // 使用 Map 存储每种案件类型的数量 + Map caseTypeCountMap = new HashMap<>(); + // 使用 Map 存储每种案件类型的总金额 + Map amountMap = new HashMap<>(); + + // 案件类型名称映射 + Map caseTypeNameMap = new HashMap<>(); + caseTypeNameMap.put("civil", "民事案件"); + caseTypeNameMap.put("criminal", "刑事案件"); + caseTypeNameMap.put("administrative", "行政案件"); + caseTypeNameMap.put("preservation", "非诉保全审查"); + caseTypeNameMap.put("implement", "执行案件"); + caseTypeNameMap.put("bankrupt", "强制清算与破产案件"); + caseTypeNameMap.put("jurisdict", "管辖案件"); + caseTypeNameMap.put("compensate", "赔偿案件"); + + // 遍历案件列表并统计 + for (LawCase lawCase : caseList) { + String caseType = lawCase.getCaseType(); // 假设 LawCase 类有 getCaseType() 方法获取案件类型 + caseTypeCountMap.put(caseType, caseTypeCountMap.getOrDefault(caseType, 0) + 1); + if (lawCase.getNQsbdje() != null) { + BigDecimal currentAmount = amountMap.getOrDefault(caseType, BigDecimal.ZERO); + amountMap.put(caseType, currentAmount.add(lawCase.getNQsbdje())); + } + } + XmlCursor cursor = xwpfParagraph.getCTP().newCursor(); + XWPFTable table = xwpfDocument.insertNewTbl(cursor); + XWPFTableRow tableRow1 = table.getRow(0); + tableRow1.getCell(0).setText("案件类型"); + tableRow1.createCell().setText("案件数量(件)"); + tableRow1.createCell().setText("涉案金额(万元)"); + //map循环 + for (Map.Entry entry : caseTypeNameMap.entrySet()) { + XWPFTableRow tableRow = table.createRow(); + tableRow.getCell(0).setText(caseTypeNameMap.getOrDefault(entry.getKey(), entry.getKey())); + tableRow.getCell(1).setText(String.valueOf(caseTypeCountMap.getOrDefault(entry.getKey(),0))); + tableRow.getCell(2).setText(String.valueOf(amountMap.getOrDefault(entry.getKey(),BigDecimal.ZERO).divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP))); + } + setTableFont(table, "宋体", 15, false); + ReportUtil.setTableLocation(table, "center"); + ReportUtil.setCellLocation(table, "CENTER", "center"); + + xwpfDocument.removeBodyElement(xwpfDocument.getPosOfParagraph(xwpfParagraph)); + + // 输出统计结果 + } + /** + * 5.3案件类型与案由Text2 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/15 + **/ + + public static String caseActionText2(List caseList) { + // 使用 Map 来统计每个案件原因的数量 + Map causeCountMap = new HashMap<>(); + + // 遍历案件列表并统计 + for (LawCase lawCase : caseList) { + String cause = lawCase.getNLaay(); + causeCountMap.put(cause, causeCountMap.getOrDefault(cause, 0) + 1); + } + + // 将 map 转换为 list 并排序,找出数量最多的三个案件案由 + List> sortedCauses = causeCountMap.entrySet() + .stream() + .sorted((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue())) + .limit(3) + .collect(Collectors.toList()); + + // 构建返回字符串 + StringBuilder result = new StringBuilder("民事案件中,数量最多的三个案件案由是:"); + for (int i = 0; i < sortedCauses.size(); i++) { + Map.Entry entry = sortedCauses.get(i); + result.append(entry.getKey()).append(",涉案数量为:").append(entry.getValue()).append("件"); + if (i != sortedCauses.size() - 1) { + result.append(","); + } + } + result.append("。"); + return result.toString(); + } + /** + * 5.4 涉案金额 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/15 + **/ + + public static String amountInvolvedText(List caseList) { + // 遍历案件列表并统计 + for (LawCase lawCase : caseList) { + + } + // 构建返回字符串 + StringBuilder result = new StringBuilder(); + + return result.toString(); + } + /** + * 5.5 诉讼地位 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/15 + **/ + + public static String litigationStatusText(List caseList) { + // 按照诉讼地位分类并统计数量 + Map statusCountMap = caseList.stream() + .collect(Collectors.groupingBy(LawCase::getNSsdw, Collectors.counting())); + + // 按数量降序排序 + List> sortedStatusList = new ArrayList<>(statusCountMap.entrySet()); + sortedStatusList.sort((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue())); + StringBuilder result = new StringBuilder("涉诉案件中,"); + for (int i = 0; i < sortedStatusList.size(); i++) { + Map.Entry entry = sortedStatusList.get(i); + result.append("作为").append(entry.getKey()).append("案件数量最多,共").append(entry.getValue()).append("件"); + if (i < sortedStatusList.size() - 1) { + result.append(";"); + } + } + result.append("。"); + return result.toString(); + } + /** + * 重大法律纠纷案件 + * + * @param caseList + * @return java.lang.String + * @author zhangjing + * @create 2024/12/16 + */ + public static String majorCase(List caseList) { + int totalCaseCount = 0; + BigDecimal totalAmount = BigDecimal.ZERO; + int newCaseCount = 0; + BigDecimal newCaseAmount = BigDecimal.ZERO; + int oldCaseCount = 0; + BigDecimal oldCaseAmount = BigDecimal.ZERO; + + Map caseStatsMap = new HashMap<>(); + + for (LawCase lawCase : caseList) { + totalCaseCount++; + BigDecimal amountInTenThousand = lawCase.getNSqzxbdje().divide(BigDecimal.valueOf(10000), 2, BigDecimal.ROUND_HALF_UP); + totalAmount = totalAmount.add(amountInTenThousand); + //转结案 + +// if (lawCase.isNewCase()) { +// newCaseCount++; +// newCaseAmount = newCaseAmount.add(amountInTenThousand); +// } else { + oldCaseCount++; + oldCaseAmount = oldCaseAmount.add(amountInTenThousand); +// } + + List litigantList = lawCase.getLitigantInfoList(); + for (LitigantInfo litigantInfo : litigantList) { + String n_ssdw = litigantInfo.getNSsdw(); + caseStatsMap.putIfAbsent(n_ssdw, new CaseStats()); + CaseStats stats = caseStatsMap.get(n_ssdw); + stats.caseCount++; + stats.totalAmount = stats.totalAmount.add(amountInTenThousand); + } + } + + // 构建结果字符串 + StringBuilder result = new StringBuilder(); + result.append("2024年共有重大法律纠纷案件") + .append(totalCaseCount) + .append("件,涉诉金额") + .append(totalAmount) + .append("万元。\n") + .append("其中新发案件") + .append(newCaseCount) + .append("件,涉诉金额") + .append(newCaseAmount) + .append("万元;\n") + .append("往年结转案件") + .append(oldCaseCount) + .append("件,涉诉金额") + .append(oldCaseAmount) + .append("万元。\n"); + + for (Map.Entry entry : caseStatsMap.entrySet()) { + String n_ssdw = entry.getKey(); + CaseStats stats = entry.getValue(); + result.append(n_ssdw) + .append("案件") + .append(stats.caseCount) + .append("件,涉诉金额") + .append(stats.totalAmount) + .append("万元;\n"); + } + + return result.toString().trim(); + } + /** + * 6.3 执行案件 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/16 + **/ + public static String executionCases(List caseList) { + //结转 + + return ""; + } + /** + * 6.4 高频诉讼对手 + * + * @return java.lang.String + * @author zhangjing + * @create 2024/12/16 + **/ + public static String highFrequencyText(List caseList) { + Map plaintiffCountMap = new HashMap<>(); + Map defendantCountMap = new HashMap<>(); + + for (LawCase lawCase : caseList) { + List litigantList = lawCase.getLitigantInfoList(); + for (LitigantInfo litigantInfo : litigantList) { + String c_mc = litigantInfo.getCMc(); + if ("原告".equals(litigantInfo.getNSsdw())) { + plaintiffCountMap.put(c_mc, plaintiffCountMap.getOrDefault(c_mc, 0) + 1); + } else if ("被告".equals(litigantInfo.getNSsdw())) { + defendantCountMap.put(c_mc, defendantCountMap.getOrDefault(c_mc, 0) + 1); + } + } + } + + // 合并统计 + Map combinedCountMap = new HashMap<>(plaintiffCountMap); + defendantCountMap.forEach((key, value) -> + combinedCountMap.merge(key, value, Integer::sum) + ); + + // 获取前五 + List> topFive = combinedCountMap.entrySet() + .stream() + .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) + .limit(5) + .collect(Collectors.toList()); + + StringBuilder result = new StringBuilder(); + result.append("近三年涉诉案件中,"); + for (int i = 0; i < topFive.size(); i++) { + Map.Entry entry = topFive.get(i); + result.append(entry.getKey()); + if (i < topFive.size() - 1) { + result.append("、"); + } + } + result.append("等,多次向恒大集团有限公司发起诉讼。恒大集团有限公司与"); + for (int i = 0; i < topFive.size(); i++) { + Map.Entry entry = topFive.get(i); + result.append(entry.getKey()); + if (i < topFive.size() - 1) { + result.append("、"); + } + } + result.append("等频繁发生诉讼。"); + + return result.toString(); + } + /** + * @Description: 跨列合并 + * table + * row:行 + * fromCell:开始列 + * toCell:结束列 + */ + public static void mergeCellsHorizontal(XWPFTable table, int row, int fromCell, int toCell) { + for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) { + XWPFTableCell cell = table.getRow(row).getCell(cellIndex); + if (cellIndex == fromCell) { + cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART); + } else { + cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE); + } + } + } + + /** + * 设置表格内全部字体样式 + * + * @param table 表格对象 + * @param fontName 字体名称 + * @param fontSize 字体大小 + * @param isBold 是否加粗 + */ + public static void setTableFont(XWPFTable table, String fontName, int fontSize, boolean isBold) { + for (XWPFTableRow row : table.getRows()) { + row.setHeight(600); + for (XWPFTableCell cell : row.getTableCells()) { + for (XWPFParagraph paragraph : cell.getParagraphs()) { + paragraph.setAlignment(ParagraphAlignment.CENTER); + paragraph.setVerticalAlignment(TextAlignment.CENTER); + for (XWPFRun run : paragraph.getRuns()) { + run.setFontFamily(fontName); + run.setFontSize(fontSize); + run.setBold(isBold); + } + } + } + } + } + + + private static void write(XWPFDocument document, String filePath) { + try (FileOutputStream out = new FileOutputStream(filePath)) { + document.write(out); + } catch (IOException e) { + throw new RuntimeException("Failed to write document to file: " + filePath, e); + } + } + + + + + /** + * 董监高及法定代表人个人涉诉信息 + * + * @param dishonestInfoList,limitationList + * @return java.lang.String + */ + public static String personalLitigation(List dishonestInfoList, List limitationList) { + // 统计失信数 + Map dishonestCountMap = dishonestInfoList.stream() + .collect(Collectors.groupingBy(DishonestInfo::getQyfr, Collectors.counting())); + + + // 合并统计数据 + Map> combinedCountMap = new HashMap<>(); + for (String name : dishonestCountMap.keySet()) { + combinedCountMap.putIfAbsent(name, new HashMap<>()); + combinedCountMap.get(name).put("dishonestCount", dishonestCountMap.get(name)); + } + + + // 构建结果字符串 + StringBuilder result = new StringBuilder(); + for (Map.Entry> entry : combinedCountMap.entrySet()) { + String name = entry.getKey(); + long dishonestCount = entry.getValue().getOrDefault("dishonestCount", 0L); + result.append("姓名: ").append(name) + .append(", 失信数: ").append(dishonestCount) + .append(", 限高数: ").append(limitationList.size()) + .append("\n"); + } + return result.toString().trim(); + } + + + + + static class CaseStats { + int caseCount = 0; + BigDecimal totalAmount = BigDecimal.ZERO; + } + + + + + + /** + * 设置单元格水平位置和垂直位置 + * + * @param xwpfTable + * @param verticalLoction 单元格中内容垂直上TOP,下BOTTOM,居中CENTER,BOTH两端对齐 + * @param horizontalLocation 单元格中内容水平居中center,left居左,right居右,both两端对齐 + */ + public static void setCellLocation(XWPFTable xwpfTable, String verticalLoction, String horizontalLocation) { + List rows = xwpfTable.getRows(); + for (XWPFTableRow row : rows) { + List cells = row.getTableCells(); + for (XWPFTableCell cell : cells) { + CTTc cttc = cell.getCTTc(); + CTP ctp = cttc.getPList().get(0); + CTPPr ctppr = ctp.getPPr(); + if (ctppr == null) { + ctppr = ctp.addNewPPr(); + } + CTJc ctjc = ctppr.getJc(); + if (ctjc == null) { + ctjc = ctppr.addNewJc(); + } + //水平居中 + ctjc.setVal(STJc.Enum.forString(horizontalLocation)); + //垂直居中 + cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.valueOf(verticalLoction)); + } + } + } + + /** + * 设置表格位置 + * + * @param xwpfTable + * @param location 整个表格居中center,left居左,right居右,both两端对齐 + */ + public static void setTableLocation(XWPFTable xwpfTable, String location) { + CTTbl cttbl = xwpfTable.getCTTbl(); + CTTblPr tblpr = cttbl.getTblPr() == null ? cttbl.addNewTblPr() : cttbl.getTblPr(); + CTJc cTJc = tblpr.addNewJc(); + cTJc.setVal(STJc.Enum.forString(location)); + } } diff --git a/src/main/java/com/fkzy/warn/mapper/EnterpriseInfoMapper.java b/src/main/java/com/fkzy/warn/mapper/EnterpriseInfoMapper.java new file mode 100644 index 0000000..04949f0 --- /dev/null +++ b/src/main/java/com/fkzy/warn/mapper/EnterpriseInfoMapper.java @@ -0,0 +1,14 @@ +package com.fkzy.warn.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.fkzy.warn.model.EnterpriseInfo; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author zhangjing + * @date 2024/12/04 14:48 + * @description + */ +@Mapper +public interface EnterpriseInfoMapper extends BaseMapper { +} diff --git a/src/main/java/com/fkzy/warn/model/EnterpriseInfo.java b/src/main/java/com/fkzy/warn/model/EnterpriseInfo.java new file mode 100644 index 0000000..f8dd596 --- /dev/null +++ b/src/main/java/com/fkzy/warn/model/EnterpriseInfo.java @@ -0,0 +1,230 @@ +package com.fkzy.warn.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 企业基本信息 + * @author zhangjing + * @date 2024/12/05 14:07 + * @description + */ +@Data +@TableName("t_enterprise_info") +public class EnterpriseInfo extends BaseField{ + /** + * 统一信用代码 + */ + @ApiModelProperty("统一信用代码") + @TableId(value = "CREDITCODE", type = IdType.INPUT) + private String CREDITCODE; + /** + * 组织机构代码 + */ + @ApiModelProperty("组织机构代码") + @TableField(value = "ORGCODES") + private String ORGCODES; + /** + * 注册号 + */ + @ApiModelProperty("注册号") + @TableField(value = "REGNO") + private String REGNO; + /** + * 经营期限至 + */ + @ApiModelProperty("经营期限至") + @TableField(value = "OPTO") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private Date OPTO; + /** + * 经营期限自 + */ + @ApiModelProperty("经营期限自") + @TableField(value = "OPFROM") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private Date OPFROM; + + /** + * 企业名称 + */ + @ApiModelProperty("企业名称") + @TableField(value = "ENTNAME") + private String ENTNAME; + /** + * 注册资本(企业:万元) + */ + @ApiModelProperty("注册资本(企业:万元)") + @TableField(value = "REGCAP") + private String REGCAP; + /** + * 成立日期 + */ + @ApiModelProperty("成立日期") + @TableField(value = "ESDATE") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private Date ESDATE; + /** + * 法定代表人/负责人/执行事务合伙人 + */ + @ApiModelProperty("法定代表人/负责人/执行事务合伙人") + @TableField(value = "FRNAME") + private String FRNAME; + /** + * 登记机关 + */ + @ApiModelProperty("登记机关") + @TableField(value = "REGORG") + private String REGORG; + /** + * 经营状态 + */ + @ApiModelProperty("经营状态") + @TableField(value = "ENTSTATUS") + private String ENTSTATUS; + + /** + * 企业类型 + */ + @ApiModelProperty("企业类型") + @TableField(value = "ENTTYPE") + private String ENTTYPE; + /** + * 所在省份 + */ + @ApiModelProperty("所在省份") + @TableField(value = "REGORGPROVINCE") + private String REGORGPROVINCE; + /** + * 所在城市 + */ + @ApiModelProperty("所在城市") + @TableField(value = "REGORGCITY") + private String REGORGCITY; + /** + * 所在区/县 + */ + @ApiModelProperty("所在区/县") + @TableField(value = "REGORGDISTRICT") + private String REGORGDISTRICT; + /** + * 注册资本币种 + */ + @ApiModelProperty("注册资本币种") + @TableField(value = "REGCAPCUR") + private String REGCAPCUR; + /** + * 吊销日期 + */ + @ApiModelProperty("吊销日期") + @TableField(value = "REVDATE") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private Date REVDATE; + /** + * 注销日期 + */ + @ApiModelProperty("注销日期") + @TableField(value = "CANDATE") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private Date CANDATE; + /** + * 经营业务范围 + */ + @ApiModelProperty("经营业务范围") + @TableField(value = "ZSOPSCOPE") + private String ZSOPSCOPE; + /** + * 曾用名 + */ + @ApiModelProperty("曾用名") + @TableField(value = "ENTNAME_OLD") + private String ENTNAME_OLD; + /** + * 核准日期 + */ + @ApiModelProperty("核准日期") + @TableField(value = "APPRDATE") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private Date APPRDATE; + /** + * 注销原因 + */ + @ApiModelProperty("注销原因") + @TableField(value = "CEICANCELREASON") + private String CEICANCELREASON; + /** + * 吊销原因 + */ + @ApiModelProperty("吊销原因") + @TableField(value = "CEIREVOKEREASON") + private String CEIREVOKEREASON; + /** + * 实缴资本 + */ + @ApiModelProperty("实缴资本") + @TableField(value = "CEIREALCAPITAL") + private String CEIREALCAPITAL; + /** + * 英文名称 + */ + @ApiModelProperty("英文名称") + @TableField(value = "CEIENNAME") + private String CEIENNAME; + /** + * 上市代码 + */ + @ApiModelProperty("上市代码") + @TableField(value = "CEILISTCODE") + private String CEILISTCODE; + /** + * 一级行业编码 + */ + @ApiModelProperty("一级行业编码") + @TableField(value = "CEICATEGORYCODE1") + private String CEICATEGORYCODE1; + /** + * 一级行业名称 + */ + @ApiModelProperty("一级行业名称") + @TableField(value = "CEICATEGORYNAME1") + private String CEICATEGORYNAME1; + /** + * 二级行业编码 + */ + @ApiModelProperty("二级行业编码") + @TableField(value = "CEICATEGORYCODE2") + private String CEICATEGORYCODE2; + /** + * 二级行业名称 + */ + @ApiModelProperty("二级行业名称") + @TableField(value = "CEICATEGORYNAME2") + private String CEICATEGORYNAME2; + /** + * 三级行业编码 + */ + @ApiModelProperty("三级行业编码") + @TableField(value = "CEICATEGORYCODE3") + private String CEICATEGORYCODE3; + /** + * 三级行业名称 + */ + @ApiModelProperty("三级行业名称") + @TableField(value = "CEICATEGORYNAME3") + private String CEICATEGORYNAME3; + /** + * 地址 + */ + @ApiModelProperty("地址") + @TableField(value = "DOM") + private String DOM; + + +} diff --git a/src/main/java/com/fkzy/warn/model/LawCase.java b/src/main/java/com/fkzy/warn/model/LawCase.java index 0a3579f..1e3582f 100644 --- a/src/main/java/com/fkzy/warn/model/LawCase.java +++ b/src/main/java/com/fkzy/warn/model/LawCase.java @@ -1,12 +1,16 @@ package com.fkzy.warn.model; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.Date; +import java.util.List; /** * 八类案件 @@ -16,248 +20,354 @@ import java.math.BigDecimal; */ @Data @TableName("t_law_case") -public class LawCase extends BaseField{ +public class LawCase extends BaseField { /** - * 授权书id + * 案件标识 */ @ApiModelProperty("案件标识") @TableId(value = "n_ajbs", type = IdType.INPUT) - private String n_ajbs; + private String nAjbs; + /** * 案件唯一 ID */ @ApiModelProperty("案件唯一 ID") - private String c_id; + @TableField(value = "c_id") + private String cId; + /** - * 统一社会信用代码 + * CRC 值 */ @ApiModelProperty("CRC 值") - private String n_crc; + @TableField(value = "n_crc") + private String nCrc; + /** - * 企业法人 + * 案件类型 */ @ApiModelProperty("案件类型") - private String n_ajlx; + @TableField(value = "n_ajlx") + private String nAjlx; + /** - * 地址 + * 案号 */ @ApiModelProperty("案号") - private String c_ah; + @TableField(value = "c_ah") + private String cAh; + /** - * 授权书id + * 原审案号 */ @ApiModelProperty("原审案号") - private String c_ah_ys; + @TableField(value = "c_ah_ys") + private String cAhYs; + /** - * 授权书id + * 后续案号 */ @ApiModelProperty("后续案号") - private String c_ah_hx; + @TableField(value = "c_ah_hx") + private String cAhHx; /** - * 授权书id + * 经办法院 */ @ApiModelProperty("经办法院") - private String n_jbfy; + @TableField(value = "n_jbfy") + private String nJbfy; + /** - * 授权书id + * 法院所属层级 + * + * 最高人民法院 + * 高级人民法院 + * 中级人民法院 + * 基层法院 */ @ApiModelProperty("法院所属层级") - private String n_jbfy_cj; + @TableField(value = "n_jbfy_cj") + private String nJbfyCj; + /** - * 授权书id + * 审理程序 */ @ApiModelProperty("审理程序") - private String n_slcx; + @TableField(value = "n_slcx") + private String nSlcx; + /** - * 授权书id + * 所属地域 */ @ApiModelProperty("所属地域") - private String c_ssdy; + @TableField(value = "c_ssdy") + private String cSsdy; + /** - * 授权书id + * 案件进展阶段 未结案 已结案 */ @ApiModelProperty("案件进展阶段") - private String n_ajjzjd; + @TableField(value = "n_ajjzjd") + private String nAjjzjd; + /** - * 授权书id + * 立案时间 */ @ApiModelProperty("立案时间") - private String d_larq; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @TableField(value = "d_larq") + private Date dLarq; + + /** + * 立案案由 + */ + @ApiModelProperty("立案案由") + @TableField(value = "n_laay") + private String nLaay; + /** - * 授权书id + * 立案案由详细 */ @ApiModelProperty("立案案由详细") - private String n_laay_tree; + @TableField(value = "n_laay_tree") + private String nLaayTree; + /** - * 授权书id + * 起诉标的金额等级 */ @ApiModelProperty("起诉标的金额等级") - private String n_qsbdje_level; + @TableField(value = "n_qsbdje_level") + private String nQsbdjeLevel; + /** - * 授权书id + * 起诉标的金额 */ @ApiModelProperty("起诉标的金额") - private BigDecimal n_qsbdje; + @TableField(value = "n_qsbdje") + private BigDecimal nQsbdje; + /** - * 授权书id + * 审理方式信息 */ @ApiModelProperty("审理方式信息") - private String c_slfsxx; + @TableField(value = "c_slfsxx") + private String cSlfsxx; + /** - * 授权书id + * 结案时间 */ @ApiModelProperty("结案时间") - private String d_jarq; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @TableField(value = "d_jarq") + private Date dJarq; + /** - * 授权书id + * 结案案由 */ @ApiModelProperty("结案案由") - private String n_jaay; + @TableField(value = "n_jaay") + private String nJaay; + /** - * 授权书id + * 结案案由详细 */ @ApiModelProperty("结案案由详细") - private String n_jaay_tree; + @TableField(value = "n_jaay_tree") + private String nJaayTree; + /** - * 授权书id + * 结案标的金额等级 */ @ApiModelProperty("结案标的金额等级") - private String n_jabdje_level; + @TableField(value = "n_jabdje_level") + private String nJabdjeLevel; + /** - * 授权书id + * 结案标的金额 */ @ApiModelProperty("结案标的金额") - private BigDecimal n_jabdje; + @TableField(value = "n_jabdje") + private BigDecimal nJabdje; + /** - * 授权书id + * 结案方式 */ @ApiModelProperty("结案方式") - private String n_jafs; + @TableField(value = "n_jafs") + private String nJafs; + /** - * 授权书id + * 胜诉估计 */ @ApiModelProperty("胜诉估计") - private String n_pj_victory; + @TableField(value = "n_pj_victory") + private String nPjVictory; + /** - * 授权书id + * 诉讼地位 */ @ApiModelProperty("诉讼地位") - private String n_ssdw; + @TableField(value = "n_ssdw") + private String nSsdw; + /** - * 授权书id + * 一审诉讼地位 */ @ApiModelProperty("一审诉讼地位") - private String n_ssdw_ys; + @TableField(value = "n_ssdw_ys") + private String nSsdwYs; + /** - * 授权书id + * 公开文书 ID */ @ApiModelProperty("公开文书 ID") - private String c_gkws_id; + @TableField(value = "c_gkws_id") + private String cGkwsId; + /** - * 授权书id + * 相关案件号 */ @ApiModelProperty("相关案件号") - private String c_gkws_glah; + @TableField(value = "c_gkws_glah") + private String cGkwsGlah; + /** - * 授权书id + * 当事人段落 */ @ApiModelProperty("当事人段落") - private String c_gkws_dsr; + @TableField(value = "c_gkws_dsr") + private String cGkwsDsr; + /** - * 授权书id + * 判决结果段落 */ @ApiModelProperty("判决结果段落") - private String c_gkws_pjjg; + @TableField(value = "c_gkws_pjjg") + private String cGkwsPjjg; + //**********刑事案件 /** - * 授权书id + * 犯罪金额等级 */ @ApiModelProperty("犯罪金额等级") - private String n_fzje_level; + @TableField(value = "n_fzje_level") + private String nFzjeLevel; + /** - * 授权书id + * 犯罪金额 */ @ApiModelProperty("犯罪金额") - private BigDecimal n_fzje; + @TableField(value = "n_fzje") + private BigDecimal nFzje; + /** - * 授权书id + * 被请求赔偿金额等级 */ @ApiModelProperty("被请求赔偿金额等级") - private String n_bqqpcje_level; + @TableField(value = "n_bqqpcje_level") + private String nBqqpcjeLevel; + /** - * 授权书id + * 被请求赔偿金额 */ @ApiModelProperty("被请求赔偿金额") - private BigDecimal n_bqqpcje; + @TableField(value = "n_bqqpcje") + private BigDecimal nBqqpcje; + /** - * 授权书id + * 定罪罪名 */ @ApiModelProperty("定罪罪名") - private String n_dzzm; + @TableField(value = "n_dzzm") + private String nDzzm; + /** - * 授权书id + * 定罪罪名详细 */ @ApiModelProperty("定罪罪名详细") - private String n_dzzm_tree; + @TableField(value = "n_dzzm_tree") + private String nDzzmTree; + /** - * 授权书id + * 判处结果 */ @ApiModelProperty("判处结果") - private String n_pcjg; + @TableField(value = "n_pcjg") + private String nPcjg; + /** - * 授权书id + * 财产刑执行金额等级 */ @ApiModelProperty("财产刑执行金额等级") - private String n_ccxzxje_level; + @TableField(value = "n_ccxzxje_level") + private String nCcxzxjeLevel; + /** - * 授权书id + * 财产刑执行金额 */ @ApiModelProperty("财产刑执行金额") - private BigDecimal n_ccxzxje; + @TableField(value = "n_ccxzxje") + private BigDecimal nCcxzxje; + /** - * 授权书id + * 判处赔偿金额等级 */ @ApiModelProperty("判处赔偿金额等级") - private String n_pcpcje_level; + @TableField(value = "n_pcpcje_level") + private String nPcpcjeLevel; + /** - * 授权书id + * 判处赔偿金额 */ @ApiModelProperty("判处赔偿金额") - private BigDecimal n_pcpcje; + @TableField(value = "n_pcpcje") + private BigDecimal nPcpcje; + //********非诉保全审查 /** - * 授权书id + * 申请保全数额等级 */ @ApiModelProperty("申请保全数额等级") - private String n_sqbqse_level; + @TableField(value = "n_sqbqse_level") + private String nSqbqseLevel; + /** - * 授权书id + * 申请保全数额 */ @ApiModelProperty("申请保全数额") - private String n_sqbqse; + @TableField(value = "n_sqbqse") + private String nSqbqse; + /** - * 授权书id + * 申请保全标的物 */ @ApiModelProperty("申请保全标的物") - private String c_sqbqbdw; + @TableField(value = "c_sqbqbdw") + private String cSqbqbdw; + //***********执行案件 /** * 申请执行标的金额 */ @ApiModelProperty("申请执行标的金额") - private String n_sqzxbdje; + @TableField(value = "n_sqzxbdje") + private BigDecimal nSqzxbdje; + /** * 实际到位金额 */ @ApiModelProperty("实际到位金额") - private BigDecimal n_sjdwje; + @TableField(value = "n_sjdwje") + private BigDecimal nSjdwje; + /** * 未执行金额 */ @ApiModelProperty("未执行金额") - private BigDecimal n_wzxje; + @TableField(value = "n_wzxje") + private BigDecimal nWzxje; + /** * 公司名称 */ @@ -269,13 +379,16 @@ public class LawCase extends BaseField{ */ @ApiModelProperty("社会信用统一代码") private String creditCode; + /** * 案件类型 */ @ApiModelProperty("案件类型") private String caseType; - - - + /** + * 当事人信息 + */ + @TableField(exist = false) + private List litigantInfoList; } diff --git a/src/main/java/com/fkzy/warn/model/LitigantInfo.java b/src/main/java/com/fkzy/warn/model/LitigantInfo.java index 4f39741..27b1790 100644 --- a/src/main/java/com/fkzy/warn/model/LitigantInfo.java +++ b/src/main/java/com/fkzy/warn/model/LitigantInfo.java @@ -15,27 +15,32 @@ import lombok.Data; @Data @TableName("t_litigant_info") public class LitigantInfo extends BaseField{ + @TableId(value = "id", type = IdType.ASSIGN_UUID) private String id; + /** * 案件标识 */ @ApiModelProperty("案件标识") - private String n_ajbs; + private String nAjbs; + /** * 名称 */ @ApiModelProperty("名称") - private String c_mc; + private String cMc; + /** * 当事人类型 */ @ApiModelProperty("当事人类型") - private String n_dsrlx; + private String nDsrlx; + /** * 诉讼地位 */ @ApiModelProperty("诉讼地位") - private String n_ssdw; + private String nSsdw; } diff --git a/src/main/java/com/fkzy/warn/model/ReportModel.java b/src/main/java/com/fkzy/warn/model/ReportModel.java new file mode 100644 index 0000000..3c476a6 --- /dev/null +++ b/src/main/java/com/fkzy/warn/model/ReportModel.java @@ -0,0 +1,89 @@ +package com.fkzy.warn.model; + +import lombok.Data; + +import java.util.List; + +/** + * @author zhangjing + * @date 2024/12/17 19:19 + * @description + */ +@Data +public class ReportModel { + /** + * 一,司法体检背景 + **/ + private String backgroundJudicial; + + /** + * 二、企业基本信息 + **/ + private EnterpriseInfo basicEnterprise; + + /** + * 四、近三月新发案件告警Text1 + **/ + private String threeMonthsText1; + + /** + * 四、近三月新发案件告警Table1 + **/ + private List threeMonthsCases; + + /** + * 四、近三月新发案件告警Text2 + **/ + private String threeMonthsText2; + /** + * 四、近三月新发案件告警Text3 + **/ + private String threeMonthsText3; + + /** + * 5.1 案件审理阶段Text1 + **/ + private String caseStageText1; + + /** + * 5.2 案件发生地域与管辖法院 + **/ + private String locationText; + + /** + * 5.3案件类型与案由Text1 + **/ + private String caseActionText1; + + + /** + * 五、近三年案件总体分析 + **/ + private List threeYearsCases; + + + /** + * 5.3案件类型与案由Text2 + **/ + private String caseActionText2; + /** + * 5.4 涉案金额 + **/ + private String amountInvolvedText; + /** + * 5.5 诉讼地位 + **/ + private String litigationStatusText; + /** + * 6.2 重大法律纠纷案件 + **/ + private String majorCaseText; + /** + * 6.3 执行案件 + **/ + private String executionCasesText; + /** + * 6.4 高频诉讼对手 + **/ + private String highFrequencyText; +} diff --git a/src/main/java/com/fkzy/warn/service/EnterpriseInfoService.java b/src/main/java/com/fkzy/warn/service/EnterpriseInfoService.java new file mode 100644 index 0000000..7099a91 --- /dev/null +++ b/src/main/java/com/fkzy/warn/service/EnterpriseInfoService.java @@ -0,0 +1,44 @@ +package com.fkzy.warn.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.fkzy.warn.model.EnterpriseInfo; + +import java.util.List; + +/** + * @author zhangjing + * @date 2023/10/16 18:17 + * @description + */ +public interface EnterpriseInfoService extends IService { + + /** + * 保存 + * @param entity + * @return + */ + void saveModel(EnterpriseInfo entity,String ticket); + + /** + * 修改 + * @param entity + * @return + */ + void updateModel(EnterpriseInfo entity,String ticket); + + /** + * 删除 + * @param ids + * @return + */ + void deleteModel(List ids); + + /** + * 工商模型保存 + * @param jsonObject + * @return + */ + void industryModelSave(JSONObject jsonObject); + +} diff --git a/src/main/java/com/fkzy/warn/service/impl/EnterpriseInfoServiceImpl.java b/src/main/java/com/fkzy/warn/service/impl/EnterpriseInfoServiceImpl.java new file mode 100644 index 0000000..baa4c83 --- /dev/null +++ b/src/main/java/com/fkzy/warn/service/impl/EnterpriseInfoServiceImpl.java @@ -0,0 +1,54 @@ +package com.fkzy.warn.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fkzy.warn.common.constants.EntityConstants; +import com.fkzy.warn.mapper.EnterpriseInfoMapper; +import com.fkzy.warn.model.EnterpriseInfo; +import com.fkzy.warn.model.LawCase; +import com.fkzy.warn.service.EnterpriseInfoService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author zhangjing + * @date 2023/10/16 18:17 + * @description + */ +@Service +public class EnterpriseInfoServiceImpl extends ServiceImpl implements + EnterpriseInfoService { + + + @Override + public void saveModel(EnterpriseInfo entity, String ticket) { + save(entity); + } + + @Override + public void updateModel(EnterpriseInfo entity,String ticket) { + this.updateById(entity); + } + + @Override + public void deleteModel(List ids) { + EnterpriseInfo entity = new EnterpriseInfo(); + entity.setIsDel(EntityConstants.DEL); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.in("id", ids); + update(entity, wrapper); + } + + @Override + public void industryModelSave(JSONObject jsonObject) { + JSONObject data = jsonObject.getJSONObject("data"); + JSONObject BASIC = data.getJSONObject("BASIC"); + EnterpriseInfo enterpriseInfo = JSON.parseObject(BASIC.toString(), EnterpriseInfo.class); + save(enterpriseInfo); + } + + +} diff --git a/src/main/java/com/fkzy/warn/service/impl/LawCaseServiceImpl.java b/src/main/java/com/fkzy/warn/service/impl/LawCaseServiceImpl.java index a9bcf59..e89d9a4 100644 --- a/src/main/java/com/fkzy/warn/service/impl/LawCaseServiceImpl.java +++ b/src/main/java/com/fkzy/warn/service/impl/LawCaseServiceImpl.java @@ -6,15 +6,13 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fkzy.warn.common.constants.EntityConstants; +import com.fkzy.warn.common.util.ReportUtil; import com.fkzy.warn.mapper.LawCaseMapper; -import com.fkzy.warn.service.DishonestInfoService; -import com.fkzy.warn.service.LawCaseService; -import com.fkzy.warn.service.LitigantInfoService; -import com.fkzy.warn.model.DishonestInfo; +import com.fkzy.warn.model.EnterpriseInfo; import com.fkzy.warn.model.LawCase; -import com.fkzy.warn.model.Limitation; import com.fkzy.warn.model.LitigantInfo; -import com.fkzy.warn.service.LimitationService; +import com.fkzy.warn.model.ReportModel; +import com.fkzy.warn.service.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -22,16 +20,7 @@ import org.springframework.stereotype.Service; import java.io.BufferedReader; import java.io.FileReader; -import java.math.BigDecimal; import java.util.*; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.BiConsumer; -import java.util.stream.Collectors; -import java.util.stream.IntStream; /** * @author zhangjing @@ -52,6 +41,9 @@ public class LawCaseServiceImpl extends ServiceImpl impl @Autowired private LitigantInfoService litigantInfoService; + @Autowired + private EnterpriseInfoService enterpriseInfoService; + @Override public void saveModel(LawCase entity, String ticket) { save(entity); @@ -73,191 +65,145 @@ public class LawCaseServiceImpl extends ServiceImpl impl /** * 近三月新发案件告警 + * * @return java.lang.String * @author zhangjing * @create 2024/12/15 **/ - private String threeMonths() { + private List threeMonthsCases() { // 获取当前日期 Date currentDate = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(currentDate); - calendar.add(Calendar.MONTH, -3); + calendar.add(Calendar.MONTH, -16); Date threeMonthsAgo = calendar.getTime(); - - // 获取近三个月的案件 + // 获取近三个月的案件 d_larq 立案日期字段 QueryWrapper query = new QueryWrapper<>(); - query.ge("d_larq", threeMonthsAgo); // 假设 d_larq 是案件日期字段 - List caseList = list(query); - - // 初始化统计数据 - int totalCases = 0; - BigDecimal totalAmount = BigDecimal.ZERO; - int plaintiffCases = 0; - BigDecimal plaintiffAmount = BigDecimal.ZERO; - int defendantCases = 0; - BigDecimal defendantAmount = BigDecimal.ZERO; - int thirdPartyCases = 0; - BigDecimal thirdPartyAmount = BigDecimal.ZERO; - - // 遍历案件列表并统计 + query.ge("d_larq", threeMonthsAgo); + List caseList = this.list(query); for (LawCase lawCase : caseList) { - totalCases++; - totalAmount = totalAmount.add(lawCase.getN_qsbdje()); // 使用 BigDecimal 的 add 方法 - QueryWrapper infoQueryWrapper = new QueryWrapper<>(); - infoQueryWrapper.eq("n_ajbs", lawCase.getN_ajbs()); - List litigantList = litigantInfoService.list(infoQueryWrapper); - - for (LitigantInfo litigantInfo : litigantList) { - if ("原告".equals(litigantInfo.getN_ssdw())) { - plaintiffCases++; - plaintiffAmount = plaintiffAmount.add(lawCase.getN_qsbdje()); - } else if ("被告".equals(litigantInfo.getN_ssdw())) { - defendantCases++; - defendantAmount = defendantAmount.add(lawCase.getN_qsbdje()); - } else if ("第三人".equals(litigantInfo.getN_ssdw())) { - thirdPartyCases++; - thirdPartyAmount = thirdPartyAmount.add(lawCase.getN_qsbdje()); - } - } + infoQueryWrapper.eq("n_ajbs", lawCase.getNAjbs()); + lawCase.setLitigantInfoList(litigantInfoService.list(infoQueryWrapper)); } - - // 构建返回字符串 - StringBuilder result = new StringBuilder(); - result.append("近三个月新发案件").append(totalCases).append("件,涉案金额").append(totalAmount).append("万元。\n"); - result.append("其中,原告案件").append(plaintiffCases).append("件,涉诉金额").append(plaintiffAmount).append("万元;\n"); - result.append("被告案件").append(defendantCases).append("件,涉诉金额").append(defendantAmount).append("万元;\n"); - result.append("第三人案件").append(thirdPartyCases).append("件,涉诉金额").append(thirdPartyAmount).append("万元。"); - - return result.toString(); + return caseList; } /** - * - * 案件审理阶段 + * 近三年案件 + * * @return java.lang.String * @author zhangjing * @create 2024/12/15 **/ - private String caseStage(String companyName){ + private List threeYearsCases() { + // 获取当前日期 + Date currentDate = new Date(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(currentDate); + calendar.add(Calendar.MONTH, -36); + Date threeMonthsAgo = calendar.getTime(); + // 获取近三个月的案件 d_larq 立案日期字段 QueryWrapper query = new QueryWrapper<>(); - query.eq("company_name",companyName); - List caseList = list(query); - // 初始化统计数据 - int totalCases = 0; - BigDecimal totalAmount = BigDecimal.ZERO; - int plaintiffCases = 0; - BigDecimal plaintiffAmount = BigDecimal.ZERO; - int defendantCases = 0; - BigDecimal defendantAmount = BigDecimal.ZERO; - int thirdPartyCases = 0; - BigDecimal thirdPartyAmount = BigDecimal.ZERO; - - int ysCases = 0; - int esCases = 0; - int zsCases = 0; - int zzsCases = 0; - int zxCases = 0; - - // 遍历案件列表并统计 + query.ge("d_larq", threeMonthsAgo); + List caseList = this.list(query); for (LawCase lawCase : caseList) { - totalCases++; - totalAmount = totalAmount.add(lawCase.getN_qsbdje()); // 使用 BigDecimal 的 add 方法 - QueryWrapper infoQueryWrapper = new QueryWrapper<>(); - infoQueryWrapper.eq("n_ajbs", lawCase.getN_ajbs()); - List litigantList = litigantInfoService.list(infoQueryWrapper); - - for (LitigantInfo litigantInfo : litigantList) { - if ("原告".equals(litigantInfo.getN_ssdw())) { - plaintiffCases++; - plaintiffAmount = plaintiffAmount.add(lawCase.getN_qsbdje()); - } else if ("被告".equals(litigantInfo.getN_ssdw())) { - defendantCases++; - defendantAmount = defendantAmount.add(lawCase.getN_qsbdje()); - } else if ("第三人".equals(litigantInfo.getN_ssdw())) { - thirdPartyCases++; - thirdPartyAmount = thirdPartyAmount.add(lawCase.getN_qsbdje()); - } - } - //n_slcx - if (lawCase.getN_slcx().equals("一审")){ - - } - + infoQueryWrapper.eq("n_ajbs", lawCase.getNAjbs()); + lawCase.setLitigantInfoList(litigantInfoService.list(infoQueryWrapper)); } + return caseList; + } - // 构建返回字符串 - StringBuilder result = new StringBuilder(); - result.append("案件总数").append(totalCases).append("件,总涉案金额").append(totalAmount).append("万元,\n"); - result.append("原告案件").append(plaintiffCases).append("件,涉诉金额").append(plaintiffAmount).append("万元;\n"); - result.append("被告案件").append(defendantCases).append("件,涉诉金额").append(defendantAmount).append("万元;\n"); - result.append("第三人案件").append(thirdPartyCases).append("件,涉诉金额").append(thirdPartyAmount).append("万元。"); + private ReportModel createReportData(){ + ReportModel reportModel = new ReportModel(); + QueryWrapper enterpriseInfoQueryWrapper = new QueryWrapper<>(); + enterpriseInfoQueryWrapper.eq("CREDITCODE", "91440300087909371X"); + EnterpriseInfo enterpriseInfo = enterpriseInfoService.getOne(enterpriseInfoQueryWrapper); + reportModel.setBackgroundJudicial(ReportUtil.backgroundJudicial(enterpriseInfo)); + reportModel.setBasicEnterprise(enterpriseInfo); + List threeMonthsCases = threeMonthsCases(); + reportModel.setThreeMonthsText1(ReportUtil.threeMonthsText1(threeMonthsCases)); + reportModel.setThreeMonthsCases(threeMonthsCases); + reportModel.setThreeMonthsText2(ReportUtil.threeMonthsText2(threeMonthsCases)); + reportModel.setThreeMonthsText3(ReportUtil.threeMonthsText3(threeMonthsCases)); + List threeYearsCases = threeYearsCases(); + reportModel.setCaseStageText1(ReportUtil.caseStageText1(threeYearsCases)); + reportModel.setLocationText(ReportUtil.locationText(threeYearsCases)); + reportModel.setCaseActionText1(ReportUtil.caseActionText1(threeYearsCases)); + reportModel.setThreeYearsCases(threeYearsCases); + reportModel.setCaseActionText2(ReportUtil.caseActionText2(threeYearsCases)); + reportModel.setLitigationStatusText(ReportUtil.litigationStatusText(threeYearsCases)); + reportModel.setMajorCaseText(ReportUtil.majorCase(threeYearsCases)); + reportModel.setHighFrequencyText(ReportUtil.highFrequencyText(threeYearsCases)); + return reportModel; + } - //案件总数1252件,总涉案金额18839002.77万元,原告案件21件,涉诉金额560.89万元;被告案件1219件,涉诉金额18838000.61万元;第三人案件12件,涉诉金额441.27万元。一审案件1054件、二审案件197件、再审案件5件、再审审查案件3件、执行案件2件。 - return ""; - } @Override public void judicialModelSave(JSONObject jsonObject) { - String filePath = "司法.txt"; - String jsonOutput = convertTextToJson(filePath); - if (jsonOutput == null) { - logger.error("转换失败,JSON 字符串为空"); - return; - } - - jsonObject = new JSONObject().parseObject(jsonOutput); - JSONArray arr = jsonObject.getJSONArray("data"); - if (arr == null || arr.isEmpty()) { - logger.error("数据数组为空"); - return; - } - - JSONObject data = arr.getJSONObject(0); - String info = data.getString("id"); - String companyName = null; - String creditCode = null; - if (info != null) { - String[] items = info.split(":"); - if (items.length == 2) { - companyName = items[0]; - creditCode = items[1]; - } - } - - // 失信 - JSONObject sx = data.getJSONObject("sx"); - JSONArray sxbzxrCurrent = sx.getJSONArray("sxbzxr_current"); - String finalCompanyName = companyName; - String finalCreditCode = creditCode; - List dishonestInfoList = JSON.parseArray(sxbzxrCurrent.toString(), DishonestInfo.class) - .stream() - .peek(p -> { - p.setCompanyName(finalCompanyName); - p.setCreditCode(finalCreditCode); - }) - .collect(Collectors.toList()); - dishonestInfoService.saveOrUpdateBatch(dishonestInfoList); + ReportModel reportModel = createReportData(); + ReportUtil.createReport(reportModel); +// String filePath = "司法.txt"; +// String filePath = "工商.txt"; +// String jsonOutput = convertTextToJson(filePath); +// if (jsonOutput == null) { +// logger.error("转换失败,JSON 字符串为空"); +// return; +// } +// jsonObject = new JSONObject().parseObject(jsonOutput); +// JSONArray arr = jsonObject.getJSONArray("data"); +// if (arr == null || arr.isEmpty()) { +// logger.error("数据数组为空"); +// return; +// } +// +// JSONObject data = arr.getJSONObject(0); +// String info = data.getString("id"); +// String companyName = null; +// String creditCode = null; +// if (info != null) { +// String[] items = info.split(":"); +// if (items.length == 2) { +// companyName = items[0]; +// creditCode = items[1]; +// } +// } +// +// // 失信 +// JSONObject sx = data.getJSONObject("sx"); +// JSONArray sxbzxrCurrent = sx.getJSONArray("sxbzxr_current"); +// String finalCompanyName = companyName; +// String finalCreditCode = creditCode; +// List dishonestInfoList = JSON.parseArray(sxbzxrCurrent.toString(), DishonestInfo.class) +// .stream() +// .peek(p -> { +// p.setCompanyName(finalCompanyName); +// p.setCreditCode(finalCreditCode); +// }) +// .collect(Collectors.toList()); +// dishonestInfoService.saveOrUpdateBatch(dishonestInfoList); +// +// // 八类案件 +// JSONObject detail = data.getJSONObject("detail"); +// setCases(detail, companyName, creditCode); +// +// // 限高 +// JSONObject xg = data.getJSONObject("xg"); +// JSONArray xgbzxrCurrent = xg.getJSONArray("xgbzxr_current"); +// +// List limitationList = JSON.parseArray(xgbzxrCurrent.toString(), Limitation.class) +// .stream() +// .peek(p -> { +// p.setCompanyName(finalCompanyName); +// p.setCreditCode(finalCreditCode); +// }) +// .collect(Collectors.toList()); +// limitationService.saveOrUpdateBatch(limitationList); + } - // 八类案件 - JSONObject detail = data.getJSONObject("detail"); - setCases(detail, companyName, creditCode); - // 限高 - JSONObject xg = data.getJSONObject("xg"); - JSONArray xgbzxrCurrent = xg.getJSONArray("xgbzxr_current"); - List limitationList = JSON.parseArray(xgbzxrCurrent.toString(), Limitation.class) - .stream() - .peek(p -> { - p.setCompanyName(finalCompanyName); - p.setCreditCode(finalCreditCode); - }) - .collect(Collectors.toList()); - limitationService.saveOrUpdateBatch(limitationList); - } private void setCases(JSONObject detail, String companyName, String creditCode) { List> entries = Arrays.asList( @@ -268,8 +214,7 @@ public class LawCaseServiceImpl extends ServiceImpl impl new AbstractMap.SimpleEntry<>("implement", detail.getJSONObject("implement").getJSONArray("cases")), new AbstractMap.SimpleEntry<>("bankrupt", detail.getJSONObject("bankrupt").getJSONArray("cases")), new AbstractMap.SimpleEntry<>("jurisdict", detail.getJSONObject("jurisdict").getJSONArray("cases")), - new AbstractMap.SimpleEntry<>("compensate", detail.getJSONObject("compensate").getJSONArray("cases")) - ); + new AbstractMap.SimpleEntry<>("compensate", detail.getJSONObject("compensate").getJSONArray("cases"))); entries.forEach(entry -> saveCases(entry.getValue(), entry.getKey(), companyName, creditCode)); } @@ -277,100 +222,122 @@ public class LawCaseServiceImpl extends ServiceImpl impl private void saveCases(JSONArray jsonArray, String type, String companyName, String creditCode) { List caseList = new ArrayList<>(); List litigantInfoList = new ArrayList<>(); - + List nAjbsList = new ArrayList<>(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); LawCase lawCase = JSON.parseObject(jsonObject.toString(), LawCase.class); lawCase.setCompanyName(companyName); lawCase.setCreditCode(creditCode); lawCase.setCaseType(type); - if (lawCase.getN_ajbs() != null) { + if (lawCase.getNAjbs() != null) { caseList.add(lawCase); } JSONArray cDsrxx = jsonObject.getJSONArray("c_dsrxx"); - if (cDsrxx != null && lawCase.getN_ajbs() != null) { + nAjbsList.add(lawCase.getNAjbs()); + if (cDsrxx != null && lawCase.getNAjbs() != null) { for (int j = 0; j < cDsrxx.size(); j++) { JSONObject obj = cDsrxx.getJSONObject(j); LitigantInfo litigantInfo = JSON.parseObject(obj.toString(), LitigantInfo.class); - litigantInfo.setN_ajbs(lawCase.getN_ajbs()); + litigantInfo.setNAjbs(lawCase.getNAjbs()); litigantInfoList.add(litigantInfo); } } } - if (!caseList.isEmpty()) { - saveOrUpdateCases(caseList); - } +// if (!caseList.isEmpty()) { +// saveOrUpdateCases(caseList); +// } if (!litigantInfoList.isEmpty()) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("n_ajbs", nAjbsList); + litigantInfoService.remove(queryWrapper); saveOrUpdateLitigantInfo(litigantInfoList); } } // 批量大小 - private static final int BATCH_SIZE = 500; - - - private static final int THREAD_COUNT = 3; - - public void saveOrUpdateCases(List lawCaseList) { - ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT); - AtomicInteger counter = new AtomicInteger(0); - - for (int i = 0; i < lawCaseList.size(); i += BATCH_SIZE) { - int start = i; - int end = Math.min(i + BATCH_SIZE, lawCaseList.size()); - List batch = lawCaseList.subList(start, end); - int finalCounter = counter.getAndIncrement(); - executorService.submit(() -> { - try { - this.saveOrUpdateBatch(batch, BATCH_SIZE); - } catch (Exception e) { - // 处理异常 - System.err.println("Error processing batch " + finalCounter + ": " + e.getMessage()); - } - }); - } - executorService.shutdown(); - try { - executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException("Interrupted while waiting for tasks to complete", e); + private static final int BATCH_SIZE = 20; + + + private static final int THREAD_COUNT = 1; + public void saveOrUpdateCases(List entityList) { + int batchSize=20; + int size = entityList.size(); // 总记录数 + for (int i = 0; i < size; i += batchSize) { + int toIndex = Math.min(i + batchSize, size); // 计算当前批次的结束索引 + List batch = entityList.subList(i, toIndex); // 提取当前批次的记录 + // 执行批量插入或更新操作 + this.saveOrUpdateBatch(batch); } } - - public void saveOrUpdateLitigantInfo(List litigantInfoList) { -// QueryWrapper query = new QueryWrapper(); -// query.eq("n_ajbs", litigantInfoList.get(0).getN_ajbs()); -// litigantInfoService.remove(query); - ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT); - AtomicInteger counter = new AtomicInteger(0); - - for (int i = 0; i < litigantInfoList.size(); i += BATCH_SIZE) { - int start = i; - int end = Math.min(i + BATCH_SIZE, litigantInfoList.size()); - List batch = litigantInfoList.subList(start, end); - int finalCounter = counter.getAndIncrement(); - executorService.submit(() -> { - try { - litigantInfoService.saveOrUpdateBatch(batch, BATCH_SIZE); - } catch (Exception e) { - // 处理异常 - System.err.println("Error processing batch LitigantInfo" + finalCounter + ": " + e.getMessage()); - } - }); - } - executorService.shutdown(); - try { - executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException("Interrupted while waiting for tasks to complete", e); - } +// public void saveOrUpdateCases(List lawCaseList) { +// ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT); +// AtomicInteger counter = new AtomicInteger(0); +// +// for (int i = 0; i < lawCaseList.size(); i += BATCH_SIZE) { +// int start = i; +// int end = Math.min(i + BATCH_SIZE, lawCaseList.size()); +// List batch = lawCaseList.subList(start, end); +// int finalCounter = counter.getAndIncrement(); +// executorService.submit(() -> { +// try { +// this.saveOrUpdateBatch(batch, BATCH_SIZE); +// } catch (Exception e) { +// // 处理异常 +// System.err.println("Error processing batch " + finalCounter + ": " + e.getMessage()); +// } +// }); +// } +// executorService.shutdown(); +// try { +// executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); +// } catch (InterruptedException e) { +// Thread.currentThread().interrupt(); +// throw new RuntimeException("Interrupted while waiting for tasks to complete", e); +// } +// } +public void saveOrUpdateLitigantInfo(List entityList) { + int batchSize=20; + int size = entityList.size(); // 总记录数 + for (int i = 0; i < size; i += batchSize) { + int toIndex = Math.min(i + batchSize, size); // 计算当前批次的结束索引 + List batch = entityList.subList(i, toIndex); // 提取当前批次的记录 + // 执行批量插入或更新操作 + litigantInfoService.saveOrUpdateBatch(batch); } +} +// public void saveOrUpdateLitigantInfo(List litigantInfoList) { +//// QueryWrapper query = new QueryWrapper(); +//// query.eq("n_ajbs", litigantInfoList.get(0).getN_ajbs()); +//// litigantInfoService.remove(query); +// ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT); +// AtomicInteger counter = new AtomicInteger(0); +// +// for (int i = 0; i < litigantInfoList.size(); i += BATCH_SIZE) { +// int start = i; +// int end = Math.min(i + BATCH_SIZE, litigantInfoList.size()); +// List batch = litigantInfoList.subList(start, end); +// int finalCounter = counter.getAndIncrement(); +// executorService.submit(() -> { +// try { +// litigantInfoService.saveOrUpdateBatch(batch, BATCH_SIZE); +// } catch (Exception e) { +// // 处理异常 +// System.err.println("Error processing batch LitigantInfo" + finalCounter + ": " + e.getMessage()); +// } +// }); +// } +// executorService.shutdown(); +// try { +// executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); +// } catch (InterruptedException e) { +// Thread.currentThread().interrupt(); +// throw new RuntimeException("Interrupted while waiting for tasks to complete", e); +// } +// } public String convertTextToJson(String filePath) { StringBuilder contentBuilder = new StringBuilder(); diff --git a/司法风险报告demo.docx b/司法风险报告demo.docx new file mode 100644 index 0000000..35701d4 Binary files /dev/null and b/司法风险报告demo.docx differ diff --git a/工商.txt b/工商.txt new file mode 100644 index 0000000..99c69ef --- /dev/null +++ b/工商.txt @@ -0,0 +1 @@ +{"msg":"请求成功","code":1000,"data":{"ALTER":[{"ALTDATE":"2021-05-19","ALTAF":"辛玉全(监事)","ALTBE":"孔艳华(监事)","ALTITEM":"监事信息"},{"ALTDATE":"2019-05-27","ALTAF":"韩雪","ALTBE":"李国东","ALTITEM":"成员"},{"ALTDATE":"2019-05-27","ALTAF":"","ALTBE":"","ALTITEM":"高级管理人员备案(董事、监事、经理等)"},{"ALTDATE":"2019-05-27","ALTAF":"韩雪(执行董事),韩雪(总经理)","ALTBE":"李国东(执行董事),李国东(总经理)","ALTITEM":"成员"},{"ALTDATE":"2019-05-05","ALTAF":"2019-04-23","ALTBE":"2017-09-30","ALTITEM":"章程备案"},{"ALTDATE":"2019-05-05","ALTAF":"广州市凯隆置业有限公司 5300000.0(万元)100.00%","ALTBE":"广州市凯隆置业有限公司 1000000.0(万元)100.00%","ALTITEM":"投资人(包括出资额、出资方式、出资日期、投资人名称等)"},{"ALTDATE":"2019-05-05","ALTAF":"5300000","ALTBE":"1000000","ALTITEM":"注册资本变更(注册资金、资金数额等变更)"},{"ALTDATE":"2019-05-05","ALTAF":"股东名称:广州市凯隆置业有限公司、出资额:5300000.000000、出资比例:100.000000;","ALTBE":"股东名称:广州市凯隆置业有限公司、出资额:1000000.000000、出资比例:100.000000;","ALTITEM":"投资人变更(包括出资额、出资方式、出资日期、投资人名称等)"},{"ALTDATE":"2018-06-20","ALTAF":"李国东","ALTBE":"刘玉芝","ALTITEM":"成员"},{"ALTDATE":"2018-06-20","ALTAF":"法定代表人:李国东;董事长:李国东;总经理:李国东;","ALTBE":"法定代表人:刘玉芝;董事长:刘玉芝;总经理:刘玉芝;","ALTITEM":"负责人变更(法定代表人、负责人、首席代表、合伙事务执行人等变更)"},{"ALTDATE":"2018-06-20","ALTAF":"李国东(总经理),李国东(执行董事)","ALTBE":"刘玉芝(),刘玉芝()","ALTITEM":"成员"},{"ALTDATE":"2018-06-20","ALTAF":"李国东(执行董事)","ALTBE":"刘玉芝()","ALTITEM":"董事长或执行董事成员"},{"ALTDATE":"2018-06-20","ALTAF":"总经理:李国东;执行董事:李国东;","ALTBE":":刘玉芝;:刘玉芝;","ALTITEM":"高级管理人员备案(董事、监事、经理等)"},{"ALTDATE":"2018-06-20","ALTAF":"李国东(总经理)","ALTBE":"刘玉芝()","ALTITEM":"总经理"},{"ALTDATE":"2017-09-30","ALTAF":"2017-09-30","ALTBE":"2016-04-06","ALTITEM":"章程备案"},{"ALTDATE":"2017-09-30","ALTAF":"深圳市前海深港合作区前湾一路1号A栋201室(入驻深圳市前海商务秘书有限公司)经营场所:深圳市南山区海德三道1126号卓越后海金融中心3701房","ALTBE":"深圳市前海深港合作区前湾一路1号A栋201室(入驻深圳市前海商务秘书有限公司)","ALTITEM":"地址变更(住所地址、经营场所、驻在地址等变更)"},{"ALTDATE":"2017-03-03","ALTAF":"孔艳华(监事) 刘玉芝(总经理) 刘玉芝(执行(常务)董事)","ALTBE":"赵长龙(总经理) 赵长龙(执行(常务)董事) 孔艳华(监事)","ALTITEM":"董事成员"},{"ALTDATE":"2017-03-03","ALTAF":"刘玉芝(总经理),刘玉芝(执行董事)","ALTBE":"赵长龙(总经理),赵长龙(执行董事)","ALTITEM":"成员"},{"ALTDATE":"2017-03-03","ALTAF":"刘玉芝","ALTBE":"赵长龙","ALTITEM":"成员"},{"ALTDATE":"2017-03-03","ALTAF":"刘玉芝(执行董事)","ALTBE":"赵长龙(执行董事)","ALTITEM":"董事长或执行董事成员"},{"ALTDATE":"2017-03-03","ALTAF":"总经理:刘玉芝;法定代表人:刘玉芝;董事长:刘玉芝;","ALTBE":"总经理:赵长龙;法定代表人:赵长龙;董事长:赵长龙;","ALTITEM":"负责人变更(法定代表人、负责人、首席代表、合伙事务执行人等变更)"},{"ALTDATE":"2017-03-03","ALTAF":"刘玉芝(总经理)","ALTBE":"赵长龙(总经理)","ALTITEM":"总经理"},{"ALTDATE":"2017-03-03","ALTAF":"总经理:刘玉芝;执行董事:刘玉芝;","ALTBE":"总经理:赵长龙;执行董事:赵长龙;","ALTITEM":"高级管理人员备案(董事、监事、经理等)"},{"ALTDATE":"2016-04-18","ALTAF":"91440300087909371X","ALTBE":"","ALTITEM":"其他事项备案"},{"ALTDATE":"2016-04-18","ALTAF":"恒大集团有限公司","ALTBE":"恒大企业集团有限公司","ALTITEM":"名称变更(字号名称、集团名称等)"},{"ALTDATE":"2016-04-18","ALTAF":"章程备案(包括合伙协议)","ALTBE":"章程备案(包括合伙协议)","ALTITEM":"章程备案"},{"ALTDATE":"2014-08-12","ALTAF":"1000000","ALTBE":"500000","ALTITEM":"实收资本变更"},{"ALTDATE":"2014-08-12","ALTAF":"人民币1000000.0000万元","ALTBE":"人民币500000.0000万元","ALTITEM":"实收资本"},{"ALTDATE":"2014-08-12","ALTAF":"深圳市前海深港合作区前湾一路1号A栋201室(入驻深圳市前海商务秘书有限公司)","ALTBE":"深圳市前海深港合作区前湾一路鲤鱼门街一号前海深港合作区管理局综合办公楼A栋201室(入驻深圳市前海商务秘书有限公司)","ALTITEM":"地址变更(住所地址、经营场所、驻在地址等变更)"},{"ALTDATE":"2014-08-12","ALTAF":"恒大企业集团有限公司","ALTBE":"恒大企业有限公司","ALTITEM":"名称变更(字号名称、集团名称等)"},{"ALTDATE":"2014-07-31","ALTAF":"人民币500000.0000万元","ALTBE":"人民币300000.0000万元","ALTITEM":"实收资本"},{"ALTDATE":"2014-07-31","ALTAF":"500000","ALTBE":"300000","ALTITEM":"实收资本变更"},{"ALTDATE":"2014-07-24","ALTAF":"股东名称:广州市凯隆置业有限公司、出资额:1000000.000000、出资比例:100.000000;","ALTBE":"股东名称:广州市凯隆置业有限公司、出资额:300000.000000、出资比例:100.000000;","ALTITEM":"投资人变更(包括出资额、出资方式、出资日期、投资人名称等)"},{"ALTDATE":"2014-07-24","ALTAF":"1000000","ALTBE":"300000","ALTITEM":"注册资本变更(注册资金、资金数额等变更)"},{"ALTDATE":"2014-07-24","ALTAF":"广州市凯隆置业有限公司 1000000.0(万元)100.00%","ALTBE":"广州市凯隆置业有限公司 300000.0(万元)100.00%","ALTITEM":"投资人(包括出资额、出资方式、出资日期、投资人名称等)"},{"ALTDATE":"2014-07-24","ALTAF":"名称:广州市凯隆置业有限公司,出资额:1000000,出资比例:100","ALTBE":"名称:广州市凯隆置业有限公司,出资额:300000,出资比例:100","ALTITEM":"投资人变更(包括出资额、出资方式、出资日期、投资人名称等)"},{"ALTDATE":"2014-07-24","ALTAF":"广州市凯隆置业有限公司 1000000.0000(万元) 100.0000%","ALTBE":"广州市凯隆置业有限公司 300000.0000(万元) 100.0000%","ALTITEM":"股东(投资人)"}],"PERSON":[{"PERNAME":"韩雪","POSITION":"总经理,执行董事","PERSONAMOUNT":2,"CEIREMOVEDATE":"","ENTNAME":"恒大集团有限公司","CEIINCLUDEDATE":"2019-05-27"},{"PERNAME":"辛玉全","POSITION":"监事","PERSONAMOUNT":2,"CEIREMOVEDATE":"","ENTNAME":"恒大集团有限公司","CEIINCLUDEDATE":"2021-05-19"}],"YEARREPORTBASIC":[{"ANCHEYEAR":2023,"POSTALCODE":"518000","ANCHEDATE":"2024-03-19","CEIEMPLOYEENO":"企业选择不公示","BUSST":"开业","EMAIL":"Gongshang@evergrande.com","ADDR":"广东省深圳市南山区海德三道1126号卓越后海金融中心","REGNO":"440301108648028","CREDITNO":"91440300087909371X","CEIOPERATORNAME":"","CEIMEMBERNO":"","MAINBUSIACT":"企业总部管理;房地产开发经营;房地产信息咨询服务;企业管理及咨询;投资管理;资产管理。","ENTNAME":"恒大集团有限公司","TEL":"02089182147"},{"ANCHEYEAR":2022,"POSTALCODE":"518000","ANCHEDATE":"2023-03-20","CEIEMPLOYEENO":"企业选择不公示","BUSST":"开业","EMAIL":"2903894305@qq.com","ADDR":"广东省深圳市南山区海德三道1126号卓越后海金融中心","REGNO":"440301108648028","CREDITNO":"91440300087909371X","CEIOPERATORNAME":"","CEIMEMBERNO":"","MAINBUSIACT":"企业总部管理;房地产开发经营;房地产信息咨询服务;企业管理及咨询;投资管理;资产管理。","ENTNAME":"恒大集团有限公司","TEL":"02089182147"},{"ANCHEYEAR":2021,"POSTALCODE":"518054","ANCHEDATE":"2022-04-27","CEIEMPLOYEENO":"企业选择不公示","BUSST":"开业","EMAIL":"gongshang@evergrande.com","ADDR":"广东省深圳市南山区海德三道1126号卓越后海金融中心","REGNO":"440301108648028","CREDITNO":"91440300087909371X","CEIOPERATORNAME":"","CEIMEMBERNO":"","MAINBUSIACT":"","ENTNAME":"恒大集团有限公司","TEL":"81999649"},{"ANCHEYEAR":2020,"POSTALCODE":"518054","ANCHEDATE":"2021-02-26","CEIEMPLOYEENO":"企业选择不公示","BUSST":"开业","EMAIL":"289000759@qq.com","ADDR":"广东省深圳市南山区海德三道1126号卓越后海金融中心","REGNO":"440301108648028","CREDITNO":"91440300087909371X","CEIOPERATORNAME":"","CEIMEMBERNO":"","MAINBUSIACT":"企业总部管理;房地产开发经营;房地产信息咨询服务;企业管理及咨询;投资管理;资产管理。","ENTNAME":"恒大集团有限公司","TEL":"0755-81999649"},{"ANCHEYEAR":2019,"POSTALCODE":"518054","ANCHEDATE":"2020-04-22","CEIEMPLOYEENO":"企业选择不公示","BUSST":"开业","EMAIL":"113372631@qq.com","ADDR":"广东省深圳市南山区海德三道1126号卓越后海中心37楼","REGNO":"440301108648028","CREDITNO":"91440300087909371X","CEIOPERATORNAME":"","CEIMEMBERNO":"","MAINBUSIACT":"企业总部管理","ENTNAME":"恒大集团有限公司","TEL":"13897960837"},{"ANCHEYEAR":2018,"POSTALCODE":"518000","ANCHEDATE":"2019-06-25","CEIEMPLOYEENO":"企业选择不公示","BUSST":"开业","EMAIL":"Gongshang@evergrande.com","ADDR":"深圳市前海深港合作区前湾一路1号A栋201室(入驻深圳市前海商务秘书有限公司)经营场所:深圳市南山区海德三道1126号卓越后海金融中心3701房","REGNO":"440301108648028","CREDITNO":"91440300087909371X","CEIOPERATORNAME":"","CEIMEMBERNO":"","MAINBUSIACT":"企业总部管理;房地产开发经营;房地产信息咨询服务;企业管理及咨询;投资管理;资产管理。","ENTNAME":"恒大集团有限公司","TEL":"0755-81998888"},{"ANCHEYEAR":2014,"POSTALCODE":"518000","ANCHEDATE":"2015-06-08","CEIEMPLOYEENO":"企业选择不公示","BUSST":"开业","EMAIL":"984939175@qq.com","ADDR":"深圳市前海深港合作区前湾一路1号A栋201室(入驻深圳市前海商务秘书有限公司)","REGNO":"440301108648028","CREDITNO":"91440300087909371X","CEIOPERATORNAME":"","CEIMEMBERNO":"","MAINBUSIACT":"","ENTNAME":"恒大企业集团有限公司","TEL":"0755-25565989"},{"ANCHEYEAR":2015,"POSTALCODE":"518000","ANCHEDATE":"2016-05-10","CEIEMPLOYEENO":"企业选择不公示","BUSST":"开业","EMAIL":"YanHSZ@evergrande.com","ADDR":"深圳市罗湖区红岭中路2072号建设集团5号楼","REGNO":"440301108648028","CREDITNO":"91440300087909371X","CEIOPERATORNAME":"","CEIMEMBERNO":"","MAINBUSIACT":"","ENTNAME":"恒大集团有限公司","TEL":"0755-25590214"},{"ANCHEYEAR":2016,"POSTALCODE":"","ANCHEDATE":"2017-06-14","CEIEMPLOYEENO":"企业选择不公示","BUSST":"开业","EMAIL":"","ADDR":"","REGNO":"440301108648028","CREDITNO":"91440300087909371X","CEIOPERATORNAME":"","CEIMEMBERNO":"","MAINBUSIACT":"","ENTNAME":"恒大集团有限公司","TEL":""},{"ANCHEYEAR":2017,"POSTALCODE":"518000","ANCHEDATE":"2018-06-14","CEIEMPLOYEENO":"企业选择不公示","BUSST":"开业","EMAIL":"Gongshang@evergrande.com","ADDR":"深圳市前海深港合作区前湾一路1号A栋201室(入驻深圳市前海商务秘书有限公司)经营场所:深圳市南山区海德三道1126号卓越后海金融中心3701房","REGNO":"440301108648028","CREDITNO":"91440300087909371X","CEIOPERATORNAME":"","CEIMEMBERNO":"","MAINBUSIACT":"企业总部管理;房地产开发经营;房地产信息咨询服务;企业管理及咨询;投资管理;资产管理。","ENTNAME":"恒大集团有限公司","TEL":"0755-81998888"}],"YEARREPORTSUBCAPITAL":[{"ANCHEYEAR":2023,"INV":"广州市凯隆置业有限公司","LISUBCONAM":"1000000.0","CONFORM":"货币","CONDATE":"2014-08-12"},{"ANCHEYEAR":2023,"INV":"广州市凯隆置业有限公司","LISUBCONAM":"4300000.0","CONFORM":"货币","CONDATE":"2019-05-04"},{"ANCHEYEAR":2020,"INV":"广州市凯隆置业有限公司","LISUBCONAM":"5300000.0","CONFORM":"货币","CONDATE":"2019-05-05"},{"ANCHEYEAR":2021,"INV":"广州市凯隆置业有限公司","LISUBCONAM":"5300000.0","CONFORM":"货币","CONDATE":"2019-05-04"},{"ANCHEYEAR":2019,"INV":"广州市凯隆置业有限公司","LISUBCONAM":"5300000.0","CONFORM":"货币","CONDATE":"2019-05-05"},{"ANCHEYEAR":2017,"INV":"广州市凯隆置业有限公司","LISUBCONAM":"1000000.0","CONFORM":"货币","CONDATE":"2014-07-24"},{"ANCHEYEAR":2014,"INV":"广州市凯隆置业有限公司","LISUBCONAM":"1000000.0","CONFORM":"货币","CONDATE":"2014-08-12"},{"ANCHEYEAR":2018,"INV":"广州市凯隆置业有限公司","LISUBCONAM":"1000000.0","CONFORM":"货币","CONDATE":"2014-07-24"},{"ANCHEYEAR":2016,"INV":"广州市凯隆置业有限公司","LISUBCONAM":"1000000.0","CONFORM":"货币","CONDATE":"2014-07-24"},{"ANCHEYEAR":2015,"INV":"广州市凯隆置业有限公司","LISUBCONAM":"1000000.0","CONFORM":"货币","CONDATE":"2014-07-24"}],"YEARREPORTPAIDUPCAPITAL":[{"ANCHEYEAR":2023,"INV":"广州市凯隆置业有限公司","CONFORM":"货币","LIACCONAM":"1000000.0","CONDATE":"2014-08-12"},{"ANCHEYEAR":2023,"INV":"广州市凯隆置业有限公司","CONFORM":"货币","LIACCONAM":"4300000.0","CONDATE":"2019-05-12"},{"ANCHEYEAR":2020,"INV":"广州市凯隆置业有限公司","CONFORM":"货币","LIACCONAM":"5300000.0","CONDATE":"2019-05-13"},{"ANCHEYEAR":2021,"INV":"广州市凯隆置业有限公司","CONFORM":"货币","LIACCONAM":"5300000.0","CONDATE":"2019-05-12"},{"ANCHEYEAR":2019,"INV":"广州市凯隆置业有限公司","CONFORM":"货币","LIACCONAM":"5300000.0","CONDATE":"2019-05-13"},{"ANCHEYEAR":2017,"INV":"广州市凯隆置业有限公司","CONFORM":"货币","LIACCONAM":"1000000.0","CONDATE":"2014-08-12"},{"ANCHEYEAR":2014,"INV":"广州市凯隆置业有限公司","CONFORM":"货币","LIACCONAM":"1000000.0","CONDATE":"2014-08-12"},{"ANCHEYEAR":2018,"INV":"广州市凯隆置业有限公司","CONFORM":"货币","LIACCONAM":"0","CONDATE":"2014-07-24"},{"ANCHEYEAR":2016,"INV":"广州市凯隆置业有限公司","CONFORM":"货币","LIACCONAM":"1000000.0","CONDATE":"2014-08-12"},{"ANCHEYEAR":2015,"INV":"广州市凯隆置业有限公司","CONFORM":"货币","LIACCONAM":"1000000.0","CONDATE":"2014-08-12"}],"FILIATION":[],"YEARREPORTWEBSITEINFO":[{"ANCHEYEAR":2023,"DOMAIN":"http://www.evergrande.com/","WEBSITNAME":"恒大集团","WEBTYPE":"网站"},{"ANCHEYEAR":2021,"DOMAIN":"http://www.evergrande.com/","WEBSITNAME":"恒大集团","WEBTYPE":"网站"},{"ANCHEYEAR":2020,"DOMAIN":"http://www.evergrande.com/","WEBSITNAME":"恒大集团","WEBTYPE":"网站"},{"ANCHEYEAR":2019,"DOMAIN":"http://www.evergrande.com/","WEBSITNAME":"恒大集团","WEBTYPE":"网站"},{"ANCHEYEAR":2018,"DOMAIN":"http://www.evergrande.com/","WEBSITNAME":"恒大集团","WEBTYPE":"网站"}],"ABNORMAL":[{"removeDate":"","putReason":"通过登记的住所或经营场所无法联系","putDepartment":"深圳市市场和质量监督管理委员会南山局","removeDepartment":"","removeReason":"","putDate":"2022-02-09"},{"removeDate":"2017-09-30","putReason":"通过登记的住所或者经营场所无法联系的","putDepartment":"深圳市市场监督管理局南山监管局","removeDepartment":"深圳市市场监督管理局南山监管局","removeReason":"列入经营异常名录3年内且依照《经营异常名录管理办法》第九条规定被列入经营异常名录的企业,依法办理住所或者经营场所变更登记后,申请移出","putDate":"2017-09-15"},{"removeDate":"2017-09-30","putReason":"通过登记的住所或经营场所无法联系","putDepartment":"深圳市市场和质量监督管理委员会南山局","removeDepartment":"深圳市市场和质量监督管理委员会南山局","removeReason":"已办理住所(经营场所)变更登记","putDate":"2017-09-15"}],"ASSET":[{"CEITOTALPROFITAMOUNT":"企业选择不公示","CEIREPORTYEAR":2023,"CEITOTALAMOUNT":"企业选择不公示","CEIPROFITAMOUNT":"企业选择不公示","CEITAXAMOUNT":"企业选择不公示","CEIEQUITYAMOUNT":"企业选择不公示","CEIBUSINESSINCOME":"企业选择不公示","CEIMAINBUSINESSINCOME":"企业选择不公示","CEIDEBTAMOUNT":"企业选择不公示"},{"CEITOTALPROFITAMOUNT":"企业选择不公示","CEIREPORTYEAR":2022,"CEITOTALAMOUNT":"企业选择不公示","CEIPROFITAMOUNT":"企业选择不公示","CEITAXAMOUNT":"企业选择不公示","CEIEQUITYAMOUNT":"企业选择不公示","CEIBUSINESSINCOME":"企业选择不公示","CEIMAINBUSINESSINCOME":"企业选择不公示","CEIDEBTAMOUNT":"企业选择不公示"},{"CEITOTALPROFITAMOUNT":"企业选择不公示","CEIREPORTYEAR":2021,"CEITOTALAMOUNT":"企业选择不公示","CEIPROFITAMOUNT":"企业选择不公示","CEITAXAMOUNT":"企业选择不公示","CEIEQUITYAMOUNT":"企业选择不公示","CEIBUSINESSINCOME":"企业选择不公示","CEIMAINBUSINESSINCOME":"企业选择不公示","CEIDEBTAMOUNT":"企业选择不公示"},{"CEITOTALPROFITAMOUNT":"企业选择不公示","CEIREPORTYEAR":2020,"CEITOTALAMOUNT":"企业选择不公示","CEIPROFITAMOUNT":"企业选择不公示","CEITAXAMOUNT":"企业选择不公示","CEIEQUITYAMOUNT":"企业选择不公示","CEIBUSINESSINCOME":"企业选择不公示","CEIMAINBUSINESSINCOME":"企业选择不公示","CEIDEBTAMOUNT":"企业选择不公示"},{"CEITOTALPROFITAMOUNT":"企业选择不公示","CEIREPORTYEAR":2019,"CEITOTALAMOUNT":"企业选择不公示","CEIPROFITAMOUNT":"企业选择不公示","CEITAXAMOUNT":"企业选择不公示","CEIEQUITYAMOUNT":"企业选择不公示","CEIBUSINESSINCOME":"企业选择不公示","CEIMAINBUSINESSINCOME":"企业选择不公示","CEIDEBTAMOUNT":"企业选择不公示"},{"CEITOTALPROFITAMOUNT":"企业选择不公示","CEIREPORTYEAR":2017,"CEITOTALAMOUNT":"企业选择不公示","CEIPROFITAMOUNT":"企业选择不公示","CEITAXAMOUNT":"企业选择不公示","CEIEQUITYAMOUNT":"企业选择不公示","CEIBUSINESSINCOME":"企业选择不公示","CEIMAINBUSINESSINCOME":"企业选择不公示","CEIDEBTAMOUNT":"企业选择不公示"},{"CEITOTALPROFITAMOUNT":"企业选择不公示","CEIREPORTYEAR":2014,"CEITOTALAMOUNT":"企业选择不公示","CEIPROFITAMOUNT":"企业选择不公示","CEITAXAMOUNT":"企业选择不公示","CEIEQUITYAMOUNT":"企业选择不公示","CEIBUSINESSINCOME":"企业选择不公示","CEIMAINBUSINESSINCOME":"企业选择不公示","CEIDEBTAMOUNT":"企业选择不公示"},{"CEITOTALPROFITAMOUNT":"企业选择不公示","CEIREPORTYEAR":2018,"CEITOTALAMOUNT":"企业选择不公示","CEIPROFITAMOUNT":"企业选择不公示","CEITAXAMOUNT":"企业选择不公示","CEIEQUITYAMOUNT":"企业选择不公示","CEIBUSINESSINCOME":"企业选择不公示","CEIMAINBUSINESSINCOME":"企业选择不公示","CEIDEBTAMOUNT":"企业选择不公示"},{"CEITOTALPROFITAMOUNT":"企业选择不公示","CEIREPORTYEAR":2016,"CEITOTALAMOUNT":"企业选择不公示","CEIPROFITAMOUNT":"企业选择不公示","CEITAXAMOUNT":"企业选择不公示","CEIEQUITYAMOUNT":"企业选择不公示","CEIBUSINESSINCOME":"企业选择不公示","CEIMAINBUSINESSINCOME":"企业选择不公示","CEIDEBTAMOUNT":"企业选择不公示"},{"CEITOTALPROFITAMOUNT":"企业选择不公示","CEIREPORTYEAR":2015,"CEITOTALAMOUNT":"企业选择不公示","CEIPROFITAMOUNT":"企业选择不公示","CEITAXAMOUNT":"企业选择不公示","CEIEQUITYAMOUNT":"企业选择不公示","CEIBUSINESSINCOME":"企业选择不公示","CEIMAINBUSINESSINCOME":"企业选择不公示","CEIDEBTAMOUNT":"企业选择不公示"}],"YEARREPORTALTERSTOCK":[],"BASIC":{"ENTSTATUS":"存续(在营、开业、在册)","CEICATEGORYNAME2":"批发业","CANDATE":"","CEICATEGORYNAME3":"其他批发业","REGORG":"深圳市市场监督管理局","ZSOPSCOPE":"一般经营项目是:企业总部管理;房地产开发经营;房地产信息咨询服务;企业管理及咨询;投资管理;资产管理。,许可经营项目是:","CEICATEGORYNAME1":"批发和零售业","FRNAME":"韩雪","REGORGDISTRICT":"南山区","REGNO":"440301108648028","REGORGCITY":"深圳市","CEICATEGORYCODE2":"51","CEICATEGORYCODE3":"519","APPRDATE":"2021-05-19","OPFROM":"2014-01-08","CEIREALCAPITAL":"5300000.000000万人民币","DOM":"深圳市前海深港合作区前湾一路1号A栋201室(入驻深圳市前海商务秘书有限公司)经营场所:深圳市南山区海德三道1126号卓越后海金融中心3701房","REGCAP":"5300000.000000万人民币","REGCAPCUR":"人民币","CREDITCODE":"91440300087909371X","REVDATE":"","CEICANCELREASON":"","CEICATEGORYCODE1":"F","ENTTYPE":"有限责任公司(法人独资)","ESDATE":"2014-01-08","CEIREVOKEREASON":"","CEIENNAME":"Evergrande Group Co., Ltd.","OPTO":"5000-01-01","CEILISTCODE":"","ENTNAME_OLD":"恒大企业有限公司,恒大企业集团有限公司","ORGCODES":"087909371","ENTNAME":"恒大集团有限公司","REGORGPROVINCE":"GD"},"YEARREPORTALTER":[],"ILLEGAL":[],"ENTINV":[{"ESDATE":"2009-08-26","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"9998498.000000万人民币","SUBCONAM":5498498,"FUNDEDRATIO":0.5499320030212402,"CREDITCODE":"913601006937132802","ENTTYPE":"其他有限责任公司","REGORG":"南昌市市场监督管理局","SOURCETYPE":0,"ENTJGNAME":"恒大集团(南昌)有限公司","NAME":"钟文彦"},{"ESDATE":"2006-04-28","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"600.000000万人民币","SUBCONAM":600,"FUNDEDRATIO":1,"CREDITCODE":"913206817876937862","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"启东市行政审批局","SOURCETYPE":0,"ENTJGNAME":"启东市怡然康复保健有限公司","NAME":"刘豪"},{"ESDATE":"2015-05-15","ENTSTATUS":"在营(开业)企业","BINVVAMOUNT":21,"REGCAP":"1000.000000万人民币","SUBCONAM":1000,"FUNDEDRATIO":1,"CREDITCODE":"91440101340184125H","ENTTYPE":"有限责任公司(法人独资)","REGORG":"广州市天河区市场监督管理局","SOURCETYPE":0,"ENTJGNAME":"广州市瑞恺投资有限公司","NAME":"陈元"},{"ESDATE":"2006-04-28","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"1000.000000万人民币","SUBCONAM":1000,"FUNDEDRATIO":1,"CREDITCODE":"91320681787693815D","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"启东市行政审批局","SOURCETYPE":0,"ENTJGNAME":"启东市立群健身俱乐部有限公司","NAME":"刘豪"},{"ESDATE":"2015-11-13","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"300000.000000万人民币","SUBCONAM":300000,"FUNDEDRATIO":1,"CREDITCODE":"91440300359316060K","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"深圳市市场监督管理局南山监管局","SOURCETYPE":0,"ENTJGNAME":"恒大互联网集团有限公司","NAME":"杜亮"},{"ESDATE":"1994-10-11","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"517144.801000万人民币","SUBCONAM":45454.5455,"FUNDEDRATIO":0.0878949984908104,"CREDITCODE":"91650000625531477N","ENTTYPE":"有限责任公司(自然人投资或控股)","REGORG":"乌鲁木齐市高新技术产业开发区(新市区)市场监督管理局","SOURCETYPE":0,"ENTJGNAME":"新疆广汇实业投资(集团)有限责任公司","NAME":"孙广信"},{"ESDATE":"2006-04-28","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"600.000000万人民币","SUBCONAM":600,"FUNDEDRATIO":1,"CREDITCODE":"91320681787693807J","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"启东市行政审批局","SOURCETYPE":0,"ENTJGNAME":"启东市金色海岸大酒店有限公司","NAME":"刘豪"},{"ESDATE":"2006-04-28","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"600.000000万人民币","SUBCONAM":600,"FUNDEDRATIO":1,"CREDITCODE":"91320681787693794W","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"启东市行政审批局","SOURCETYPE":0,"ENTJGNAME":"启东市童心游乐有限公司","NAME":"刘豪"},{"ESDATE":"2015-05-15","ENTSTATUS":"在营(开业)企业","BINVVAMOUNT":21,"REGCAP":"1000.000000万人民币","SUBCONAM":1000,"FUNDEDRATIO":1,"CREDITCODE":"91440101340170321U","ENTTYPE":"有限责任公司(法人独资)","REGORG":"广州市天河区市场监督管理局","SOURCETYPE":0,"ENTJGNAME":"广州市添淼投资有限公司","NAME":"陈元"},{"ESDATE":"2019-04-16","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"5000.000000万人民币","SUBCONAM":5000,"FUNDEDRATIO":1,"CREDITCODE":"91440300MA5FKBBK22","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"null","SOURCETYPE":0,"ENTJGNAME":"恒大深港鼎业管理有限公司","NAME":"剧凯娃"},{"ESDATE":"2018-01-31","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"10000.000000万人民币","SUBCONAM":10000,"FUNDEDRATIO":1,"CREDITCODE":"91110105MA01A6TF60","ENTTYPE":"有限责任公司(法人独资)","REGORG":"北京市朝阳区市场监督管理局","SOURCETYPE":0,"ENTJGNAME":"恒大智库有限公司","NAME":"孙婷"},{"ESDATE":"2006-04-28","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"600.000000万人民币","SUBCONAM":600,"FUNDEDRATIO":1,"CREDITCODE":"9132068178769384XT","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"启东市行政审批局","SOURCETYPE":0,"ENTJGNAME":"启东市惠口福饮食广场有限公司","NAME":"刘豪"},{"ESDATE":"2018-06-12","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"2000000.000000万人民币","SUBCONAM":2000000,"FUNDEDRATIO":1,"CREDITCODE":"91440300MA5F67BM1F","ENTTYPE":"有限责任公司(法人独资)","REGORG":"深圳市市场监督管理局","SOURCETYPE":0,"ENTJGNAME":"恒大高科技集团有限公司","NAME":"林肯秋"},{"ESDATE":"2021-07-19","ENTSTATUS":"吊销,已注销","BINVVAMOUNT":21,"REGCAP":"100.000000万人民币","SUBCONAM":100,"FUNDEDRATIO":1,"CREDITCODE":"91110113MA04D0QM74","ENTTYPE":"有限责任公司(法人独资)","REGORG":"null","SOURCETYPE":0,"ENTJGNAME":"北京丽宫影溪体育发展有限公司","NAME":"谭薇"},{"ESDATE":"2006-04-28","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"600.000000万人民币","SUBCONAM":600,"FUNDEDRATIO":1,"CREDITCODE":"913206817876938238","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"启东市行政审批局","SOURCETYPE":0,"ENTJGNAME":"启东市万仁动感影视城有限公司","NAME":"刘豪"},{"ESDATE":"2015-11-13","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"1300000.000000万人民币","SUBCONAM":1300000,"FUNDEDRATIO":1,"CREDITCODE":"91440300359300763H","ENTTYPE":"有限责任公司(法人独资)","REGORG":"840000.000000万人民币","SOURCETYPE":0,"ENTJGNAME":"恒大金融控股集团(深圳)有限公司","NAME":"韩雪"},{"ESDATE":"2017-09-22","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"100000.000000万人民币","SUBCONAM":100000,"FUNDEDRATIO":1,"CREDITCODE":"91440300MA5EQXA39P","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"3000.000000万人民币","SOURCETYPE":0,"ENTJGNAME":"恒大现代农业集团有限公司","NAME":"杨健"},{"ESDATE":"2014-07-25","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"30000.000000万人民币","SUBCONAM":30000,"FUNDEDRATIO":1,"CREDITCODE":"9144030031167861X5","ENTTYPE":"有限责任公司(法人独资)","REGORG":"福田局","SOURCETYPE":0,"ENTJGNAME":"深圳市海印投资有限公司","NAME":"洪达举"},{"ESDATE":"2015-06-25","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"5000.000000万人民币","SUBCONAM":5000,"FUNDEDRATIO":1,"CREDITCODE":"914403003428383804","ENTTYPE":"有限责任公司(法人独资)","REGORG":"深圳市市场监督管理局","SOURCETYPE":0,"ENTJGNAME":"恒大教育科技有限公司","NAME":"罗海峰"},{"ESDATE":"2018-06-15","ENTSTATUS":"吊销,未注销","BINVVAMOUNT":21,"REGCAP":"2000000.000000万人民币","SUBCONAM":2000000,"FUNDEDRATIO":1,"CREDITCODE":"91310115MA1K44FT25","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"自由贸易试验区市场监督管理局","SOURCETYPE":0,"ENTJGNAME":"恒大未来高科技集团有限公司","NAME":"阎云"},{"ESDATE":"2006-04-28","ENTSTATUS":"存续(在营、开业、在册)","BINVVAMOUNT":21,"REGCAP":"500.000000万人民币","SUBCONAM":500,"FUNDEDRATIO":1,"CREDITCODE":"913206817876938313","ENTTYPE":"有限责任公司(自然人投资或控股的法人独资)","REGORG":"启东市行政审批局","SOURCETYPE":0,"ENTJGNAME":"启东市欣晴娱乐有限公司","NAME":"刘豪"}],"SHAREHOLDER":[{"ACCONAM":"","SUBCONAM":5300000,"CEIHOLDERNUM":"","FUNDEDRATIO":1,"CREDITCODE":"91440101231241426C","SOURCETYPE":0,"SHANAME":"广州市凯隆置业有限公司","INVTYPE":"企业组织"}],"YEARREPORTSOCSEC":[{"ANCHEYEAR":2023,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"失业保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"48人"},{"ANCHEYEAR":2023,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"工伤保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"48人"},{"ANCHEYEAR":2023,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"职工基本医疗保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"48人"},{"ANCHEYEAR":2023,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"生育保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"48人"},{"ANCHEYEAR":2023,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"城镇职工基本养老保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"48人"},{"ANCHEYEAR":2022,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"失业保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"89人"},{"ANCHEYEAR":2022,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"工伤保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"89人"},{"ANCHEYEAR":2022,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"生育保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"89人"},{"ANCHEYEAR":2022,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"城镇职工基本养老保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"89人"},{"ANCHEYEAR":2022,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"职工基本医疗保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"89人"},{"ANCHEYEAR":2020,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"城镇职工基本养老保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"0人"},{"ANCHEYEAR":2020,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"失业保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"0人"},{"ANCHEYEAR":2020,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"职工基本医疗保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"0人"},{"ANCHEYEAR":2020,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"工伤保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"0人"},{"ANCHEYEAR":2020,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"生育保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"0人"},{"ANCHEYEAR":2019,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"城镇职工基本养老保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"345人"},{"ANCHEYEAR":2019,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"生育保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"346人"},{"ANCHEYEAR":2019,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"工伤保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"346人"},{"ANCHEYEAR":2019,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"职工基本医疗保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"346人"},{"ANCHEYEAR":2019,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"失业保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"346人"},{"ANCHEYEAR":2017,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"职工基本医疗保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"309人"},{"ANCHEYEAR":2017,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"生育保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"309人"},{"ANCHEYEAR":2017,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"城镇职工基本养老保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"309人"},{"ANCHEYEAR":2017,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"工伤保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"309人"},{"ANCHEYEAR":2017,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"失业保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"309人"},{"ANCHEYEAR":2018,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"职工基本医疗保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"432人"},{"ANCHEYEAR":2018,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"城镇职工基本养老保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"432人"},{"ANCHEYEAR":2018,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"生育保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"432人"},{"ANCHEYEAR":2018,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"工伤保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"432人"},{"ANCHEYEAR":2018,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"失业保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"432人"},{"ANCHEYEAR":2016,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"失业保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"0人"},{"ANCHEYEAR":2016,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"城镇职工基本养老保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"0人"},{"ANCHEYEAR":2016,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"职工基本医疗保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"0人"},{"ANCHEYEAR":2016,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"生育保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"0人"},{"ANCHEYEAR":2016,"CEIINSURANCEREALCAPITAL":"企业选择不公示","CEIINSURANCENAME":"工伤保险","CEIINSURANCEBASE":"企业选择不公示","CEIINSURANCEARREARAGE":"企业选择不公示","CEIINSURANCEAMOUNT":"0人"}]}}