Browse Source

居民信息大屏数据接口字段添加

feature/syp_points
songyunpeng 5 years ago
parent
commit
c754c1063f
  1. 24
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcScreenSelectPeopleDetailResultDTO.java
  2. 8
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/HousingInfo.java
  3. 79
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/HousingInformationController.java
  4. 112
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PopulationInformationServiceImpl.java
  5. 2
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/HousingInformationDao.xml

24
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;
/**
* 房屋信息
*/

8
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;
}

79
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<SysSimpleDictDTO> 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<BasePopulationInformationExportDto> basePopulationInformationExcelListWithHouseHead = new ArrayList<>();
basePopulationInformationExcelListWithHouseHead.addAll(basePopulationInformationExcelList);
List<BasePopulationInformationExportDto> basePopulationInformationExcelListWithHouseHead = new ArrayList<>(basePopulationInformationExcelList);
//先去除没有户主的房屋
for(Iterator<BasePopulationInformationExportDto> car = basePopulationInformationExcelListWithHouseHead.iterator();car.hasNext();){
BasePopulationInformationExportDto basePopulationInformationExportDto = car.next();
if(StringUtils.isBlank(basePopulationInformationExportDto.getId())){
car.remove();
}
}
basePopulationInformationExcelListWithHouseHead.removeIf(basePopulationInformationExportDto -> StringUtils.isBlank(basePopulationInformationExportDto.getId()));
Map<String,List<BasePopulationInformationExportDto>> baseMap = basePopulationInformationExcelListWithHouseHead.stream().collect(Collectors.groupingBy(BasePopulationInformationExportDto::getId));
//获取所有的户主ID
Set<String> houseHeadIds = baseMap.keySet();
@ -207,21 +193,54 @@ public class HousingInformationController {
* @return java.lang.String
**/
private void setDicNameByValue(List<SysPopulationSimpleDictDTO> sysPopulationSimpleDictDTOS,BasePopulationInformationExportDto basePopulationInformationExportDto,String column,String columnValue,String dicType) throws IntrospectionException, InvocationTargetException, IllegalAccessException {
a:for (SysPopulationSimpleDictDTO sysPopulationSimpleDictDTO : sysPopulationSimpleDictDTOS) {
if (dicType.equals(sysPopulationSimpleDictDTO.getDicType())) {
List<SysSimpleDictDTO> 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<SysSimpleDictDTO> 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<? extends Object> 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

112
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<Population
return new Result<EpdcScreenSelectPeopleDetailResultDTO>().error("查询产权人信息失败:人口ID为空");
}
//根据户主ID组装信息
setHouseHeadInfo(dto.getPopulationId(),epdcScreenSelectPeopleDetailResultDTO);
setHouseHeadInfo(dto.getPopulationId(), epdcScreenSelectPeopleDetailResultDTO);
return new Result<EpdcScreenSelectPeopleDetailResultDTO>().ok(epdcScreenSelectPeopleDetailResultDTO);
} else if (PopulationIdentify.HOUSE_RESIDENT.equals(dto.getIdentifyFlag())) {
if (StringUtils.isBlank(dto.getPopulationId())) {
@ -335,28 +339,59 @@ public class PopulationInformationServiceImpl extends BaseServiceImpl<Population
Map<String, Object> params = new HashMap<>();
params.put("RESIDENT_ID", dto.getPopulationId());
List<HouseResidentEntity> houseResidentEntityList = houseResidentDao.selectByMap(params);
if(houseResidentEntityList==null || houseResidentEntityList.size()==0){
if (houseResidentEntityList == null || houseResidentEntityList.size() == 0) {
return new Result<EpdcScreenSelectPeopleDetailResultDTO>().error("根据居住人查询户主失败");
}
HouseResidentEntity houseResidentEntity = houseResidentEntityList.get(0);
//根据户主ID组装信息
setHouseHeadInfo(houseResidentEntity.getHouseHeadId(),epdcScreenSelectPeopleDetailResultDTO);
setHouseHeadInfo(houseResidentEntity.getHouseHeadId(), epdcScreenSelectPeopleDetailResultDTO);
return new Result<EpdcScreenSelectPeopleDetailResultDTO>().ok(epdcScreenSelectPeopleDetailResultDTO);
}
return new Result<EpdcScreenSelectPeopleDetailResultDTO>().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<String> 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<List<SysPopulationSimpleDictDTO>> listResult = adminFeignClient.listPopulationSimple(sysPopulationSimpleDictFormDTO);
if (listResult == null || !listResult.success()) {
throw new RenException("获取字典失败!");
}
List<SysPopulationSimpleDictDTO> 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<HousingInformationDTO> housingInformationDTOList = housingInformationService.getHouseInfoByHouseHeadID(houseHeadId);
List<HousingInfo> housingInfoList = ConvertUtils.sourceToTarget(housingInformationDTOList, HousingInfo.class);
@ -394,6 +429,64 @@ public class PopulationInformationServiceImpl extends BaseServiceImpl<Population
});
epdcScreenSelectPeopleDetailResultDTO.setFamilyMember(familyMemberList);
}
private static Object checkNull(Object obj) {
Class<? extends Object> 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<SysPopulationSimpleDictDTO> 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<SysSimpleDictDTO> 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<EpdcScreenHouseUseResultDTO> housingUse() {
@ -420,7 +513,8 @@ public class PopulationInformationServiceImpl extends BaseServiceImpl<Population
int pageIndex = (dto.getPageIndex() - NumConstant.ONE) * dto.getPageSize();
dto.setPageIndex(pageIndex);
List<EpdcScreenHouseInfoByPeopleResultDTO> list = baseDao.selectHouseByPeople(dto);
return new PageData<>(list, baseDao.selectCountHouseByPeople(dto)); }
return new PageData<>(list, baseDao.selectCountHouseByPeople(dto));
}
@Override
public PageData<EpdcScreenPopulationInfoByHouseResultDTO> selectPeopleByHouse(EpdcScreenPopulationInfoByHouseFormDTO dto) {

2
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
</select>
<select id="getHouseInfoByHouseHeadID" resultType="com.elink.esua.epdc.dto.HousingInformationDTO">
select t.HOUSE_ADDRESS,t.HOUSE_AREA,t.HOUSE_USE
select t.HOUSE_ADDRESS,t.HOUSE_AREA,t.HOUSE_USE,t.PROPERTY_OWNER,t.PROPERTY_OWNER_MOBILE
from epdc_housing_information t
left join epdc_house_resident t1 on t1.HOUSE_ID = t.ID and t1.DEL_FLAG = '0'
where t.DEL_FLAG ='0' and t1.RESIDENT_ID = #{houseHeadId} and t1.IS_HOUSE_HEAD = '1'

Loading…
Cancel
Save