diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditAdministrativeLicenseController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditAdministrativeLicenseController.java index 1310579..61b4643 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditAdministrativeLicenseController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditAdministrativeLicenseController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditAdministrativeLicense; import com.gxwebsoft.credit.param.CreditAdministrativeLicenseImportParam; import com.gxwebsoft.credit.param.CreditAdministrativeLicenseParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditAdministrativeLicenseService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,9 +24,11 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; /** * 行政许可控制器 @@ -46,6 +49,9 @@ public class CreditAdministrativeLicenseController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询行政许可") @GetMapping("/page") public ApiResult> page(CreditAdministrativeLicenseParam param) { @@ -187,6 +193,7 @@ public class CreditAdministrativeLicenseController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { ExcelImportSupport.ImportResult importResult = ExcelImportSupport.readAnySheet( @@ -229,6 +236,9 @@ public class CreditAdministrativeLicenseController extends BaseController { if (item.getCompanyId() == null && companyId != null) { item.setCompanyId(companyId); } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } if (item.getUserId() == null && currentUserId != null) { item.setUserId(currentUserId); } @@ -251,6 +261,10 @@ public class CreditAdministrativeLicenseController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -355,6 +369,8 @@ public class CreditAdministrativeLicenseController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.ADMINISTRATIVE_LICENSE, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { @@ -377,6 +393,7 @@ public class CreditAdministrativeLicenseController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "历史行政许可"); @@ -590,6 +607,8 @@ public class CreditAdministrativeLicenseController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.ADMINISTRATIVE_LICENSE, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditBankruptcyController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditBankruptcyController.java index 76be428..2ba6a4a 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditBankruptcyController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditBankruptcyController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditBankruptcy; import com.gxwebsoft.credit.param.CreditBankruptcyImportParam; import com.gxwebsoft.credit.param.CreditBankruptcyParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditBankruptcyService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,9 +24,11 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; /** * 破产重整控制器 @@ -46,6 +49,9 @@ public class CreditBankruptcyController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询破产重整") @GetMapping("/page") public ApiResult> page(CreditBankruptcyParam param) { @@ -187,6 +193,7 @@ public class CreditBankruptcyController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { ExcelImportSupport.ImportResult importResult = ExcelImportSupport.readAnySheet( @@ -224,6 +231,9 @@ public class CreditBankruptcyController extends BaseController { if (item.getCompanyId() == null && companyId != null) { item.setCompanyId(companyId); } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } if (item.getUserId() == null && currentUserId != null) { item.setUserId(currentUserId); } @@ -246,6 +256,10 @@ public class CreditBankruptcyController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -330,6 +344,8 @@ public class CreditBankruptcyController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.BANKRUPTCY, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { @@ -352,6 +368,7 @@ public class CreditBankruptcyController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "历史破产重整"); @@ -531,6 +548,8 @@ public class CreditBankruptcyController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.BANKRUPTCY, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditBranchController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditBranchController.java index dae474f..8c81cb1 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditBranchController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditBranchController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditBranch; import com.gxwebsoft.credit.param.CreditBranchImportParam; import com.gxwebsoft.credit.param.CreditBranchParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditBranchService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 分支机构控制器 @@ -45,6 +48,9 @@ public class CreditBranchController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询分支机构") @GetMapping("/page") public ApiResult> page(CreditBranchParam param) { @@ -186,6 +192,7 @@ public class CreditBranchController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { ExcelImportSupport.ImportResult importResult = ExcelImportSupport.readAnySheet( @@ -245,6 +252,10 @@ public class CreditBranchController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -329,6 +340,8 @@ public class CreditBranchController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.BRANCH, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditBreachOfTrustController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditBreachOfTrustController.java index 1ad768c..b5c40d7 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditBreachOfTrustController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditBreachOfTrustController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditBreachOfTrust; import com.gxwebsoft.credit.param.CreditBreachOfTrustImportParam; import com.gxwebsoft.credit.param.CreditBreachOfTrustParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditBreachOfTrustService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -24,9 +25,11 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.time.LocalDate; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; /** * 失信被执行人控制器 @@ -47,6 +50,9 @@ public class CreditBreachOfTrustController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询失信被执行人") @GetMapping("/page") public ApiResult> page(CreditBreachOfTrustParam param) { @@ -183,6 +189,7 @@ public class CreditBreachOfTrustController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "失信被执行人", 0); @@ -221,6 +228,9 @@ public class CreditBreachOfTrustController extends BaseController { if (item.getCompanyId() == null && companyId != null) { item.setCompanyId(companyId); } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } if (item.getUserId() == null && currentUserId != null) { item.setUserId(currentUserId); } @@ -243,6 +253,10 @@ public class CreditBreachOfTrustController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -327,6 +341,8 @@ public class CreditBreachOfTrustController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.BREACH_OF_TRUST, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { @@ -349,6 +365,7 @@ public class CreditBreachOfTrustController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "历史失信被执行人"); @@ -529,6 +546,8 @@ public class CreditBreachOfTrustController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.BREACH_OF_TRUST, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditCaseFilingController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditCaseFilingController.java index fd2b497..a384654 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditCaseFilingController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditCaseFilingController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditCaseFiling; import com.gxwebsoft.credit.param.CreditCaseFilingImportParam; import com.gxwebsoft.credit.param.CreditCaseFilingParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditCaseFilingService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 司法大数据控制器 @@ -45,6 +48,9 @@ public class CreditCaseFilingController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询司法大数据") @GetMapping("/page") public ApiResult> page(CreditCaseFilingParam param) { @@ -186,6 +192,7 @@ public class CreditCaseFilingController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "立案信息", 0); @@ -247,6 +254,10 @@ public class CreditCaseFilingController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -331,6 +342,8 @@ public class CreditCaseFilingController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.CASE_FILING, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditCompetitorController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditCompetitorController.java index 4c9f00e..9540c30 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditCompetitorController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditCompetitorController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditCompetitor; import com.gxwebsoft.credit.param.CreditCompetitorImportParam; import com.gxwebsoft.credit.param.CreditCompetitorParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditCompetitorService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 竞争对手控制器 @@ -45,6 +48,9 @@ public class CreditCompetitorController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询竞争对手") @GetMapping("/page") public ApiResult> page(CreditCompetitorParam param) { @@ -186,6 +192,7 @@ public class CreditCompetitorController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "竞争对手", 2); @@ -248,6 +255,10 @@ public class CreditCompetitorController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -332,6 +343,8 @@ public class CreditCompetitorController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.COMPETITOR, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditCourtAnnouncementController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditCourtAnnouncementController.java index cd2720d..ae19a1d 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditCourtAnnouncementController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditCourtAnnouncementController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditCourtAnnouncement; import com.gxwebsoft.credit.param.CreditCourtAnnouncementImportParam; import com.gxwebsoft.credit.param.CreditCourtAnnouncementParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditCourtAnnouncementService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 法院公告司法大数据控制器 @@ -45,6 +48,9 @@ public class CreditCourtAnnouncementController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询法院公告司法大数据") @GetMapping("/page") public ApiResult> page(CreditCourtAnnouncementParam param) { @@ -186,6 +192,7 @@ public class CreditCourtAnnouncementController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { // 兼容多 sheet 文件:优先定位“法院公告”sheet,否则默认第 0 个。 @@ -247,6 +254,10 @@ public class CreditCourtAnnouncementController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -331,6 +342,8 @@ public class CreditCourtAnnouncementController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.COURT_ANNOUNCEMENT, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditCourtSessionController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditCourtSessionController.java index 73d681e..a8d310a 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditCourtSessionController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditCourtSessionController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditCourtSession; import com.gxwebsoft.credit.param.CreditCourtSessionImportParam; import com.gxwebsoft.credit.param.CreditCourtSessionParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditCourtSessionService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,9 +24,11 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; /** * 开庭公告司法大数据控制器 @@ -46,6 +49,9 @@ public class CreditCourtSessionController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询开庭公告司法大数据") @GetMapping("/page") public ApiResult> page(CreditCourtSessionParam param) { @@ -187,6 +193,7 @@ public class CreditCourtSessionController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { // 兼容多 sheet 文件:优先定位“开庭公告”sheet,否则默认第 0 个。 @@ -226,6 +233,9 @@ public class CreditCourtSessionController extends BaseController { if (item.getCompanyId() == null && companyId != null) { item.setCompanyId(companyId); } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } if (item.getUserId() == null && currentUserId != null) { item.setUserId(currentUserId); } @@ -248,6 +258,10 @@ public class CreditCourtSessionController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -332,6 +346,8 @@ public class CreditCourtSessionController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.COURT_SESSION, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { @@ -354,6 +370,7 @@ public class CreditCourtSessionController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "历史开庭公告"); @@ -533,6 +550,8 @@ public class CreditCourtSessionController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.COURT_SESSION, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditCustomerController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditCustomerController.java index 038f1a2..5c2e4cc 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditCustomerController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditCustomerController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditCustomer; import com.gxwebsoft.credit.param.CreditCustomerImportParam; import com.gxwebsoft.credit.param.CreditCustomerParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditCustomerService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -24,8 +25,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 客户控制器 @@ -46,6 +49,9 @@ public class CreditCustomerController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询客户") @GetMapping("/page") public ApiResult> page(CreditCustomerParam param) { @@ -182,6 +188,7 @@ public class CreditCustomerController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "客户", 4); @@ -242,6 +249,10 @@ public class CreditCustomerController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -475,6 +486,8 @@ public class CreditCustomerController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.CUSTOMER, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditDeliveryNoticeController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditDeliveryNoticeController.java index 8f6e4cd..3521dae 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditDeliveryNoticeController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditDeliveryNoticeController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditDeliveryNotice; import com.gxwebsoft.credit.param.CreditDeliveryNoticeImportParam; import com.gxwebsoft.credit.param.CreditDeliveryNoticeParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditDeliveryNoticeService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 送达公告司法大数据控制器 @@ -45,6 +48,9 @@ public class CreditDeliveryNoticeController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询送达公告司法大数据") @GetMapping("/page") public ApiResult> page(CreditDeliveryNoticeParam param) { @@ -186,6 +192,7 @@ public class CreditDeliveryNoticeController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "送达公告", 0); @@ -248,6 +255,10 @@ public class CreditDeliveryNoticeController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -332,6 +343,8 @@ public class CreditDeliveryNoticeController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.DELIVERY_NOTICE, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditExternalController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditExternalController.java index 063c7ef..22c67cb 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditExternalController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditExternalController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditExternal; import com.gxwebsoft.credit.param.CreditExternalImportParam; import com.gxwebsoft.credit.param.CreditExternalParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditExternalService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 对外投资控制器 @@ -45,6 +48,9 @@ public class CreditExternalController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询对外投资") @GetMapping("/page") public ApiResult> page(CreditExternalParam param) { @@ -186,6 +192,7 @@ public class CreditExternalController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "对外投资", 0); @@ -246,6 +253,10 @@ public class CreditExternalController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -330,6 +341,8 @@ public class CreditExternalController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.EXTERNAL, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditFinalVersionController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditFinalVersionController.java index 291cd02..5c2d97b 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditFinalVersionController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditFinalVersionController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditFinalVersion; import com.gxwebsoft.credit.param.CreditFinalVersionImportParam; import com.gxwebsoft.credit.param.CreditFinalVersionParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditFinalVersionService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,9 +24,11 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; /** * 终本案件控制器 @@ -46,6 +49,9 @@ public class CreditFinalVersionController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询终本案件") @GetMapping("/page") public ApiResult> page(CreditFinalVersionParam param) { @@ -187,6 +193,7 @@ public class CreditFinalVersionController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { // 按选项卡名称读取(客户提供的文件可能不是把目标 sheet 放在第一个) @@ -226,6 +233,9 @@ public class CreditFinalVersionController extends BaseController { if (item.getCompanyId() == null && companyId != null) { item.setCompanyId(companyId); } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } if (item.getUserId() == null && currentUserId != null) { item.setUserId(currentUserId); } @@ -248,6 +258,10 @@ public class CreditFinalVersionController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -332,6 +346,8 @@ public class CreditFinalVersionController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.FINAL_VERSION, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { @@ -354,6 +370,7 @@ public class CreditFinalVersionController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "历史终本案件"); @@ -533,6 +550,8 @@ public class CreditFinalVersionController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.FINAL_VERSION, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditGqdjController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditGqdjController.java index cba7583..f2f6269 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditGqdjController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditGqdjController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditGqdj; import com.gxwebsoft.credit.param.CreditGqdjImportParam; import com.gxwebsoft.credit.param.CreditGqdjParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditGqdjService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,9 +24,11 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; /** * 股权冻结控制器 @@ -46,6 +49,9 @@ public class CreditGqdjController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询股权冻结") @GetMapping("/page") public ApiResult> page(CreditGqdjParam param) { @@ -187,6 +193,7 @@ public class CreditGqdjController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "股权冻结", 0); @@ -247,6 +254,9 @@ public class CreditGqdjController extends BaseController { if (item.getCompanyId() == null && companyId != null) { item.setCompanyId(companyId); } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } if (item.getUserId() == null && currentUserId != null) { item.setUserId(currentUserId); } @@ -269,6 +279,10 @@ public class CreditGqdjController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -353,6 +367,8 @@ public class CreditGqdjController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.GQDJ, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { @@ -375,6 +391,7 @@ public class CreditGqdjController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "历史股权冻结"); @@ -575,6 +592,8 @@ public class CreditGqdjController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.GQDJ, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditHistoricalLegalPersonController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditHistoricalLegalPersonController.java index 7848655..5097d93 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditHistoricalLegalPersonController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditHistoricalLegalPersonController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditHistoricalLegalPerson; import com.gxwebsoft.credit.param.CreditHistoricalLegalPersonImportParam; import com.gxwebsoft.credit.param.CreditHistoricalLegalPersonParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditHistoricalLegalPersonService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 历史法定代表人控制器 @@ -45,6 +48,9 @@ public class CreditHistoricalLegalPersonController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询历史法定代表人") @GetMapping("/page") public ApiResult> page(CreditHistoricalLegalPersonParam param) { @@ -186,6 +192,7 @@ public class CreditHistoricalLegalPersonController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { ExcelImportSupport.ImportResult importResult = ExcelImportSupport.readAnySheet( @@ -245,6 +252,10 @@ public class CreditHistoricalLegalPersonController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -424,6 +435,8 @@ public class CreditHistoricalLegalPersonController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.HISTORICAL_LEGAL_PERSON, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditJudgmentDebtorController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditJudgmentDebtorController.java index 97e74ae..add7f7c 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditJudgmentDebtorController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditJudgmentDebtorController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditJudgmentDebtor; import com.gxwebsoft.credit.param.CreditJudgmentDebtorImportParam; import com.gxwebsoft.credit.param.CreditJudgmentDebtorParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditJudgmentDebtorService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -30,9 +31,11 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.Locale; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -55,6 +58,9 @@ public class CreditJudgmentDebtorController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询被执行人") @GetMapping("/page") public ApiResult> page(CreditJudgmentDebtorParam param) { @@ -209,6 +215,9 @@ public class CreditJudgmentDebtorController extends BaseController { if (!outcome.anyDataRead) { return fail("未读取到数据,请确认模板表头与示例格式一致", null); } + + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.JUDGMENT_DEBTOR, outcome.touchedCompanyIds); + if (outcome.errorMessages.isEmpty()) { return success("成功导入" + outcome.successCount + "条数据", null); } @@ -243,6 +252,9 @@ public class CreditJudgmentDebtorController extends BaseController { if (!outcome.anyDataRead) { return fail("未读取到数据,请确认文件中存在“历史被执行人”选项卡且表头与示例格式一致", null); } + + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.JUDGMENT_DEBTOR, outcome.touchedCompanyIds); + if (outcome.errorMessages.isEmpty()) { return success("成功导入" + outcome.successCount + "条数据", null); } @@ -331,17 +343,20 @@ public class CreditJudgmentDebtorController extends BaseController { private final boolean anyDataRead; private final int successCount; private final List errorMessages; + private final Set touchedCompanyIds; - private ImportOutcome(boolean anyDataRead, int successCount, List errorMessages) { + private ImportOutcome(boolean anyDataRead, int successCount, List errorMessages, Set touchedCompanyIds) { this.anyDataRead = anyDataRead; this.successCount = successCount; this.errorMessages = errorMessages; + this.touchedCompanyIds = touchedCompanyIds != null ? touchedCompanyIds : new HashSet<>(); } } private ImportOutcome importFromExcel(MultipartFile excelFile, String fileLabel, Integer currentUserId, Integer currentTenantId, Integer companyId, boolean strictDebtorSheet) throws Exception { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); ExcelImportSupport.ImportResult importResult = readDebtorImport(excelFile, strictDebtorSheet); List list = importResult.getData(); @@ -350,7 +365,7 @@ public class CreditJudgmentDebtorController extends BaseController { int usedSheetIndex = importResult.getSheetIndex(); if (CollectionUtils.isEmpty(list)) { - return new ImportOutcome(false, 0, errorMessages); + return new ImportOutcome(false, 0, errorMessages, touchedCompanyIds); } Map urlByCaseNumber = ExcelImportSupport.readHyperlinksByHeaderKey(excelFile, usedSheetIndex, usedTitleRows, usedHeadRows, "案号"); @@ -383,6 +398,9 @@ public class CreditJudgmentDebtorController extends BaseController { if (item.getCompanyId() == null && companyId != null) { item.setCompanyId(companyId); } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } if (item.getUserId() == null && currentUserId != null) { item.setUserId(currentUserId); } @@ -404,6 +422,10 @@ public class CreditJudgmentDebtorController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -420,16 +442,17 @@ public class CreditJudgmentDebtorController extends BaseController { if (!chunkItems.isEmpty()) { successCount += persistImportChunk(chunkItems, chunkRowNumbers, prefix, mpBatchSize, errorMessages); } - return new ImportOutcome(true, successCount, errorMessages); + return new ImportOutcome(true, successCount, errorMessages, touchedCompanyIds); } private ImportOutcome importHistoryFromExcel(MultipartFile excelFile, String fileLabel, Integer currentUserId, Integer currentTenantId, Integer companyId) throws Exception { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); int historySheetIndex = ExcelImportSupport.findSheetIndex(excelFile, "历史被执行人"); if (historySheetIndex < 0) { - return new ImportOutcome(false, 0, errorMessages); + return new ImportOutcome(false, 0, errorMessages, touchedCompanyIds); } ExcelImportSupport.ImportResult importResult = ExcelImportSupport.readBest( @@ -446,7 +469,7 @@ public class CreditJudgmentDebtorController extends BaseController { int usedSheetIndex = importResult.getSheetIndex(); if (CollectionUtils.isEmpty(list)) { - return new ImportOutcome(false, 0, errorMessages); + return new ImportOutcome(false, 0, errorMessages, touchedCompanyIds); } Map urlByCaseNumber = ExcelImportSupport.readHyperlinksByHeaderKey(excelFile, usedSheetIndex, usedTitleRows, usedHeadRows, "案号"); @@ -512,7 +535,7 @@ public class CreditJudgmentDebtorController extends BaseController { } if (latestByCaseNumber.isEmpty()) { - return new ImportOutcome(true, 0, errorMessages); + return new ImportOutcome(true, 0, errorMessages, touchedCompanyIds); } final int chunkSize = 500; @@ -536,7 +559,7 @@ public class CreditJudgmentDebtorController extends BaseController { successCount += persistHistoryImportChunk(chunkItems, chunkRowNumbers, prefix, mpBatchSize, errorMessages); } - return new ImportOutcome(true, successCount, errorMessages); + return new ImportOutcome(true, successCount, errorMessages, touchedCompanyIds); } private int persistHistoryImportChunk(List items, @@ -708,6 +731,7 @@ public class CreditJudgmentDebtorController extends BaseController { List errorMessages = new ArrayList<>(); int successCount = 0; boolean anyDataRead = false; + Set touchedCompanyIds = new HashSet<>(); try (InputStream is = zipFile.getInputStream(); ZipInputStream zis = new ZipInputStream(is, charset)) { ZipEntry entry; @@ -730,13 +754,14 @@ public class CreditJudgmentDebtorController extends BaseController { anyDataRead = true; successCount += outcome.successCount; errorMessages.addAll(outcome.errorMessages); + touchedCompanyIds.addAll(outcome.touchedCompanyIds); } } catch (Exception e) { errorMessages.add("【" + entryFileName + "】解析失败:" + e.getMessage()); } } } - return new ImportOutcome(anyDataRead, successCount, errorMessages); + return new ImportOutcome(anyDataRead, successCount, errorMessages, touchedCompanyIds); } private ImportOutcome importHistoryFromZip(MultipartFile zipFile, Integer currentUserId, Integer currentTenantId, Integer companyId) throws Exception { @@ -751,6 +776,7 @@ public class CreditJudgmentDebtorController extends BaseController { List errorMessages = new ArrayList<>(); int successCount = 0; boolean anyDataRead = false; + Set touchedCompanyIds = new HashSet<>(); try (InputStream is = zipFile.getInputStream(); ZipInputStream zis = new ZipInputStream(is, charset)) { ZipEntry entry; @@ -773,13 +799,14 @@ public class CreditJudgmentDebtorController extends BaseController { anyDataRead = true; successCount += outcome.successCount; errorMessages.addAll(outcome.errorMessages); + touchedCompanyIds.addAll(outcome.touchedCompanyIds); } } catch (Exception e) { errorMessages.add("【" + entryFileName + "】解析失败:" + e.getMessage()); } } } - return new ImportOutcome(anyDataRead, successCount, errorMessages); + return new ImportOutcome(anyDataRead, successCount, errorMessages, touchedCompanyIds); } private static boolean isZip(MultipartFile file) { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditJudicialDocumentController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditJudicialDocumentController.java index 5f57797..34c0a4b 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditJudicialDocumentController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditJudicialDocumentController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditJudicialDocument; import com.gxwebsoft.credit.param.CreditJudicialDocumentImportParam; import com.gxwebsoft.credit.param.CreditJudicialDocumentParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditJudicialDocumentService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,9 +24,11 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; /** * 裁判文书司法大数据控制器 @@ -46,6 +49,9 @@ public class CreditJudicialDocumentController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询裁判文书司法大数据") @GetMapping("/page") public ApiResult> page(CreditJudicialDocumentParam param) { @@ -187,6 +193,7 @@ public class CreditJudicialDocumentController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { // 支持按选项卡名称导入:默认读取“裁判文书”sheet(不存在则回退到第 0 个sheet) @@ -231,6 +238,9 @@ public class CreditJudicialDocumentController extends BaseController { if (item.getCompanyId() == null && companyId != null) { item.setCompanyId(companyId); } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } if (item.getUserId() == null && currentUserId != null) { item.setUserId(currentUserId); } @@ -253,6 +263,10 @@ public class CreditJudicialDocumentController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -337,6 +351,8 @@ public class CreditJudicialDocumentController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.JUDICIAL_DOCUMENT, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { @@ -359,6 +375,7 @@ public class CreditJudicialDocumentController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "历史裁判文书"); @@ -545,6 +562,8 @@ public class CreditJudicialDocumentController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.JUDICIAL_DOCUMENT, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditJudiciaryController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditJudiciaryController.java index 6027393..51f6ffa 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditJudiciaryController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditJudiciaryController.java @@ -14,6 +14,7 @@ import com.gxwebsoft.credit.entity.CreditJudiciary; import com.gxwebsoft.credit.param.CreditJudiciaryImportParam; import com.gxwebsoft.credit.param.CreditJudiciaryParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditJudiciaryService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -27,8 +28,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 司法案件控制器 @@ -49,6 +52,9 @@ public class CreditJudiciaryController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询司法案件") @GetMapping("/page") public ApiResult> page(CreditJudiciaryParam param) { @@ -185,6 +191,7 @@ public class CreditJudiciaryController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { // 支持按选项卡名称导入:默认读取“司法案件”sheet(不存在则回退到第 0 个sheet) @@ -283,6 +290,10 @@ public class CreditJudiciaryController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -361,6 +372,8 @@ public class CreditJudiciaryController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.JUDICIARY, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditMediationController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditMediationController.java index b5088f1..6e34d5a 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditMediationController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditMediationController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditMediation; import com.gxwebsoft.credit.param.CreditMediationImportParam; import com.gxwebsoft.credit.param.CreditMediationParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditMediationService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 诉前调解司法大数据控制器 @@ -45,6 +48,9 @@ public class CreditMediationController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询诉前调解司法大数据") @GetMapping("/page") public ApiResult> page(CreditMediationParam param) { @@ -186,6 +192,7 @@ public class CreditMediationController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "诉前调解", 0); @@ -246,6 +253,10 @@ public class CreditMediationController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -330,6 +341,8 @@ public class CreditMediationController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.MEDIATION, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditNearbyCompanyController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditNearbyCompanyController.java index bc2de03..8a2ba1a 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditNearbyCompanyController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditNearbyCompanyController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditNearbyCompany; import com.gxwebsoft.credit.param.CreditNearbyCompanyImportParam; import com.gxwebsoft.credit.param.CreditNearbyCompanyParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditNearbyCompanyService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 附近企业控制器 @@ -45,6 +48,9 @@ public class CreditNearbyCompanyController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询附近企业") @GetMapping("/page") public ApiResult> page(CreditNearbyCompanyParam param) { @@ -188,6 +194,7 @@ public class CreditNearbyCompanyController extends BaseController { @RequestParam(value = "type", required = false) Integer type) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { ExcelImportSupport.ImportResult importResult = ExcelImportSupport.readAnySheet( @@ -237,6 +244,9 @@ public class CreditNearbyCompanyController extends BaseController { if (item.getCompanyId() == null && companyId != null) { item.setCompanyId(companyId); } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } if (item.getUserId() == null && currentUserId != null) { item.setUserId(currentUserId); } @@ -277,6 +287,8 @@ public class CreditNearbyCompanyController extends BaseController { successCount += persistImportChunk(chunkItems, chunkRowNumbers, companyId, parentId, type, currentTenantId, mpBatchSize, errorMessages); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.NEARBY_COMPANY, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditPatentController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditPatentController.java index 9494c30..262c43b 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditPatentController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditPatentController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditPatent; import com.gxwebsoft.credit.param.CreditPatentImportParam; import com.gxwebsoft.credit.param.CreditPatentParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditPatentService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 专利控制器 @@ -45,6 +48,9 @@ public class CreditPatentController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询专利") @GetMapping("/page") public ApiResult> page(CreditPatentParam param) { @@ -186,6 +192,7 @@ public class CreditPatentController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { ExcelImportSupport.ImportResult importResult = ExcelImportSupport.readAnySheet( @@ -250,6 +257,10 @@ public class CreditPatentController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -334,6 +345,8 @@ public class CreditPatentController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.PATENT, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditRiskRelationController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditRiskRelationController.java index 45b69c5..40e4daf 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditRiskRelationController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditRiskRelationController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditRiskRelation; import com.gxwebsoft.credit.param.CreditRiskRelationImportParam; import com.gxwebsoft.credit.param.CreditRiskRelationParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditRiskRelationService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 风险关系表控制器 @@ -45,6 +48,9 @@ public class CreditRiskRelationController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询风险关系表") @GetMapping("/page") public ApiResult> page(CreditRiskRelationParam param) { @@ -186,6 +192,7 @@ public class CreditRiskRelationController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "风险关系", 1); @@ -238,6 +245,10 @@ public class CreditRiskRelationController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -322,6 +333,8 @@ public class CreditRiskRelationController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.RISK_RELATION, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditSupplierController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditSupplierController.java index 3382bb7..071aa3c 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditSupplierController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditSupplierController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditSupplier; import com.gxwebsoft.credit.param.CreditSupplierImportParam; import com.gxwebsoft.credit.param.CreditSupplierParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditSupplierService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 供应商控制器 @@ -45,6 +48,9 @@ public class CreditSupplierController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询供应商") @GetMapping("/page") public ApiResult> page(CreditSupplierParam param) { @@ -186,6 +192,7 @@ public class CreditSupplierController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "供应商", 3); @@ -246,6 +253,10 @@ public class CreditSupplierController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -330,6 +341,8 @@ public class CreditSupplierController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.SUPPLIER, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditSuspectedRelationshipController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditSuspectedRelationshipController.java index 675df51..46da439 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditSuspectedRelationshipController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditSuspectedRelationshipController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.credit.entity.CreditSuspectedRelationship; import com.gxwebsoft.credit.param.CreditSuspectedRelationshipImportParam; import com.gxwebsoft.credit.param.CreditSuspectedRelationshipParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditSuspectedRelationshipService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +24,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 疑似关系控制器 @@ -45,6 +48,9 @@ public class CreditSuspectedRelationshipController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询疑似关系") @GetMapping("/page") public ApiResult> page(CreditSuspectedRelationshipParam param) { @@ -186,6 +192,7 @@ public class CreditSuspectedRelationshipController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { ExcelImportSupport.ImportResult importResult = ExcelImportSupport.readAnySheet( @@ -249,6 +256,10 @@ public class CreditSuspectedRelationshipController extends BaseController { continue; } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } + chunkItems.add(item); chunkRowNumbers.add(excelRowNumber); if (chunkItems.size() >= chunkSize) { @@ -455,6 +466,8 @@ public class CreditSuspectedRelationshipController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.SUSPECTED_RELATIONSHIP, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditUserController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditUserController.java index d9208cb..d5864b4 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditUserController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditUserController.java @@ -15,6 +15,7 @@ import com.gxwebsoft.credit.entity.CreditUser; import com.gxwebsoft.credit.param.CreditUserImportParam; import com.gxwebsoft.credit.param.CreditUserParam; import com.gxwebsoft.credit.service.CreditCompanyService; +import com.gxwebsoft.credit.service.CreditCompanyRecordCountService; import com.gxwebsoft.credit.service.CreditUserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -37,8 +38,10 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * 招投标信息表控制器 @@ -61,6 +64,9 @@ public class CreditUserController extends BaseController { @Resource private CreditCompanyService creditCompanyService; + @Resource + private CreditCompanyRecordCountService creditCompanyRecordCountService; + @Operation(summary = "分页查询招投标信息表") @GetMapping("/page") public ApiResult> page(CreditUserParam param) { @@ -198,6 +204,7 @@ public class CreditUserController extends BaseController { @RequestParam(value = "companyId", required = false) Integer companyId) { List errorMessages = new ArrayList<>(); int successCount = 0; + Set touchedCompanyIds = new HashSet<>(); try { int sheetIndex = ExcelImportSupport.findSheetIndex(file, "招投标", 0); @@ -240,6 +247,9 @@ public class CreditUserController extends BaseController { if (item.getCompanyId() == null && companyId != null) { item.setCompanyId(companyId); } + if (item.getCompanyId() != null && item.getCompanyId() > 0) { + touchedCompanyIds.add(item.getCompanyId()); + } // 设置默认值 if (item.getUserId() == null && currentUserId != null) { @@ -345,6 +355,8 @@ public class CreditUserController extends BaseController { ); } + creditCompanyRecordCountService.refresh(CreditCompanyRecordCountService.CountType.USER, touchedCompanyIds); + if (errorMessages.isEmpty()) { return success("成功导入" + successCount + "条数据", null); } else { diff --git a/src/main/java/com/gxwebsoft/credit/entity/CreditCompany.java b/src/main/java/com/gxwebsoft/credit/entity/CreditCompany.java index bd2dc9a..5d70194 100644 --- a/src/main/java/com/gxwebsoft/credit/entity/CreditCompany.java +++ b/src/main/java/com/gxwebsoft/credit/entity/CreditCompany.java @@ -182,6 +182,81 @@ public class CreditCompany implements Serializable { @Schema(description = "所在国家") private String country; + @Schema(description = "记录数") + private Integer creditAdministrativeLicense; + + @Schema(description = "记录数") + private Integer creditBankruptcy; + + @Schema(description = "记录数") + private Integer creditBranch; + + @Schema(description = "记录数") + private Integer creditBreachOfTrust; + + @Schema(description = "记录数") + private Integer creditCaseFiling; + + @Schema(description = "记录数") + private Integer creditCompetitor; + + @Schema(description = "记录数") + private Integer creditCourtAnnouncement; + + @Schema(description = "记录数") + private Integer creditCourtSession; + + @Schema(description = "记录数") + private Integer creditCustomer; + + @Schema(description = "记录数") + private Integer creditDeliveryNotice; + + @Schema(description = "记录数") + private Integer creditExternal; + + @Schema(description = "记录数") + private Integer creditFinalVersion; + + @Schema(description = "记录数") + private Integer creditGqdj; + + @Schema(description = "记录数") + private Integer creditHistoricalLegalPerson; + + @Schema(description = "记录数") + private Integer creditJudgmentDebtor; + + @Schema(description = "记录数") + private Integer creditJudicialDocument; + + @Schema(description = "记录数") + private Integer creditJudiciary; + + @Schema(description = "记录数") + private Integer creditMediation; + + @Schema(description = "记录数") + private Integer creditNearbyCompany; + + @Schema(description = "记录数") + private Integer creditPatent; + + @Schema(description = "记录数") + private Integer creditRiskRelation; + + @Schema(description = "记录数") + private Integer creditSupplier; + + @Schema(description = "记录数") + private Integer creditSuspectedRelationship; + + @Schema(description = "记录数") + private Integer creditUser; + + @Schema(description = "记录数") + private Integer creditXgxf; + @Schema(description = "备注") private String comments; diff --git a/src/main/java/com/gxwebsoft/credit/service/CreditCompanyRecordCountService.java b/src/main/java/com/gxwebsoft/credit/service/CreditCompanyRecordCountService.java new file mode 100644 index 0000000..0326a22 --- /dev/null +++ b/src/main/java/com/gxwebsoft/credit/service/CreditCompanyRecordCountService.java @@ -0,0 +1,122 @@ +package com.gxwebsoft.credit.service; + +import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + +/** + * 刷新 credit_company 表内的“关联记录数”字段。 + * + *

这些字段是通过统计:credit_company.id = 关联表.company_id(且 deleted=0) 得到。

+ */ +@Service +public class CreditCompanyRecordCountService { + + public enum CountType { + ADMINISTRATIVE_LICENSE("credit_administrative_license", "credit_administrative_license"), + BANKRUPTCY("credit_bankruptcy", "credit_bankruptcy"), + BRANCH("credit_branch", "credit_branch"), + BREACH_OF_TRUST("credit_breach_of_trust", "credit_breach_of_trust"), + CASE_FILING("credit_case_filing", "credit_case_filing"), + COMPETITOR("credit_competitor", "credit_competitor"), + COURT_ANNOUNCEMENT("credit_court_announcement", "credit_court_announcement"), + COURT_SESSION("credit_court_session", "credit_court_session"), + CUSTOMER("credit_customer", "credit_customer"), + DELIVERY_NOTICE("credit_delivery_notice", "credit_delivery_notice"), + EXTERNAL("credit_external", "credit_external"), + FINAL_VERSION("credit_final_version", "credit_final_version"), + GQDJ("credit_gqdj", "credit_gqdj"), + HISTORICAL_LEGAL_PERSON("credit_historical_legal_person", "credit_historical_legal_person"), + JUDGMENT_DEBTOR("credit_judgment_debtor", "credit_judgment_debtor"), + JUDICIAL_DOCUMENT("credit_judicial_document", "credit_judicial_document"), + JUDICIARY("credit_judiciary", "credit_judiciary"), + MEDIATION("credit_mediation", "credit_mediation"), + NEARBY_COMPANY("credit_nearby_company", "credit_nearby_company"), + PATENT("credit_patent", "credit_patent"), + RISK_RELATION("credit_risk_relation", "credit_risk_relation"), + SUPPLIER("credit_supplier", "credit_supplier"), + SUSPECTED_RELATIONSHIP("credit_suspected_relationship", "credit_suspected_relationship"), + USER("credit_user", "credit_user"), + XGXF("credit_xgxf", "credit_xgxf"); + + private final String companyColumn; + private final String sourceTable; + + CountType(String companyColumn, String sourceTable) { + this.companyColumn = companyColumn; + this.sourceTable = sourceTable; + } + + public String getCompanyColumn() { + return companyColumn; + } + + public String getSourceTable() { + return sourceTable; + } + } + + private final NamedParameterJdbcTemplate namedJdbc; + + public CreditCompanyRecordCountService(NamedParameterJdbcTemplate namedJdbc) { + this.namedJdbc = namedJdbc; + } + + /** + * 刷新某个“记录数”字段(只更新传入 companyIds)。 + */ + public void refresh(CountType type, Collection companyIds) { + if (type == null || CollectionUtils.isEmpty(companyIds)) { + return; + } + List ids = normalizeCompanyIds(companyIds); + if (ids.isEmpty()) { + return; + } + + // 表/字段名来自固定枚举,不允许外部传入,避免 SQL 注入。 + String sql = "" + + "UPDATE credit_company c " + + "SET " + type.getCompanyColumn() + " = (" + + " SELECT COUNT(1) " + + " FROM " + type.getSourceTable() + " t " + + " WHERE t.company_id = c.id AND t.deleted = 0" + + ") " + + "WHERE c.id IN (:ids)"; + + final int inChunkSize = 1000; + for (int i = 0; i < ids.size(); i += inChunkSize) { + List chunk = ids.subList(i, Math.min(ids.size(), i + inChunkSize)); + namedJdbc.update(sql, new MapSqlParameterSource("ids", chunk)); + } + } + + /** + * 刷新全部“记录数”字段(只更新传入 companyIds)。 + */ + public void refreshAll(Collection companyIds) { + if (CollectionUtils.isEmpty(companyIds)) { + return; + } + for (CountType type : CountType.values()) { + refresh(type, companyIds); + } + } + + private static List normalizeCompanyIds(Collection companyIds) { + Set unique = new LinkedHashSet<>(); + for (Integer id : companyIds) { + if (id != null && id > 0) { + unique.add(id); + } + } + return new ArrayList<>(unique); + } +}