| | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | int importNum = 0; |
| | | int updateNum = 0; |
| | | int errorNum = 0; |
| | | |
| | | // 创建一个固定大小的线程池 |
| | | int numberOfThreads = Runtime.getRuntime().availableProcessors(); // 使用可用处理器数量作为线程数 |
| | | ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads); |
| | | |
| | | // 创建Future列表来保存每个任务的结果 |
| | | List<Future<String>> futures = new ArrayList<>(); |
| | | |
| | | for (ImportHouseholdExcel houseHoldExcel : data) { |
| | | Callable<String> task = () -> importHouseHold(houseHoldExcel,houseService,isCovered,isTenant); |
| | | futures.add(executorService.submit(task)); |
| | | } |
| | | // 收集并打印结果 |
| | | for (Future<String> future : futures) { |
| | | try { |
| | | String result = future.get(); |
| | | switch (result){ |
| | | case "1": |
| | | importNum++; |
| | | break; |
| | | case "2": |
| | | updateNum++; |
| | | break; |
| | | case "3": |
| | | errorNum++; |
| | | break; |
| | | } |
| | | // 获取并打印每个任务的结果 |
| | | } catch (InterruptedException | ExecutionException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | // 关闭线程池 |
| | | executorService.shutdown(); |
| | | try { |
| | | if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) { |
| | | executorService.shutdownNow(); |
| | | } |
| | | } catch (InterruptedException e) { |
| | | executorService.shutdownNow(); |
| | | } |
| | | StringBuilder builder = new StringBuilder("导入完成!"); |
| | | builder.append("其中本次表格共有 ").append(totalNum).append(" 条数据,") |
| | | .append("成功导入 ").append(importNum).append(" 条数据。"); |
| | | if (updateNum > 0) { |
| | | builder.append("其中有 ").append(updateNum).append(" 条数据已存在。"); |
| | | } |
| | | if (errorNum > 0) { |
| | | builder.append("共有 ").append(errorNum).append(" 条数据由于无姓名或门牌地址编码信息未导入!"); |
| | | } |
| | | return builder.toString(); |
| | | } |
| | | |
| | | |
| | | public String importHouseHold(ImportHouseholdExcel houseHoldExcel, IHouseService houseService, Boolean isCovered,String isTenant) { |
| | | HouseholdEntity householdEntity = Objects.requireNonNull(BeanUtil.copy(houseHoldExcel, HouseholdEntity.class)); |
| | | // 判断姓名,手机号 |
| | | if (Strings.isBlank(householdEntity.getName()) |
| | | || Strings.isBlank(householdEntity.getHouseCode()) |
| | | ) { |
| | | errorNum++; |
| | | continue; |
| | | // errorNum++; |
| | | // continue; |
| | | return "3"; |
| | | } |
| | | // 查询库中是否已存在 |
| | | QueryWrapper<HouseholdEntity> wrapper = new QueryWrapper<>(); |
| | |
| | | householdEntity.setHousingRentalId(houseRentalEntity.getId()); |
| | | } else { |
| | | // 新建出租屋 |
| | | HouseRentalEntity houseRentalEntity1 = new HouseRentalEntity(); |
| | | houseRentalEntity1.setHouseCode(householdEntity.getHouseCode()); |
| | | houseRentalEntity1.setHouseStatus(1); |
| | | houseRentalEntity1.setAuditStatus(0); |
| | | houseRentalEntity1.setRentalUse(4); |
| | | houseRentalEntity1.setTenantRelationship(1); |
| | | houseRentalEntity1.setRentalTime(new Date()); |
| | | houseRentalEntity1.setDueTime(new Date()); |
| | | houseRentalEntity1.setTerminationTime(new Date()); |
| | | iHouseRentalService.save(houseRentalEntity1); |
| | | householdEntity.setHousingRentalId(houseRentalEntity1.getId()); |
| | | // errorNum++; |
| | | // continue; |
| | | HouseRentalEntity rentalEntity = new HouseRentalEntity(); |
| | | rentalEntity.setHouseCode(householdEntity.getHouseCode()); |
| | | rentalEntity.setHouseStatus(1); |
| | | rentalEntity.setAuditStatus(0); |
| | | rentalEntity.setRentalUse(4); |
| | | rentalEntity.setTenantRelationship(1); |
| | | rentalEntity.setRentalTime(new Date()); |
| | | rentalEntity.setDueTime(new Date()); |
| | | rentalEntity.setTerminationTime(new Date()); |
| | | iHouseRentalService.save(rentalEntity); |
| | | householdEntity.setHousingRentalId(rentalEntity.getId()); |
| | | } |
| | | } |
| | | |
| | | /// 是否主要联系人 |
| | | if (!Strings.isBlank(houseHoldExcel.getIsPrimaryContact())) { |
| | | householdEntity.setIsPrimaryContact(Integer.parseInt(houseHoldExcel.getIsPrimaryContact())); |
| | |
| | | if (list.size()==0){ |
| | | // 新增 |
| | | this.save(householdEntity); |
| | | importNum++; |
| | | // importNum++; |
| | | // 处理标签 |
| | | handleLabel(householdEntity,houseHoldExcel); |
| | | return "1"; |
| | | }else { |
| | | updateNum++; |
| | | // updateNum++; |
| | | if (isCovered){ |
| | | for (HouseholdEntity one : list) { |
| | | // 覆盖更新 |
| | |
| | | // 处理标签 |
| | | handleLabel(householdEntity,houseHoldExcel); |
| | | } |
| | | importNum++; |
| | | // importNum++; |
| | | return "2"; |
| | | } |
| | | } |
| | | } |
| | | StringBuilder builder = new StringBuilder("导入完成!"); |
| | | builder.append("其中本次表格共有 ").append(totalNum).append(" 条数据,") |
| | | .append("成功导入 ").append(importNum).append(" 条数据。"); |
| | | if (updateNum>0) { |
| | | builder.append("其中有 ").append(updateNum).append(" 条数据已存在。"); |
| | | } |
| | | if (errorNum>0){ |
| | | builder.append("共有 ").append(errorNum).append(" 条数据由于无姓名或门牌地址编码信息未导入!"); |
| | | } |
| | | return builder.toString(); |
| | | return "3"; |
| | | } |
| | | |
| | | /** |
| | | * 标签处理 |
| | | * |
| | | * @param householdEntity |
| | | * @param houseHoldExcel |
| | | */ |