package com.panzhihua.service_user.service.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.BeanUtils; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.panzhihua.common.model.dtos.community.ExportSpecialUserDTO; import com.panzhihua.common.model.dtos.community.ExportUserDTO; import com.panzhihua.common.model.dtos.user.ComMngUserTagDTO; import com.panzhihua.common.model.dtos.user.EexcelUserDTO; import com.panzhihua.common.model.dtos.user.InputUserTagsDTO; import com.panzhihua.common.model.dtos.user.PageInputUserDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.ComMngStructAreaVO; import com.panzhihua.common.model.vos.community.ComMngStructHouseVO; import com.panzhihua.common.model.vos.user.ComMngFamilyInfoVO; import com.panzhihua.common.model.vos.user.ComMngTagVO; import com.panzhihua.common.model.vos.user.CommunityUserInfoVO; import com.panzhihua.common.model.vos.user.InputUserInfoVO; import com.panzhihua.common.utlis.IdCard; import com.panzhihua.common.utlis.SensitiveUtil; import com.panzhihua.common.utlis.StringUtils; import com.panzhihua.service_user.dao.ComMngUserTagDAO; import com.panzhihua.service_user.dao.SysUserInputDAO; import com.panzhihua.service_user.model.dos.ComMngUserTagDO; import com.panzhihua.service_user.model.dos.SysUserInputDO; import com.panzhihua.service_user.service.SysUserInputService; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 居民导入 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2021-02-05 17:42 **/ @Service public class SysUserInputServiceImpl extends ServiceImpl implements SysUserInputService { @Resource private SysUserInputDAO sysUserInputDAO; @Resource private StringRedisTemplate stringRedisTemplate; @Resource private ComMngUserTagDAO comMngUserTagDAO; /** * 批量导入居民用户 * * @param list * 居民用户集合 * @param areaName * 小区名字 * @return 导入结果 */ @Override @Transactional(rollbackFor = Exception.class) public R batchSaveUser(List list, StringBuffer areaName) { List sysUserInputDOS = new ArrayList<>(); if (!ObjectUtils.isEmpty(list)) { ComMngStructAreaVO comMngStructAreaVO = sysUserInputDAO.selectByAreaName(areaName.toString()); // 查询该小区所有房屋信息用来进行匹配房屋编码 String key = "house_" + areaName; Boolean aBoolean = stringRedisTemplate.hasKey(key); ValueOperations stringStringValueOperations = stringRedisTemplate.opsForValue(); List comMngStructHouseVOS = new ArrayList<>(); if (aBoolean) { String value = stringStringValueOperations.get(key); comMngStructHouseVOS = JSONArray.parseArray(value, ComMngStructHouseVO.class); } else { comMngStructHouseVOS = sysUserInputDAO.selectHouserByareaName(areaName.toString()); } List comMngStructHouseVOS1 = comMngStructHouseVOS; list.forEach(eexcelUserDTO -> { // 判断身份证和门牌号是否重复 int count = sysUserInputDAO.selectCount( new QueryWrapper().lambda().eq(SysUserInputDO::getIdCard, eexcelUserDTO.getIdCard()) .and(wrapper -> wrapper.eq(SysUserInputDO::getDoorNumber, eexcelUserDTO.getDoorNumber()))); if (count == 0) { SysUserInputDO sysUserInputDO = new SysUserInputDO(); String doorNumber = eexcelUserDTO.getDoorNumber(); // 暂时注释门牌号匹配设置房屋编号功能 // List collect = comMngStructHouseVOS1.stream().filter(comMngStructHouseVO -> // comMngStructHouseVO.getHouseName().equals(doorNumber)).collect(Collectors.toList()); // if (ObjectUtils.isEmpty(collect)) { // throw new ServiceException("门牌号后台不存在或格式错误,错误门牌号为"+doorNumber); // }else{ // sysUserInputDO.setHouseCode(collect.get(0).getHouseCode()); // } sysUserInputDO.setAreaId(comMngStructAreaVO.getId()); sysUserInputDO.setCommunityId(comMngStructAreaVO.getCommunityId()); sysUserInputDO.setCompany(eexcelUserDTO.getCompany()); sysUserInputDO.setDoorNumber(doorNumber); sysUserInputDO.setEducation(eexcelUserDTO.getEducation()); sysUserInputDO.setIdCard(eexcelUserDTO.getIdCard()); sysUserInputDO.setIsContact(eexcelUserDTO.getIsContact().equals("是") ? 1 : 0); sysUserInputDO.setIsPanzhihua(eexcelUserDTO.getIsPanZhiHua().equals("是") ? 1 : 0); sysUserInputDO.setIsRent(eexcelUserDTO.getIsRent().equals("是") ? 1 : 0); sysUserInputDO.setKeyPersonnel(eexcelUserDTO.getKeyPersonnel().equals("是") ? 1 : 0); sysUserInputDO.setLowIncomeHouseholds(eexcelUserDTO.getLowIncomeHouseholds().equals("是") ? 1 : 0); sysUserInputDO.setLowIncomePeople(eexcelUserDTO.getLowIncomePeople().equals("是") ? 1 : 0); sysUserInputDO.setMajor(eexcelUserDTO.getMajor().equals("是") ? 1 : 0); sysUserInputDO.setMaritalStatus(eexcelUserDTO.getMaritalStatus().equals("是") ? 1 : 0); sysUserInputDO.setName(eexcelUserDTO.getName()); sysUserInputDO.setNation(eexcelUserDTO.getNation()); sysUserInputDO.setOldPeople(eexcelUserDTO.getOldPeople().equals("是") ? 1 : 0); sysUserInputDO.setDisability(eexcelUserDTO.getDisability().equals("是") ? 1 : 0); sysUserInputDO.setPhone(eexcelUserDTO.getPhone()); String politicalOutlook = eexcelUserDTO.getPoliticalOutlook(); if (!ObjectUtils.isEmpty(politicalOutlook)) { sysUserInputDO.setPoliticalOutlook( politicalOutlook.equals("党员") ? 1 : politicalOutlook.equals("团员") ? 2 : 3); } else { sysUserInputDO.setPoliticalOutlook(3); } sysUserInputDO.setResidence(eexcelUserDTO.getResidence()); sysUserInputDO.setSituation(eexcelUserDTO.getSituation()); sysUserInputDO.setSoldier(eexcelUserDTO.getSoldier().equals("是") ? 1 : 0); sysUserInputDO.setSpecialServiceFamily(eexcelUserDTO.getSpecialServiceFamily().equals("是") ? 1 : 0); sysUserInputDOS.add(sysUserInputDO); } }); this.saveBatch(sysUserInputDOS); } return R.ok(); } /** * 社区人员详情包括导入人员 * * @param userId * 人员id * @return CommunityUserInfoVO */ @Override public CommunityUserInfoVO detailUserComunity(Long userId) { CommunityUserInfoVO communityUserInfoVO=null; // userId = userId - 100000000l; SysUserInputDO sysUserInputDO = sysUserInputDAO.selectById(userId); if (!org.springframework.util.ObjectUtils.isEmpty(sysUserInputDO)) { communityUserInfoVO = new CommunityUserInfoVO(); BeanUtils.copyProperties(sysUserInputDO, communityUserInfoVO); String idCard = sysUserInputDO.getIdCard(); if (!org.springframework.util.ObjectUtils.isEmpty(idCard)) { communityUserInfoVO.setAge(IdCard.IdNOToAge(idCard)); communityUserInfoVO.setBirthday(IdCard.birthDay(idCard)); communityUserInfoVO.setIdCard(idCard); communityUserInfoVO.setSex(IdCard.sex(idCard)); } String phone = sysUserInputDO.getPhone(); communityUserInfoVO.setPhone(phone); Integer keyPersonnel = sysUserInputDO.getKeyPersonnel(); Integer specialServiceFamily = sysUserInputDO.getSpecialServiceFamily(); Integer soldier = sysUserInputDO.getSoldier(); Integer lowincomeHouseholds = sysUserInputDO.getLowIncomeHouseholds(); Integer lowincomePeople = sysUserInputDO.getLowIncomePeople(); Integer oldPeople = sysUserInputDO.getOldPeople(); Integer disability = sysUserInputDO.getDisability(); StringBuilder stringBuilder = new StringBuilder(); if (keyPersonnel.intValue() == 1) { stringBuilder.append("重点人员,"); } if (specialServiceFamily.intValue() == 1) { stringBuilder.append("特服家庭,"); } if (soldier.intValue() == 1) { stringBuilder.append("军人,"); } if (lowincomeHouseholds.intValue() == 1) { stringBuilder.append("低保户,"); } if (lowincomePeople.intValue() == 1) { stringBuilder.append("低收入人员,"); } if (oldPeople.intValue() == 1) { stringBuilder.append("高龄老人,"); } if (disability.intValue() == 1) { stringBuilder.append("残疾人,"); } communityUserInfoVO.setTags(stringBuilder.toString()); communityUserInfoVO.setUserId(userId); communityUserInfoVO.setIsVolunteer(0); String doorNumber = sysUserInputDO.getDoorNumber(); List comMngFamilyInfoVOS = sysUserInputDAO.selectListFamily(doorNumber, userId); communityUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS); } return communityUserInfoVO; } @Override public R pageInputUser(PageInputUserDTO pageInputUserDTO) { Page page = new Page<>(); Long pageNum = pageInputUserDTO.getPageNum(); Long pageSize = pageInputUserDTO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = sysUserInputDAO.pageInputUser(page, pageInputUserDTO); iPage.getRecords().forEach(record -> { record.setPhone(SensitiveUtil.desensitizedPhoneNumber(record.getPhone())); record.setIdCard(SensitiveUtil.desensitizedIdNumber(record.getIdCard())); if (!StringUtils.isEmpty(record.getTags()) && record.getTags().endsWith(",")) { record.setTags(record.getTags().substring(0, record.getTags().length() - 1)); } }); return R.ok(iPage); } @Override public R putUserTag(InputUserTagsDTO inputUserTagsDTO) { SysUserInputDO userInputDO = new SysUserInputDO(); userInputDO.setId(inputUserTagsDTO.getId()); userInputDO.setTags(inputUserTagsDTO.getTags()); List all = sysUserInputDAO .selectList(new QueryWrapper().lambda().eq(SysUserInputDO::getId, userInputDO.getId())); all.forEach(d -> { if (!StringUtils.isEmpty(d.getTags())) { d.setTags(d.getTags() + "," + inputUserTagsDTO.getTags()); } else { d.setTags(inputUserTagsDTO.getTags()); } sysUserInputDAO.updateById(userInputDO); }); return R.ok(); } @Override public R exportInputUser(ExportUserDTO exportUserDTO) { List eexcelUserDTOS = sysUserInputDAO.selectExport(exportUserDTO); return R.ok(eexcelUserDTOS); } @Override public R inputUserDetail(Long id) { InputUserInfoVO inputUserInfoVO = new InputUserInfoVO(); SysUserInputDO sysUserInputDO = sysUserInputDAO.selectById(id); if (!org.springframework.util.ObjectUtils.isEmpty(sysUserInputDO)) { BeanUtils.copyProperties(sysUserInputDO, inputUserInfoVO); String idCard = sysUserInputDO.getIdCard(); if (!org.springframework.util.ObjectUtils.isEmpty(idCard)) { inputUserInfoVO.setAge(IdCard.IdNOToAge(idCard)); inputUserInfoVO.setBirthday(IdCard.birthDay(idCard)); inputUserInfoVO.setIdCard(idCard); inputUserInfoVO.setSex(IdCard.sex(idCard)); } Integer keyPersonnel = sysUserInputDO.getKeyPersonnel(); Integer specialServiceFamily = sysUserInputDO.getSpecialServiceFamily(); Integer soldier = sysUserInputDO.getSoldier(); Integer lowincomeHouseholds = sysUserInputDO.getLowIncomeHouseholds(); Integer lowincomePeople = sysUserInputDO.getLowIncomePeople(); Integer oldPeople = sysUserInputDO.getOldPeople(); Integer disability = sysUserInputDO.getDisability(); StringBuilder stringBuilder = new StringBuilder(); if (keyPersonnel.intValue() == 1) { stringBuilder.append("重点人员,"); } if (specialServiceFamily.intValue() == 1) { stringBuilder.append("特服家庭,"); } if (soldier.intValue() == 1) { stringBuilder.append("军人,"); } if (lowincomeHouseholds.intValue() == 1) { stringBuilder.append("低保户,"); } if (lowincomePeople.intValue() == 1) { stringBuilder.append("低收入人员,"); } if (oldPeople.intValue() == 1) { stringBuilder.append("高龄老人,"); } if (disability.intValue() == 1) { stringBuilder.append("残疾人,"); } inputUserInfoVO.setTags(stringBuilder.toString()); String doorNumber = sysUserInputDO.getDoorNumber(); List comMngFamilyInfoVOS = sysUserInputDAO.selectListFamily(doorNumber, id); inputUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS); List comMngStructHouseVOS = sysUserInputDAO.selectUserHouseList(inputUserInfoVO.getIdCard()); inputUserInfoVO.setComMngStructHouseVOS(comMngStructHouseVOS); } return R.ok(inputUserInfoVO); } @Override public R specialInputUser(PageInputUserDTO pageInputUserDTO) { Page page = new Page<>(); Long pageNum = pageInputUserDTO.getPageNum(); Long pageSize = pageInputUserDTO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = sysUserInputDAO.specialInputUser(page, pageInputUserDTO); iPage.getRecords().forEach(record -> { record.setPhone(SensitiveUtil.desensitizedPhoneNumber(record.getPhone())); record.setIdCard(SensitiveUtil.desensitizedIdNumber(record.getIdCard())); }); return R.ok(iPage); } @Override public R specialInputUserTags(ComMngUserTagDTO comMngUserTagDTO) { Page page = new Page<>(); Long pageNum = comMngUserTagDTO.getPageNum(); Long pageSize = comMngUserTagDTO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = comMngUserTagDAO.pageSpecialInputUserTags(page, comMngUserTagDTO); return R.ok(iPage); } @Override public R saveSpecialInputUserTags(ComMngTagVO comMngTagVO) { if (null != comMngTagVO.getId() && comMngTagVO.getId() != 0) { ComMngUserTagDO comMngUserTagDO = comMngUserTagDAO.selectById(comMngTagVO.getId()); if (null == comMngUserTagDO) { return R.fail("标签不存在"); } if (comMngUserTagDO.getSysFlag() == 1) { return R.fail("系统预置标签不可修改"); } ComMngUserTagDO exist = comMngUserTagDAO.selectOne( new QueryWrapper().lambda().eq(ComMngUserTagDO::getTagName, comMngTagVO.getTagName())); if (null != exist && !exist.getId().equals(comMngTagVO.getId())) { return R.fail("标签重复"); } comMngUserTagDO.setTagName(comMngTagVO.getTagName()); comMngUserTagDAO.updateById(comMngUserTagDO); } else { ComMngUserTagDO comMngUserTagDO = comMngUserTagDAO.getSpecialInputUserTagsByVO(comMngTagVO); if (comMngUserTagDO != null) { return R.fail("标签重复"); } ComMngUserTagDO comMngUserTagDO1 = new ComMngUserTagDO(); comMngUserTagDO1.setTagName(comMngTagVO.getTagName()); // comMngUserTagDO1.setCommunityId(comMngTagVO.getCommunityId()); comMngUserTagDO1.setSysFlag(0); comMngUserTagDO1.setCreateAt(new Date()); comMngUserTagDAO.insert(comMngUserTagDO1); } return R.ok(); } @Override public R deleteSpecialInputUserTags(Long id) { ComMngUserTagDO comMngUserTagDO = comMngUserTagDAO.selectById(id); if (null == comMngUserTagDO) { return R.fail("标签不存在"); } if (comMngUserTagDO.getSysFlag() == 1) { return R.fail("系统预置标签不可删除"); } int delete = comMngUserTagDAO.deleteById(id); if (delete > 0) { return R.ok(); } return R.fail("删除失败"); } @Override public R deleteSpecialInputUser(Long id) { SysUserInputDO sysUserInputDO = sysUserInputDAO.selectById(id); if (null == sysUserInputDO) { return R.fail("用户不存在"); } List sysUserInputDOS = sysUserInputDAO.selectList( new QueryWrapper().lambda().eq(SysUserInputDO::getIdCard, sysUserInputDO.getIdCard())); sysUserInputDOS.forEach(sysUserInput -> { sysUserInput.setTags(null); sysUserInput.setKeyPersonnel(0); sysUserInput.setSpecialServiceFamily(0); sysUserInput.setSoldier(0); sysUserInput.setLowIncomeHouseholds(0); sysUserInput.setLowIncomePeople(0); sysUserInput.setOldPeople(0); sysUserInput.setDisability(0); }); boolean update = this.updateBatchById(sysUserInputDOS); if (update) { return R.ok(); } return R.fail(); } @Override public R specialUserExport(ExportSpecialUserDTO exportSpecialUserDTO) { List eexcelUserDTOS = sysUserInputDAO.specialUserExport(exportSpecialUserDTO); return R.ok(eexcelUserDTOS); } }