21 changed files with 775 additions and 36 deletions
			
			
		@ -0,0 +1,120 @@ | 
				
			|||||
 | 
					package com.epmet.excel.handler; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import com.alibaba.excel.context.AnalysisContext; | 
				
			||||
 | 
					import com.alibaba.excel.read.listener.ReadListener; | 
				
			||||
 | 
					import com.epmet.commons.tools.constant.NumConstant; | 
				
			||||
 | 
					import com.epmet.commons.tools.exception.EpmetException; | 
				
			||||
 | 
					import com.epmet.commons.tools.exception.ExceptionUtils; | 
				
			||||
 | 
					import com.epmet.commons.tools.exception.ValidateException; | 
				
			||||
 | 
					import com.epmet.commons.tools.utils.ConvertUtils; | 
				
			||||
 | 
					import com.epmet.commons.tools.utils.ObjectUtil; | 
				
			||||
 | 
					import com.epmet.commons.tools.validator.ValidatorUtils; | 
				
			||||
 | 
					import com.epmet.dto.result.CommunityBuildingManagerDTO; | 
				
			||||
 | 
					import com.epmet.excel.yt.CommunityBuildingManagerImportExcelData; | 
				
			||||
 | 
					import com.epmet.service.impl.CommunityBuildingManagerServiceImpl; | 
				
			||||
 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			||||
 | 
					import org.apache.commons.collections4.CollectionUtils; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.util.ArrayList; | 
				
			||||
 | 
					import java.util.List; | 
				
			||||
 | 
					import java.util.Map; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/** | 
				
			||||
 | 
					 * @Description | 
				
			||||
 | 
					 * @Author yzm | 
				
			||||
 | 
					 * @Date 2023/5/9 16:26 | 
				
			||||
 | 
					 */ | 
				
			||||
 | 
					@Slf4j | 
				
			||||
 | 
					public class CommunityBuildingManagerImportListener implements ReadListener<CommunityBuildingManagerImportExcelData> { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // 最大条数阈值
 | 
				
			||||
 | 
					    public static final int MAX_THRESHOLD = 200; | 
				
			||||
 | 
					    private Map<String, String> gridMap; | 
				
			||||
 | 
					    private String customerId; | 
				
			||||
 | 
					    private String staffId; | 
				
			||||
 | 
					    private String agencyId; | 
				
			||||
 | 
					    private String districtId; | 
				
			||||
 | 
					    private String streetId; | 
				
			||||
 | 
					    private String rediPrex; | 
				
			||||
 | 
					    private CommunityBuildingManagerServiceImpl communityBuildingManagerService; | 
				
			||||
 | 
					    // 错误项列表
 | 
				
			||||
 | 
					    private List<CommunityBuildingManagerImportExcelData.ErrorRow> errorRows = new ArrayList<>(); | 
				
			||||
 | 
					    // 要插入的数据
 | 
				
			||||
 | 
					    private List<CommunityBuildingManagerDTO> excelDataList = new ArrayList<>(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public CommunityBuildingManagerImportListener(Map<String, String> gridMap,String customerId, String staffId, String agencyId, String districtId, String streetId, String rediPrex, CommunityBuildingManagerServiceImpl communityBuildingManagerService) { | 
				
			||||
 | 
					        this.gridMap=gridMap; | 
				
			||||
 | 
					        this.customerId = customerId; | 
				
			||||
 | 
					        this.staffId = staffId; | 
				
			||||
 | 
					        this.agencyId=agencyId; | 
				
			||||
 | 
					        this.districtId=districtId; | 
				
			||||
 | 
					        this.streetId=streetId; | 
				
			||||
 | 
					        this.rediPrex=rediPrex; | 
				
			||||
 | 
					        this.communityBuildingManagerService = communityBuildingManagerService; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @Override | 
				
			||||
 | 
					    public void invoke(CommunityBuildingManagerImportExcelData data, AnalysisContext analysisContext) { | 
				
			||||
 | 
					        try { | 
				
			||||
 | 
					            // log.warn("有数据吗?"+JSON.toJSONString(data));
 | 
				
			||||
 | 
					            // 不能为空先校验数据
 | 
				
			||||
 | 
					            ValidatorUtils.validateEntity(data); | 
				
			||||
 | 
					            // 去除空格
 | 
				
			||||
 | 
					            ObjectUtil.objectToTrim(data); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            CommunityBuildingManagerDTO communityBuildingManagerDTO = ConvertUtils.sourceToTarget(data, CommunityBuildingManagerDTO.class); | 
				
			||||
 | 
					            communityBuildingManagerDTO.setCustomerId(customerId); | 
				
			||||
 | 
					            communityBuildingManagerDTO.setCommunityId(agencyId); | 
				
			||||
 | 
					            communityBuildingManagerDTO.setType("单元长".equals(data.getTypeName()) ? NumConstant.ONE_STR : NumConstant.ZERO_STR); | 
				
			||||
 | 
					            excelDataList.add(communityBuildingManagerDTO); | 
				
			||||
 | 
					            if (excelDataList.size() == MAX_THRESHOLD) { | 
				
			||||
 | 
					                execPersist(); | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					        } catch (Exception e) { | 
				
			||||
 | 
					            String errorMsg = null; | 
				
			||||
 | 
					            if (e instanceof ValidateException) { | 
				
			||||
 | 
					                errorMsg = ((ValidateException) e).getMsg(); | 
				
			||||
 | 
					            } else if (e instanceof EpmetException) { | 
				
			||||
 | 
					                errorMsg = ((EpmetException) e).getMsg(); | 
				
			||||
 | 
					            } else { | 
				
			||||
 | 
					                errorMsg = "未知错误"; | 
				
			||||
 | 
					                log.error("【楼长单元长ic_property_management导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					            CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(data, CommunityBuildingManagerImportExcelData.ErrorRow.class); | 
				
			||||
 | 
					            errorRow.setErrorInfo(errorMsg); | 
				
			||||
 | 
					            errorRows.add(errorRow); | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @Override | 
				
			||||
 | 
					    public void doAfterAllAnalysed(AnalysisContext analysisContext) { | 
				
			||||
 | 
					        // 最后几条达不到阈值,这里必须再调用一次
 | 
				
			||||
 | 
					        execPersist(); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 执行持久化 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private void execPersist() { | 
				
			||||
 | 
					        try { | 
				
			||||
 | 
					            if (CollectionUtils.isNotEmpty(excelDataList)) { | 
				
			||||
 | 
					                communityBuildingManagerService.handleImportExcelData(gridMap,customerId,staffId,agencyId, districtId, streetId,rediPrex,excelDataList,this); | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					        } finally { | 
				
			||||
 | 
					            excelDataList.clear(); | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 获取错误行 | 
				
			||||
 | 
					     * | 
				
			||||
 | 
					     * @return | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    public List<CommunityBuildingManagerImportExcelData.ErrorRow> getErrorRows() { | 
				
			||||
 | 
					        return errorRows; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
@ -0,0 +1,116 @@ | 
				
			|||||
 | 
					package com.epmet.excel.yt; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import com.alibaba.excel.annotation.ExcelProperty; | 
				
			||||
 | 
					import com.alibaba.excel.annotation.write.style.ColumnWidth; | 
				
			||||
 | 
					import lombok.Data; | 
				
			||||
 | 
					import org.hibernate.validator.constraints.Length; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import javax.validation.constraints.NotBlank; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/** | 
				
			||||
 | 
					 * @Description | 
				
			||||
 | 
					 * @Author yzm | 
				
			||||
 | 
					 * @Date 2023/5/9 16:13 | 
				
			||||
 | 
					 */ | 
				
			||||
 | 
					@Data | 
				
			||||
 | 
					public class CommunityBuildingManagerImportExcelData { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 姓名 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    @ExcelProperty(value = "*姓名") | 
				
			||||
 | 
					    @Length(max = 50, message = "姓名最多输入50字") | 
				
			||||
 | 
					    @NotBlank(message = "姓名不能为空") | 
				
			||||
 | 
					    private String name; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 联系电话 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    @ExcelProperty(value = "*联系电话") | 
				
			||||
 | 
					    @Length(max = 50, message = "联系电话最多输入50字") | 
				
			||||
 | 
					    @NotBlank(message = "联系电话不能为空") | 
				
			||||
 | 
					    private String phone; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 身份证号 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    @ExcelProperty(value = "*身份证号") | 
				
			||||
 | 
					    @Length(max = 50, message = "身份证号最多输入50字") | 
				
			||||
 | 
					    @NotBlank(message = "身份证号不能为空") | 
				
			||||
 | 
					    private String idCard; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 类型:0楼长;1单元长 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    @ExcelProperty(value = "*类型") | 
				
			||||
 | 
					    @NotBlank(message = "类型不能为空") | 
				
			||||
 | 
					    private String typeName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @ExcelProperty(value = "*所属网格") | 
				
			||||
 | 
					    @NotBlank(message = "所属网格不能为空") | 
				
			||||
 | 
					    private String gridName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @ExcelProperty(value = "*所属小区") | 
				
			||||
 | 
					    @NotBlank(message = "所属小区不能为空") | 
				
			||||
 | 
					    private String viliageName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @ExcelProperty(value = "*楼栋") | 
				
			||||
 | 
					    @NotBlank(message = "楼栋不能为空") | 
				
			||||
 | 
					    private String buildingName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @ExcelProperty(value = "单元") | 
				
			||||
 | 
					    private String unitName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @Data | 
				
			||||
 | 
					    public static class ErrorRow { | 
				
			||||
 | 
					        /** | 
				
			||||
 | 
					         * 姓名 | 
				
			||||
 | 
					         */ | 
				
			||||
 | 
					        @ExcelProperty(value = "*姓名") | 
				
			||||
 | 
					        @ColumnWidth(20) | 
				
			||||
 | 
					        private String name; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        /** | 
				
			||||
 | 
					         * 联系电话 | 
				
			||||
 | 
					         */ | 
				
			||||
 | 
					        @ExcelProperty(value = "*联系电话") | 
				
			||||
 | 
					        @ColumnWidth(20) | 
				
			||||
 | 
					        private String phone; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        /** | 
				
			||||
 | 
					         * 身份证号 | 
				
			||||
 | 
					         */ | 
				
			||||
 | 
					        @ExcelProperty(value = "*身份证号") | 
				
			||||
 | 
					        @ColumnWidth(25) | 
				
			||||
 | 
					        private String idCard; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        /** | 
				
			||||
 | 
					         * 类型:0楼长;1单元长 | 
				
			||||
 | 
					         */ | 
				
			||||
 | 
					        @ExcelProperty(value = "*类型") | 
				
			||||
 | 
					        @ColumnWidth(15) | 
				
			||||
 | 
					        private String typeName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        @ExcelProperty(value = "*所属网格") | 
				
			||||
 | 
					        @ColumnWidth(30) | 
				
			||||
 | 
					        private String gridName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        @ExcelProperty(value = "*所属小区") | 
				
			||||
 | 
					        @ColumnWidth(30) | 
				
			||||
 | 
					        private String viliageName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        @ExcelProperty(value = "*楼栋") | 
				
			||||
 | 
					        @ColumnWidth(20) | 
				
			||||
 | 
					        private String buildingName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        @ExcelProperty(value = "单元") | 
				
			||||
 | 
					        @ColumnWidth(20) | 
				
			||||
 | 
					        private String unitName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        @ColumnWidth(60) | 
				
			||||
 | 
					        @ExcelProperty("错误信息") | 
				
			||||
 | 
					        private String errorInfo; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
								
									Binary file not shown.
								
							
						
					
								
									Binary file not shown.
								
							
						
					
								
									Binary file not shown.
								
							
						
					
								
									Binary file not shown.
								
							
						
					
					Loading…
					
					
				
		Reference in new issue