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<SysUserInputDAO, SysUserInputDO>
|
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<EexcelUserDTO> list, StringBuffer areaName) {
|
List<SysUserInputDO> sysUserInputDOS = new ArrayList<>();
|
if (!ObjectUtils.isEmpty(list)) {
|
ComMngStructAreaVO comMngStructAreaVO = sysUserInputDAO.selectByAreaName(areaName.toString());
|
// 查询该小区所有房屋信息用来进行匹配房屋编码
|
String key = "house_" + areaName;
|
Boolean aBoolean = stringRedisTemplate.hasKey(key);
|
ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();
|
List<ComMngStructHouseVO> comMngStructHouseVOS = new ArrayList<>();
|
if (aBoolean) {
|
String value = stringStringValueOperations.get(key);
|
comMngStructHouseVOS = JSONArray.parseArray(value, ComMngStructHouseVO.class);
|
} else {
|
comMngStructHouseVOS = sysUserInputDAO.selectHouserByareaName(areaName.toString());
|
}
|
List<ComMngStructHouseVO> comMngStructHouseVOS1 = comMngStructHouseVOS;
|
list.forEach(eexcelUserDTO -> {
|
// 判断身份证和门牌号是否重复
|
int count = sysUserInputDAO.selectCount(
|
new QueryWrapper<SysUserInputDO>().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<ComMngStructHouseVO> 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<ComMngFamilyInfoVO> 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<InputUserInfoVO> 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<SysUserInputDO> all = sysUserInputDAO
|
.selectList(new QueryWrapper<SysUserInputDO>().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<EexcelUserDTO> 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<ComMngFamilyInfoVO> comMngFamilyInfoVOS = sysUserInputDAO.selectListFamily(doorNumber, id);
|
inputUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
|
List<ComMngStructHouseVO> 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<InputUserInfoVO> 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<ComMngTagVO> 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<ComMngUserTagDO>().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<SysUserInputDO> sysUserInputDOS = sysUserInputDAO.selectList(
|
new QueryWrapper<SysUserInputDO>().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<EexcelUserDTO> eexcelUserDTOS = sysUserInputDAO.specialUserExport(exportSpecialUserDTO);
|
return R.ok(eexcelUserDTOS);
|
}
|
}
|