package com.panzhihua.service_community.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.Comparator;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
|
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.vaccines.EnrollUserByAppDTO;
|
import com.panzhihua.common.model.dtos.vaccines.VaccinesEnrollByAdminDTO;
|
import com.panzhihua.common.model.dtos.vaccines.VaccinesEnrollByAppDTO;
|
import com.panzhihua.common.model.dtos.vaccines.VaccinesEnrollUserByAppDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.vaccines.VaccinesEnrollByAdminVO;
|
import com.panzhihua.common.model.vos.vaccines.VaccinesEnrollUserByAppVO;
|
import com.panzhihua.common.utlis.IdCard;
|
import com.panzhihua.common.utlis.StringUtils;
|
import com.panzhihua.service_community.dao.ComMngVaccinesDAO;
|
import com.panzhihua.service_community.dao.ComMngVaccinesEnrollRecordDAO;
|
import com.panzhihua.service_community.model.dos.ComMngVaccinesDO;
|
import com.panzhihua.service_community.model.dos.ComMngVaccinesEnrollRecordDO;
|
import com.panzhihua.service_community.service.ComMngVaccinesEnrollRecordService;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
/**
|
* @auther lyq
|
* @create 2021-05-19 14:17:53
|
* @describe 疫苗报名记录表服务实现类
|
*/
|
@Slf4j
|
@Service
|
public class ComMngVaccinesEnrollRecordServiceImpl
|
extends ServiceImpl<ComMngVaccinesEnrollRecordDAO, ComMngVaccinesEnrollRecordDO>
|
implements ComMngVaccinesEnrollRecordService {
|
|
@Resource
|
private ComMngVaccinesDAO comMngVaccinesDAO;
|
|
/**
|
* 小程序-疫苗类型对应家庭成员接种列表
|
*
|
* @return 疫苗类型对应家庭成员接种列表
|
*/
|
@Override
|
public R getVaccinesUserListByApp(VaccinesEnrollUserByAppDTO enrollUserByAppDTO) {
|
// 查询当前用户的家庭成员列表
|
List<VaccinesEnrollUserByAppVO> userLists = new ArrayList<>();
|
// 将自己的信息组装进家庭成员列表中
|
VaccinesEnrollUserByAppVO ownUser = this.baseMapper.getSysUser(enrollUserByAppDTO.getUserId());
|
if (ownUser != null) {
|
ownUser.setIsUser(1);
|
// 计算年龄
|
ownUser.setAge(IdCard.IdNOToAge(ownUser.getIdCard()));
|
userLists.add(ownUser);
|
}
|
List<VaccinesEnrollUserByAppVO> userList = this.baseMapper.getFamilyUserList(enrollUserByAppDTO.getUserId());
|
if (!userList.isEmpty()) {
|
userLists.addAll(userList);
|
}
|
|
if (!userLists.isEmpty()) {
|
userLists.forEach(user -> {
|
if (user.getIsUser() == null) {
|
user.setIsUser(2);
|
}
|
if (StringUtils.isEmpty(user.getJob())) {
|
user.setJob("暂无");
|
}
|
// 查询当前用户是否已经报名
|
ComMngVaccinesEnrollRecordDO enrollRecordDO =
|
this.baseMapper.selectOne(new QueryWrapper<ComMngVaccinesEnrollRecordDO>().lambda()
|
.eq(ComMngVaccinesEnrollRecordDO::getFamilyUserId, user.getUserId())
|
.eq(ComMngVaccinesEnrollRecordDO::getType, enrollUserByAppDTO.getVaccinesId())
|
.eq(ComMngVaccinesEnrollRecordDO::getFamilyUserType, user.getIsUser()));
|
if (enrollRecordDO != null) {
|
user.setIsEnroll(VaccinesEnrollUserByAppVO.isEnroll.yes);
|
} else {
|
user.setIsEnroll(VaccinesEnrollUserByAppVO.isEnroll.no);
|
}
|
});
|
}
|
|
List<VaccinesEnrollUserByAppVO> newUserLists = userLists.stream()
|
.sorted(Comparator.comparing(VaccinesEnrollUserByAppVO::getIsEnroll).reversed()
|
.thenComparing(Comparator.comparing(VaccinesEnrollUserByAppVO::getCreateAt).reversed()))
|
.collect(Collectors.toList());
|
return R.ok(newUserLists);
|
}
|
|
/**
|
* 用户疫苗报名
|
*
|
* @param enrollByAppDTO
|
* 请求参数
|
* @return 报名结果
|
*/
|
@Override
|
public R VaccinesEnrollByApp(VaccinesEnrollByAppDTO enrollByAppDTO) {
|
// 查询疫苗信息
|
ComMngVaccinesDO vaccinesDO = comMngVaccinesDAO.selectById(enrollByAppDTO.getVaccinesId());
|
if (vaccinesDO == null) {
|
return R.fail("未找到到疫苗信息");
|
}
|
List<ComMngVaccinesEnrollRecordDO> vaccinesEnrollRecordDOList = new ArrayList<>();
|
if (!enrollByAppDTO.getEnrollUserList().isEmpty()) {
|
for (EnrollUserByAppDTO userByAppDTO : enrollByAppDTO.getEnrollUserList()) {
|
ComMngVaccinesEnrollRecordDO enrollRecordDO =
|
this.baseMapper.selectOne(new QueryWrapper<ComMngVaccinesEnrollRecordDO>().lambda()
|
.eq(ComMngVaccinesEnrollRecordDO::getFamilyUserType, userByAppDTO.getIsUser())
|
.eq(ComMngVaccinesEnrollRecordDO::getFamilyUserId, userByAppDTO.getUserId())
|
.eq(ComMngVaccinesEnrollRecordDO::getUserId, enrollByAppDTO.getUserId())
|
.eq(ComMngVaccinesEnrollRecordDO::getType, enrollByAppDTO.getVaccinesId()));
|
if (enrollRecordDO != null) {
|
continue;
|
}
|
// 报名疫苗填充对象
|
ComMngVaccinesEnrollRecordDO vaccinesEnrollRecordDO = new ComMngVaccinesEnrollRecordDO();
|
if (userByAppDTO.getIsUser().equals(EnrollUserByAppDTO.isUser.yes)) {
|
// 如果是自己就查询自己的信息
|
VaccinesEnrollUserByAppVO enrollUserByAppVO =
|
this.baseMapper.getSysUser(enrollByAppDTO.getUserId());
|
if (enrollUserByAppVO != null) {
|
vaccinesEnrollRecordDO.setName(enrollUserByAppVO.getName());
|
vaccinesEnrollRecordDO.setIdCard(enrollUserByAppVO.getIdCard());
|
vaccinesEnrollRecordDO.setAge(enrollUserByAppVO.getAge());
|
vaccinesEnrollRecordDO.setPhone(enrollUserByAppVO.getPhone());
|
vaccinesEnrollRecordDO.setSex(IdCard.sex(enrollUserByAppVO.getIdCard()));
|
}
|
vaccinesEnrollRecordDO.setFamilyUserType(ComMngVaccinesEnrollRecordDO.familyUserType.mini);
|
} else {
|
VaccinesEnrollUserByAppVO enrollUserByAppVO =
|
this.baseMapper.getFamilyUser(userByAppDTO.getUserId());
|
if (enrollUserByAppVO != null) {
|
vaccinesEnrollRecordDO.setName(enrollUserByAppVO.getName());
|
vaccinesEnrollRecordDO.setIdCard(enrollUserByAppVO.getIdCard());
|
vaccinesEnrollRecordDO.setAge(enrollUserByAppVO.getAge());
|
vaccinesEnrollRecordDO.setPhone(enrollUserByAppVO.getPhone());
|
vaccinesEnrollRecordDO.setSex(IdCard.sex(enrollUserByAppVO.getIdCard()));
|
}
|
}
|
vaccinesEnrollRecordDO.setUserId(enrollByAppDTO.getUserId());
|
vaccinesEnrollRecordDO.setFamilyUserId(userByAppDTO.getUserId());
|
vaccinesEnrollRecordDO.setType(enrollByAppDTO.getVaccinesId());
|
vaccinesEnrollRecordDO.setCommunityId(enrollByAppDTO.getCommunityId());
|
vaccinesEnrollRecordDOList.add(vaccinesEnrollRecordDO);
|
}
|
}
|
if (!vaccinesEnrollRecordDOList.isEmpty()) {
|
this.saveBatch(vaccinesEnrollRecordDOList);
|
}
|
return R.ok();
|
}
|
|
/**
|
* 查询疫苗登记列表
|
*
|
* @param vaccinesByAdminDTO
|
* 请求参数
|
* @return 登记列表
|
*/
|
@Override
|
public R getVaccinesEnrollListByAdmin(VaccinesEnrollByAdminDTO vaccinesByAdminDTO) {
|
IPage<VaccinesEnrollByAdminVO> enrollByAdminVOIPage = this.baseMapper.getVaccinesEnrollListByAdmin(
|
new Page<VaccinesEnrollByAdminVO>(vaccinesByAdminDTO.getPageNum(), vaccinesByAdminDTO.getPageSize()),
|
vaccinesByAdminDTO);
|
if (!enrollByAdminVOIPage.getRecords().isEmpty()) {
|
for (VaccinesEnrollByAdminVO enroll : enrollByAdminVOIPage.getRecords()) {
|
if (enroll.getIdCard().length() != 18) {
|
enroll.setSex(3);
|
} else {
|
enroll.setSex(IdCard.sex(enroll.getIdCard()));
|
}
|
}
|
}
|
return R.ok(enrollByAdminVOIPage);
|
}
|
|
/**
|
* 根据条件导出疫苗登记记录
|
*
|
* @param vaccinesByAdminDTO
|
* 请求参数
|
* @return 导出登记列表
|
*/
|
@Override
|
public R exportVaccinesEnrollListByAdmin(VaccinesEnrollByAdminDTO vaccinesByAdminDTO) {
|
return R.ok(this.baseMapper.exportVaccinesEnrollListByAdmin(vaccinesByAdminDTO));
|
}
|
}
|