|
|
@ -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) { |
|
|
|