From c754c1063f10f0f6e129d811e90e10ca359393fc Mon Sep 17 00:00:00 2001 From: songyunpeng Date: Mon, 21 Sep 2020 14:25:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF=E5=A4=A7?= =?UTF-8?q?=E5=B1=8F=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...EpdcScreenSelectPeopleDetailResultDTO.java | 24 ++++ .../epdc/dto/epdc/result/HousingInfo.java | 8 ++ .../HousingInformationController.java | 79 +++++++----- .../PopulationInformationServiceImpl.java | 112 ++++++++++++++++-- .../mapper/HousingInformationDao.xml | 2 +- 5 files changed, 185 insertions(+), 40 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcScreenSelectPeopleDetailResultDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcScreenSelectPeopleDetailResultDTO.java index 83db7f0f..92e2bd67 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcScreenSelectPeopleDetailResultDTO.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcScreenSelectPeopleDetailResultDTO.java @@ -27,6 +27,30 @@ public class EpdcScreenSelectPeopleDetailResultDTO { * 电话 */ private String phone; + /** + * 家庭类别 + */ + private String familyCategory; + /** + * 就业情况 + */ + private String employmentStatus; + /** + * 文化程度 + */ + private String educationLevel; + /** + * 政治面貌 + */ + private String politicsStatus; + /** + * 机动车数量 + */ + private String motorVehicleNum; + /** + * 宠物犬状况 + */ + private String dogStatus; /** * 房屋信息 */ diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/HousingInfo.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/HousingInfo.java index 338392ae..187400f2 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/HousingInfo.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/HousingInfo.java @@ -24,5 +24,13 @@ public class HousingInfo { * 房屋用途 */ private String houseUse; + /** + * 产权人 + */ + private String propertyOwner; + /** + * 产权人电话 + */ + private String propertyOwnerMobile; } 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..6abf195d 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 @@ -44,6 +44,7 @@ import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.io.InputStream; import java.io.OutputStream; +import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URLEncoder; @@ -154,7 +155,7 @@ public class HousingInformationController { if(StringUtils.isNotBlank(motorVehicleCategory)){ String[] motorVehicleCategoryStrings = motorVehicleCategory.split(","); String motorVehicleCategoryEnd = ""; - for(String motorVehicleCategoryStr : Arrays.asList(motorVehicleCategoryStrings)){ + for(String motorVehicleCategoryStr : motorVehicleCategoryStrings){ for (SysPopulationSimpleDictDTO sysPopulationSimpleDictDTO : sysPopulationSimpleDictDTOS) { if (PopulationDictConstant.MOTOR_VEHICLE_CATEGORY.equals(sysPopulationSimpleDictDTO.getDicType())) { List sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); @@ -169,27 +170,12 @@ 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(""); - } - }); - + //所有信息,转换excel时,替换是否时会出现null,此时将对应null值替换成空字符 + basePopulationInformationExcelList.forEach(HousingInformationController::checkNull); //根据获取的户主ID查询居住人信息 - List basePopulationInformationExcelListWithHouseHead = new ArrayList<>(); - basePopulationInformationExcelListWithHouseHead.addAll(basePopulationInformationExcelList); + List basePopulationInformationExcelListWithHouseHead = new ArrayList<>(basePopulationInformationExcelList); //先去除没有户主的房屋 - for(Iterator car = basePopulationInformationExcelListWithHouseHead.iterator();car.hasNext();){ - BasePopulationInformationExportDto basePopulationInformationExportDto = car.next(); - if(StringUtils.isBlank(basePopulationInformationExportDto.getId())){ - car.remove(); - } - } + basePopulationInformationExcelListWithHouseHead.removeIf(basePopulationInformationExportDto -> StringUtils.isBlank(basePopulationInformationExportDto.getId())); Map> baseMap = basePopulationInformationExcelListWithHouseHead.stream().collect(Collectors.groupingBy(BasePopulationInformationExportDto::getId)); //获取所有的户主ID Set houseHeadIds = baseMap.keySet(); @@ -207,21 +193,54 @@ public class HousingInformationController { * @return java.lang.String **/ private void setDicNameByValue(List sysPopulationSimpleDictDTOS,BasePopulationInformationExportDto basePopulationInformationExportDto,String column,String columnValue,String dicType) throws IntrospectionException, InvocationTargetException, IllegalAccessException { - a:for (SysPopulationSimpleDictDTO sysPopulationSimpleDictDTO : sysPopulationSimpleDictDTOS) { - if (dicType.equals(sysPopulationSimpleDictDTO.getDicType())) { - List sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); - for (SysSimpleDictDTO sysSimpleDict : sysSimpleDicts) { - if (columnValue.equals(sysSimpleDict.getDictValue())) { - Class basePopulationInformationExportDtoClass = basePopulationInformationExportDto.getClass(); - PropertyDescriptor pd = new PropertyDescriptor(column, basePopulationInformationExportDtoClass); - Method wM = pd.getWriteMethod();//获得写方法 - wM.invoke(basePopulationInformationExportDto, sysSimpleDict.getDictName()); - break a; + if(StringUtils.isNotBlank(columnValue)){ + a:for (SysPopulationSimpleDictDTO sysPopulationSimpleDictDTO : sysPopulationSimpleDictDTOS) { + if (dicType.equals(sysPopulationSimpleDictDTO.getDicType())) { + List sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + for (SysSimpleDictDTO sysSimpleDict : sysSimpleDicts) { + if (columnValue.equals(sysSimpleDict.getDictValue())) { + Class basePopulationInformationExportDtoClass = basePopulationInformationExportDto.getClass(); + PropertyDescriptor pd = new PropertyDescriptor(column, basePopulationInformationExportDtoClass); + Method wM = pd.getWriteMethod();//获得写方法 + wM.invoke(basePopulationInformationExportDto, sysSimpleDict.getDictName()); + break a; + } } } } } } + private static Object checkNull(Object obj) { + Class clazz = obj.getClass(); + // 获取实体类的所有属性,返回Field数组 + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + // 可访问私有变量 + field.setAccessible(true); + // 获取属性类型 + String type = field.getGenericType().toString(); + // 如果type是类类型,则前面包含"class ",后面跟类名 + if ("class java.lang.String".equals(type)) { + // 将属性的首字母大写 + String methodName = field.getName().replaceFirst(field.getName().substring(0, 1), + field.getName().substring(0, 1).toUpperCase()); + System.out.println(methodName); + try { + Method methodGet = clazz.getMethod("get" + methodName); + // 调用getter方法获取属性值 + String str = (String) methodGet.invoke(obj); + if (StringUtils.isBlank(str)) { + // 如果为null的String类型的属性则重新复制为空字符串 + field.set(obj, field.getType().getConstructor(field.getType()).newInstance("")); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + return obj; + } + /** * @Description 批量导入 * @Author songyunpeng diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PopulationInformationServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PopulationInformationServiceImpl.java index 57806d78..cd216c58 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PopulationInformationServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PopulationInformationServiceImpl.java @@ -22,19 +22,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant; +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.IdentityNoUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.constant.HouseHeadRelationConstant; import com.elink.esua.epdc.constant.HouseUseConstant; +import com.elink.esua.epdc.constant.PopulationDictConstant; import com.elink.esua.epdc.constant.PopulationIdentify; import com.elink.esua.epdc.dao.HouseResidentDao; import com.elink.esua.epdc.dao.PopulationInformationDao; -import com.elink.esua.epdc.dto.BaseResidentInformationExportDto; -import com.elink.esua.epdc.dto.HousingInformationDTO; -import com.elink.esua.epdc.dto.PopulationInfoOverviewDTO; -import com.elink.esua.epdc.dto.PopulationInformationDTO; +import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.entity.HouseResidentEntity; @@ -50,6 +49,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.beans.IntrospectionException; +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.*; /** @@ -325,7 +329,7 @@ public class PopulationInformationServiceImpl extends BaseServiceImpl().error("查询产权人信息失败:人口ID为空"); } //根据户主ID组装信息 - setHouseHeadInfo(dto.getPopulationId(),epdcScreenSelectPeopleDetailResultDTO); + setHouseHeadInfo(dto.getPopulationId(), epdcScreenSelectPeopleDetailResultDTO); return new Result().ok(epdcScreenSelectPeopleDetailResultDTO); } else if (PopulationIdentify.HOUSE_RESIDENT.equals(dto.getIdentifyFlag())) { if (StringUtils.isBlank(dto.getPopulationId())) { @@ -335,28 +339,59 @@ public class PopulationInformationServiceImpl extends BaseServiceImpl params = new HashMap<>(); params.put("RESIDENT_ID", dto.getPopulationId()); List houseResidentEntityList = houseResidentDao.selectByMap(params); - if(houseResidentEntityList==null || houseResidentEntityList.size()==0){ + if (houseResidentEntityList == null || houseResidentEntityList.size() == 0) { return new Result().error("根据居住人查询户主失败"); } HouseResidentEntity houseResidentEntity = houseResidentEntityList.get(0); //根据户主ID组装信息 - setHouseHeadInfo(houseResidentEntity.getHouseHeadId(),epdcScreenSelectPeopleDetailResultDTO); + setHouseHeadInfo(houseResidentEntity.getHouseHeadId(), epdcScreenSelectPeopleDetailResultDTO); return new Result().ok(epdcScreenSelectPeopleDetailResultDTO); } return new Result().error("查询错误:身份标识参数无法匹配"); } - private void setHouseHeadInfo(String houseHeadId,EpdcScreenSelectPeopleDetailResultDTO epdcScreenSelectPeopleDetailResultDTO ){ + private void setHouseHeadInfo(String houseHeadId, EpdcScreenSelectPeopleDetailResultDTO epdcScreenSelectPeopleDetailResultDTO) { //如果是户主,人口信息从人口表拿 PopulationInformationEntity populationInformationEntity = this.selectById(houseHeadId); epdcScreenSelectPeopleDetailResultDTO.setName(populationInformationEntity.getResidentsName()); epdcScreenSelectPeopleDetailResultDTO.setSex("0".equals(populationInformationEntity.getResidentsSex()) ? "女" : "男"); + epdcScreenSelectPeopleDetailResultDTO.setDogStatus("0".equals(populationInformationEntity.getDogStatus()) ? "无" : "有"); if (IdentityNoUtils.IdentityNoVerification(populationInformationEntity.getResidentsIdentityNo()) == null) { epdcScreenSelectPeopleDetailResultDTO.setAge(IdentityNoUtils.getAge(populationInformationEntity.getResidentsIdentityNo()) + ""); } else { epdcScreenSelectPeopleDetailResultDTO.setAge(""); } epdcScreenSelectPeopleDetailResultDTO.setPhone(populationInformationEntity.getResidentsPhone()); + epdcScreenSelectPeopleDetailResultDTO.setFamilyCategory(populationInformationEntity.getFamilyCategory()); + epdcScreenSelectPeopleDetailResultDTO.setEmploymentStatus(populationInformationEntity.getEmploymentStatus()); + epdcScreenSelectPeopleDetailResultDTO.setEducationLevel(populationInformationEntity.getEducationLevel()); + epdcScreenSelectPeopleDetailResultDTO.setPoliticsStatus(populationInformationEntity.getPoliticsStatus()); + epdcScreenSelectPeopleDetailResultDTO.setMotorVehicleNum(String.valueOf(populationInformationEntity.getMotorVehicleNum())); + //根据字典信息赋值 + //获取字典信息 + 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("获取字典失败!"); + } + List sysPopulationSimpleDictDTOS = listResult.getData(); + String educationLevel = epdcScreenSelectPeopleDetailResultDTO.getEducationLevel(); + String politicsStatus = epdcScreenSelectPeopleDetailResultDTO.getPoliticsStatus(); + String employmentStatus = epdcScreenSelectPeopleDetailResultDTO.getEmploymentStatus(); + String familyCategory = epdcScreenSelectPeopleDetailResultDTO.getFamilyCategory(); + try { + setDicNameByValue(sysPopulationSimpleDictDTOS, epdcScreenSelectPeopleDetailResultDTO, "educationLevel", educationLevel, PopulationDictConstant.EDUCATION_LEVEL); + setDicNameByValue(sysPopulationSimpleDictDTOS, epdcScreenSelectPeopleDetailResultDTO, "politicsStatus", politicsStatus, PopulationDictConstant.POLITICS_STATUS); + setDicNameByValue(sysPopulationSimpleDictDTOS, epdcScreenSelectPeopleDetailResultDTO, "employmentStatus", employmentStatus, PopulationDictConstant.EMPLOYMENT_STATUS); + setDicNameByValue(sysPopulationSimpleDictDTOS, epdcScreenSelectPeopleDetailResultDTO, "familyCategory", familyCategory, PopulationDictConstant.FAMILY_CATEGORY); + } catch (Exception e) { + throw new RenException("根据字典赋值出错!"); + } //房屋信息 List housingInformationDTOList = housingInformationService.getHouseInfoByHouseHeadID(houseHeadId); List housingInfoList = ConvertUtils.sourceToTarget(housingInformationDTOList, HousingInfo.class); @@ -394,6 +429,64 @@ public class PopulationInformationServiceImpl extends BaseServiceImpl clazz = obj.getClass(); + // 获取实体类的所有属性,返回Field数组 + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + // 可访问私有变量 + field.setAccessible(true); + // 获取属性类型 + String type = field.getGenericType().toString(); + // 如果type是类类型,则前面包含"class ",后面跟类名 + if ("class java.lang.String".equals(type)) { + // 将属性的首字母大写 + String methodName = field.getName().replaceFirst(field.getName().substring(0, 1), + field.getName().substring(0, 1).toUpperCase()); + try { + Method methodGet = clazz.getMethod("get" + methodName); + // 调用getter方法获取属性值 + String str = (String) methodGet.invoke(obj); + if (StringUtils.isBlank(str)) { + // 如果为null的String类型的属性则重新复制为空字符串 + field.set(obj, field.getType().getConstructor(field.getType()).newInstance("")); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + return obj; + } + /** + * @param column 实体类的属性名 + * @param columnValue 实体类的属性值 + * @param dicType 字典的类型 + * @return java.lang.String + * @Description 根据字典值匹配键 + * @Author songyunpeng + * @Date 2020/9/8 + * @Param [sysPopulationSimpleDictDTOS, basePopulationInformationExportDto, column] + **/ + private void setDicNameByValue(List sysPopulationSimpleDictDTOS, EpdcScreenSelectPeopleDetailResultDTO epdcScreenSelectPeopleDetailResultDTO, String column, String columnValue, String dicType) throws IntrospectionException, InvocationTargetException, IllegalAccessException { + if (StringUtils.isNotBlank(columnValue)) { + a: + for (SysPopulationSimpleDictDTO sysPopulationSimpleDictDTO : sysPopulationSimpleDictDTOS) { + if (dicType.equals(sysPopulationSimpleDictDTO.getDicType())) { + List sysSimpleDicts = sysPopulationSimpleDictDTO.getSysSimpleDicts(); + for (SysSimpleDictDTO sysSimpleDict : sysSimpleDicts) { + if (columnValue.equals(sysSimpleDict.getDictValue())) { + Class basePopulationInformationExportDtoClass = epdcScreenSelectPeopleDetailResultDTO.getClass(); + PropertyDescriptor pd = new PropertyDescriptor(column, basePopulationInformationExportDtoClass); + Method wM = pd.getWriteMethod();//获得写方法 + wM.invoke(epdcScreenSelectPeopleDetailResultDTO, sysSimpleDict.getDictName()); + break a; + } + } + } + } + } + } @Override public Result housingUse() { @@ -420,7 +513,8 @@ public class PopulationInformationServiceImpl extends BaseServiceImpl list = baseDao.selectHouseByPeople(dto); - return new PageData<>(list, baseDao.selectCountHouseByPeople(dto)); } + return new PageData<>(list, baseDao.selectCountHouseByPeople(dto)); + } @Override public PageData selectPeopleByHouse(EpdcScreenPopulationInfoByHouseFormDTO dto) { diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/HousingInformationDao.xml b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/HousingInformationDao.xml index 7f43ec0c..c9470642 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/HousingInformationDao.xml +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/HousingInformationDao.xml @@ -178,7 +178,7 @@ order by t.CREATED_TIME desc