diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/HousingInformationController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/HousingInformationController.java index 02fd87af..29153f50 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/HousingInformationController.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/HousingInformationController.java @@ -20,6 +20,7 @@ package com.elink.esua.epdc.controller; import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; +import com.elink.esua.epdc.commons.tools.utils.ExcelSelectionDto; import com.elink.esua.epdc.commons.tools.utils.ExcelUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.AssertUtils; @@ -30,7 +31,9 @@ import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.constant.PopulationDictConstant; import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.form.SysPopulationSimpleDictFormDTO; +import com.elink.esua.epdc.excel.BasePopulationInformationExcel; import com.elink.esua.epdc.excel.BasePopulationInformationExportExcel; +import com.elink.esua.epdc.excel.BaseResidentInformationExcel; import com.elink.esua.epdc.excel.BaseResidentInformationExportExcel; import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.service.HousingInformationService; @@ -42,11 +45,9 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; -import java.io.InputStream; -import java.io.OutputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.net.URLEncoder; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -128,9 +129,6 @@ public class HousingInformationController { } List sysPopulationSimpleDictDTOS = listResult.getData(); for (BasePopulationInformationExportDto basePopulationInformationExportDto : basePopulationInformationExcelList) { - if(StringUtils.isBlank(basePopulationInformationExportDto.getId())){ - continue; - } String educationLevel = basePopulationInformationExportDto.getEducationLevel(); String politicsStatus = basePopulationInformationExportDto.getPoliticsStatus(); String bodyStatus = basePopulationInformationExportDto.getBodyStatus(); @@ -169,28 +167,10 @@ public class HousingInformationController { basePopulationInformationExportDto.setMotorVehicleCategory(motorVehicleCategoryEnd.substring(0,motorVehicleCategoryEnd.lastIndexOf(","))); } } - //没有户主信息的房屋,转换excel时,替换是否时会出现null,此时将对应null值替换成空字符 - basePopulationInformationExcelList.forEach(basePopulationInformationExportDto ->{ - if(StringUtils.isBlank(basePopulationInformationExportDto.getId())){ - basePopulationInformationExportDto.setResidentsSex(""); - basePopulationInformationExportDto.setMilitaryService(""); - basePopulationInformationExportDto.setReemploymentPermit(""); - basePopulationInformationExportDto.setUnemploymentRegister(""); - basePopulationInformationExportDto.setDogStatus(""); - } - }); + //根据获取的户主ID查询居住人信息 - List basePopulationInformationExcelListWithHouseHead = new ArrayList<>(); - basePopulationInformationExcelListWithHouseHead.addAll(basePopulationInformationExcelList); - //先去除没有户主的房屋 - for(Iterator car = basePopulationInformationExcelListWithHouseHead.iterator();car.hasNext();){ - BasePopulationInformationExportDto basePopulationInformationExportDto = car.next(); - if(StringUtils.isBlank(basePopulationInformationExportDto.getId())){ - car.remove(); - } - } - Map> baseMap = basePopulationInformationExcelListWithHouseHead.stream().collect(Collectors.groupingBy(BasePopulationInformationExportDto::getId)); + Map> baseMap = basePopulationInformationExcelList.stream().collect(Collectors.groupingBy(BasePopulationInformationExportDto::getId)); //获取所有的户主ID Set houseHeadIds = baseMap.keySet(); List baseResidentInformationExportDtoList = housingInformationService.selectBaseResidentInformationExcelList(houseHeadIds); @@ -234,31 +214,258 @@ public class HousingInformationController { return housingInformationService.importPopulationInfo(file,gridId); } + + /** - * @Description 导出模板 + * @Description 导出模板 * @Author songyunpeng * @Date 2020/8/27 * @Param [params, response] * @return void **/ @GetMapping("exportModule") - public void exportModule(HttpServletResponse res) throws Exception{ - //获取要下载的模板名称 - String fileName = "居民信息录入模板"; - //设置要下载的文件的名称 - res.setCharacterEncoding("UTF-8"); - res.setHeader("content-Type", "application/vnd.ms-excel"); - res.setHeader("Content-Disposition", - "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xls"); - //获取文件的路径 - InputStream input = this.getClass().getResourceAsStream("/excel/居民信息录入模板.xls"); - OutputStream out = res.getOutputStream(); - byte[] b = new byte[2048]; - int len; - while ((len = input.read(b)) != -1) { - out.write(b, 0, len); + public void exportModule(@RequestParam Map params, HttpServletResponse response) throws Exception { + List basePopulationInformationExcels = new ArrayList<>(1); + List baseResidentInformationExcels = new ArrayList<>(1); + BasePopulationInformationExcel basePopulationInformationExcel = new BasePopulationInformationExcel(); + basePopulationInformationExcel.setHouseAddress("XX小区XX号楼XX单元"); + basePopulationInformationExcel.setBuyingTime("2020-02-02"); + basePopulationInformationExcel.setHouseArea(new BigDecimal("0")); + basePopulationInformationExcel.setPropertyOwner(""); + basePopulationInformationExcel.setPropertyOwnerIdentityNo(""); + basePopulationInformationExcel.setPropertyOwnerMobile(""); + basePopulationInformationExcel.setHouseUse(""); + basePopulationInformationExcel.setTenantName(""); + basePopulationInformationExcel.setTenantPhone(""); + basePopulationInformationExcel.setTenantIdentityNo(""); + basePopulationInformationExcel.setEnterpriseName(""); + basePopulationInformationExcel.setSocialUniformCode(""); + basePopulationInformationExcel.setLegalRepresentative(""); + basePopulationInformationExcel.setEnterprisePhone(""); + basePopulationInformationExcel.setResidentsName(""); + basePopulationInformationExcel.setResidentsNation(""); + basePopulationInformationExcel.setEducationLevel(""); + basePopulationInformationExcel.setPoliticsStatus(""); + basePopulationInformationExcel.setJoinTime("2020-02-02"); + basePopulationInformationExcel.setOrganizationalRelationshipLocation(""); + basePopulationInformationExcel.setResidentsIdentityNo(""); + basePopulationInformationExcel.setResidentsPhone(""); + basePopulationInformationExcel.setBodyStatus(""); + basePopulationInformationExcel.setMaritalStatus(""); + basePopulationInformationExcel.setAccountType(""); + basePopulationInformationExcel.setMilitaryService(""); + basePopulationInformationExcel.setHouseholdRegistrationPlace(""); + basePopulationInformationExcel.setEmploymentStatus(""); + basePopulationInformationExcel.setCurrentEmployer(""); + basePopulationInformationExcel.setCurrentEmployerAddress(""); + basePopulationInformationExcel.setUnemploymentReason(""); + basePopulationInformationExcel.setReemploymentPermit(""); + basePopulationInformationExcel.setUnemploymentRegister(""); + basePopulationInformationExcel.setUnemploymentRegisterTime("2020-02-02"); + basePopulationInformationExcel.setFamilyCategory(""); + basePopulationInformationExcel.setHelpStatus(""); + basePopulationInformationExcel.setMotorVehicleNum(0); + basePopulationInformationExcel.setMotorVehicleCategory(""); + basePopulationInformationExcel.setDogStatus(""); + BaseResidentInformationExcel baseResidentInformationExcel = new BaseResidentInformationExcel(); + baseResidentInformationExcel.setResidentsIdentityNo("XX"); + baseResidentInformationExcel.setHouseHeadRelation("XX"); + baseResidentInformationExcel.setResidentsName("XX"); + baseResidentInformationExcel.setResidentsSex("男"); + baseResidentInformationExcel.setResidentsNation("汉"); + baseResidentInformationExcel.setCurrentEmployer("XX"); + baseResidentInformationExcel.setCurrentAddress("XX"); + basePopulationInformationExcels.add(basePopulationInformationExcel); + baseResidentInformationExcels.add(baseResidentInformationExcel); + List> classes = new ArrayList<>(2); + classes.add(basePopulationInformationExcel.getClass()); + classes.add(baseResidentInformationExcel.getClass()); + List sheetNames = new ArrayList<>(2); + sheetNames.add("房屋信息和户主信息"); + sheetNames.add("居民信息"); + //设置待选项 + List excelSelectionDtos = new ArrayList<>(); + //获取字典信息 + SysPopulationSimpleDictFormDTO sysPopulationSimpleDictFormDTO = new SysPopulationSimpleDictFormDTO(); + List dicTypes = new ArrayList<>(); + Collections.addAll(dicTypes, PopulationDictConstant.ACCOUNT_TYPE, PopulationDictConstant.BODY_STATUS, PopulationDictConstant.EDUCATION_LEVEL + , PopulationDictConstant.EMPLOYMENT_STATUS, PopulationDictConstant.FAMILY_CATEGORY, PopulationDictConstant.GENDER, PopulationDictConstant.HELP_STATUS, PopulationDictConstant.MARITAL_STATUS + , PopulationDictConstant.MOTOR_VEHICLE_CATEGORY, PopulationDictConstant.POLITICS_STATUS, PopulationDictConstant.UNEMPLOYMENT_REASON); + sysPopulationSimpleDictFormDTO.setDicTypes(dicTypes); + Result> listResult = adminFeignClient.listPopulationSimple(sysPopulationSimpleDictFormDTO); + if (listResult == null || !listResult.success()) { + throw new RenException("获取字典信息失败"); } - input.close(); - + List sysPopulationSimpleDictDTOS = listResult.getData(); + ExcelSelectionDto houseUse = new ExcelSelectionDto(); + houseUse.setSheetIndex(0); + houseUse.setFirstCol(7); + houseUse.setLastCol(7); + houseUse.setExcelSelections(new String[]{"自住","租赁","经营"}); + ExcelSelectionDto educationLevel = new ExcelSelectionDto(); + educationLevel.setSheetIndex(0); + educationLevel.setFirstCol(17); + educationLevel.setLastCol(17); + ExcelSelectionDto politicsStatus = new ExcelSelectionDto(); + politicsStatus.setSheetIndex(0); + politicsStatus.setFirstCol(18); + politicsStatus.setLastCol(18); + ExcelSelectionDto bodyStatus = new ExcelSelectionDto(); + bodyStatus.setSheetIndex(0); + bodyStatus.setFirstCol(23); + bodyStatus.setLastCol(23); + ExcelSelectionDto maritalStatus = new ExcelSelectionDto(); + maritalStatus.setSheetIndex(0); + maritalStatus.setFirstCol(24); + maritalStatus.setLastCol(24); + ExcelSelectionDto accountType = new ExcelSelectionDto(); + accountType.setSheetIndex(0); + accountType.setFirstCol(25); + accountType.setLastCol(25); + ExcelSelectionDto militaryService = new ExcelSelectionDto(); + militaryService.setSheetIndex(0); + militaryService.setFirstCol(26); + militaryService.setLastCol(26); + militaryService.setExcelSelections(new String[]{"是","否"}); + ExcelSelectionDto employedStatus = new ExcelSelectionDto(); + employedStatus.setSheetIndex(0); + employedStatus.setFirstCol(28); + employedStatus.setLastCol(28); + ExcelSelectionDto unEmployedReason = new ExcelSelectionDto(); + unEmployedReason.setSheetIndex(0); + unEmployedReason.setFirstCol(31); + unEmployedReason.setLastCol(31); + ExcelSelectionDto reEmployedPermit = new ExcelSelectionDto(); + reEmployedPermit.setSheetIndex(0); + reEmployedPermit.setFirstCol(32); + reEmployedPermit.setLastCol(32); + reEmployedPermit.setExcelSelections(new String[]{"有","无"}); + ExcelSelectionDto unEmployedRegister = new ExcelSelectionDto(); + unEmployedRegister.setSheetIndex(0); + unEmployedRegister.setFirstCol(33); + unEmployedRegister.setLastCol(33); + unEmployedRegister.setExcelSelections(new String[]{"是","否"}); + ExcelSelectionDto familyCategory = new ExcelSelectionDto(); + familyCategory.setSheetIndex(0); + familyCategory.setFirstCol(35); + familyCategory.setLastCol(35); + ExcelSelectionDto helpStatus = new ExcelSelectionDto(); + helpStatus.setSheetIndex(0); + helpStatus.setFirstCol(36); + helpStatus.setLastCol(36); + ExcelSelectionDto motorVehicleCategory = new ExcelSelectionDto(); + motorVehicleCategory.setSheetIndex(0); + motorVehicleCategory.setFirstCol(38); + motorVehicleCategory.setLastCol(38); + ExcelSelectionDto dogStatus = new ExcelSelectionDto(); + dogStatus.setSheetIndex(0); + dogStatus.setFirstCol(39); + dogStatus.setLastCol(39); + dogStatus.setExcelSelections(new String[]{"有","无"}); + ExcelSelectionDto houseHeadRelation = new ExcelSelectionDto(); + houseHeadRelation.setSheetIndex(1); + houseHeadRelation.setFirstCol(1); + houseHeadRelation.setLastCol(1); + houseHeadRelation.setExcelSelections(new String[]{"子女","夫妻","父母","其他"}); + ExcelSelectionDto residentSex = new ExcelSelectionDto(); + residentSex.setSheetIndex(1); + residentSex.setFirstCol(3); + residentSex.setLastCol(3); + residentSex.setExcelSelections(new String[]{"男","女"}); + //遍历赋值选项 + for (SysPopulationSimpleDictDTO sysPopulationSimpleDictDTO : sysPopulationSimpleDictDTOS) { + if(sysPopulationSimpleDictDTO.getDicType().equals(PopulationDictConstant.EDUCATION_LEVEL)){ + List sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + String[] data = new String[sysSimpleDicts.size()]; + for (int i = 0;i sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + String[] data = new String[sysSimpleDicts.size()]; + for (int i = 0;i sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + String[] data = new String[sysSimpleDicts.size()]; + for (int i = 0;i sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + String[] data = new String[sysSimpleDicts.size()]; + for (int i = 0;i sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + String[] data = new String[sysSimpleDicts.size()]; + for (int i = 0;i sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + String[] data = new String[sysSimpleDicts.size()]; + for (int i = 0;i sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + String[] data = new String[sysSimpleDicts.size()]; + for (int i = 0;i sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + String[] data = new String[sysSimpleDicts.size()]; + for (int i = 0;i sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + String[] data = new String[sysSimpleDicts.size()]; + for (int i = 0;i sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + String[] data = new String[sysSimpleDicts.size()]; + for (int i = 0;i