176 lines
8.1 KiB
Java
176 lines
8.1 KiB
Java
package com.example.survey.service.impl;
|
|
|
|
import com.example.survey.dao.ProjectDao;
|
|
import com.example.survey.dao.RespondentDao;
|
|
import com.example.survey.dao.UserDao;
|
|
import com.example.survey.dto.respondent.CreateRespondentDTO;
|
|
import com.example.survey.dto.respondent.DeleteRespondentDTO;
|
|
import com.example.survey.dto.respondent.ModifyRespondentDTO;
|
|
import com.example.survey.dto.respondent.ModifyRespondentUserDTO;
|
|
import com.example.survey.entity.Project;
|
|
import com.example.survey.entity.Respondent;
|
|
import com.example.survey.entity.User;
|
|
import com.example.survey.enumeration.RespondentStateEnum;
|
|
import com.example.survey.enumeration.ResultEnum;
|
|
import com.example.survey.exception.ProjectException;
|
|
import com.example.survey.exception.RespondentException;
|
|
import com.example.survey.exception.UserException;
|
|
import com.example.survey.service.RespondentService;
|
|
import com.example.survey.vo.RespondentVO;
|
|
import com.example.survey.vo.inner.UserInfo;
|
|
import lombok.extern.log4j.Log4j2;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* @author Pope
|
|
*/
|
|
@Log4j2
|
|
@Service
|
|
public class RespondentServiceImpl implements RespondentService {
|
|
|
|
@Autowired
|
|
private RespondentDao respondentDao;
|
|
|
|
@Autowired
|
|
private ProjectDao projectDao;
|
|
|
|
@Autowired
|
|
private UserDao userDao;
|
|
|
|
@Override
|
|
public void createRespondent(CreateRespondentDTO createRespondentDTO) {
|
|
if (!projectDao.existProject(createRespondentDTO.getProjectName())) {
|
|
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
|
|
}
|
|
if (!userDao.existUser(createRespondentDTO.getUserPhone())) {
|
|
throw new UserException(ResultEnum.NOT_EXIST_USER);
|
|
}
|
|
Project project = projectDao.selectProject(createRespondentDTO.getProjectName());
|
|
User user = userDao.selectUser(createRespondentDTO.getPhone());
|
|
|
|
Respondent respondent = new Respondent();
|
|
respondent.setIdNumber(createRespondentDTO.getIdNumber());
|
|
respondent.setPhone(createRespondentDTO.getPhone());
|
|
respondent.setName(createRespondentDTO.getName());
|
|
respondent.setGender(createRespondentDTO.getGender());
|
|
respondent.setMsg(createRespondentDTO.getMsg());
|
|
respondent.setAdministrativeArea(createRespondentDTO.getAdministrativeArea());
|
|
respondent.setProject(project);
|
|
respondent.setUser(user);
|
|
respondent.setState(RespondentStateEnum.NOT_INVESTIGATED.getValue());
|
|
respondentDao.saveRespondent(respondent);
|
|
|
|
project.setRespondentCount(project.getRespondentCount() + 1);
|
|
project.setNotInvestigatedRespondentCount(project.getNotInvestigatedRespondentCount() + 1);
|
|
projectDao.saveProject(project);
|
|
}
|
|
|
|
@Override
|
|
public List<RespondentVO> listRespondentLimit(String userPhone, String state, String idNumber, String name, String phone, String province, String city, String county, String projectName, int currentPage, int pageSize) {
|
|
if (userPhone != null && !userDao.existUser(userPhone)) {
|
|
throw new UserException(ResultEnum.NOT_EXIST_USER);
|
|
}
|
|
if (projectName != null && !projectDao.existProject(projectName)) {
|
|
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
|
|
}
|
|
User tmpUser = userDao.selectUser(userPhone);
|
|
Project tmpProject = projectDao.selectProject(projectName);
|
|
|
|
List<Respondent> respondentList = respondentDao.listRespondentLimit(tmpUser, state, idNumber, name, phone, province, city, county, tmpProject, currentPage * pageSize, pageSize);
|
|
if (respondentList == null) {
|
|
return new ArrayList<>();
|
|
}
|
|
return respondentList.stream().map(respondent -> {
|
|
RespondentVO respondentVO = new RespondentVO();
|
|
respondentVO.setIdNumber(respondent.getIdNumber());
|
|
respondentVO.setPhone(respondent.getPhone());
|
|
respondentVO.setName(respondent.getName());
|
|
respondentVO.setMsg(respondent.getMsg());
|
|
respondentVO.setGender(respondent.getGender());
|
|
respondentVO.setAdministrativeArea(respondent.getAdministrativeArea());
|
|
respondentVO.setProjectName(respondent.getProject().getName());
|
|
respondentVO.setState(respondent.getState());
|
|
User user = respondent.getUser();
|
|
if (user != null) {
|
|
UserInfo userInfo = new UserInfo();
|
|
userInfo.setIdNumber(user.getIdNumber());
|
|
userInfo.setUsername(user.getUsername());
|
|
userInfo.setPhone(user.getPhone());
|
|
respondentVO.setUserInfo(userInfo);
|
|
}
|
|
return respondentVO;
|
|
}).collect(Collectors.toList());
|
|
}
|
|
|
|
@Override
|
|
public long countRespondent(String userPhone, String state, String idNumber, String name, String phone, String province, String city, String county, String projectName) {
|
|
if (userPhone != null && !userDao.existUser(userPhone)) {
|
|
throw new UserException(ResultEnum.NOT_EXIST_USER);
|
|
}
|
|
if (projectName != null && !projectDao.existProject(projectName)) {
|
|
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
|
|
}
|
|
User user = userDao.selectUser(userPhone);
|
|
Project project = projectDao.selectProject(projectName);
|
|
return respondentDao.countRespondent(user, state, idNumber, name, phone, province, city, county, project);
|
|
}
|
|
|
|
@Override
|
|
public void modifyRespondent(ModifyRespondentDTO modifyRespondentDTO) {
|
|
if (!projectDao.existProject(modifyRespondentDTO.getProjectName())) {
|
|
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
|
|
}
|
|
Project project = projectDao.selectProject(modifyRespondentDTO.getProjectName());
|
|
if (!respondentDao.existRespondent(modifyRespondentDTO.getIdNumber(), project)) {
|
|
throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
|
|
}
|
|
Respondent respondent = respondentDao.selectRespondent(modifyRespondentDTO.getIdNumber(), project);
|
|
respondent.setPhone(modifyRespondentDTO.getPhone());
|
|
respondent.setName(modifyRespondentDTO.getName());
|
|
respondent.setMsg(modifyRespondentDTO.getMsg());
|
|
respondent.setGender(modifyRespondentDTO.getGender());
|
|
respondent.setAdministrativeArea(modifyRespondentDTO.getAdministrativeArea());
|
|
respondentDao.saveRespondent(respondent);
|
|
}
|
|
|
|
|
|
@Override
|
|
public void modifyUser(ModifyRespondentUserDTO modifyRespondentUserDTO) {
|
|
if (!userDao.existUser(modifyRespondentUserDTO.getUserPhone())) {
|
|
throw new UserException(ResultEnum.NOT_EXIST_USER);
|
|
}
|
|
User user = userDao.selectUser(modifyRespondentUserDTO.getUserPhone());
|
|
if (!projectDao.existProject(modifyRespondentUserDTO.getProjectName())) {
|
|
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
|
|
}
|
|
Project project = projectDao.selectProject(modifyRespondentUserDTO.getProjectName());
|
|
if (!respondentDao.existRespondent(modifyRespondentUserDTO.getIdNumber(), project)) {
|
|
throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
|
|
}
|
|
Respondent respondent = respondentDao.selectRespondent(modifyRespondentUserDTO.getIdNumber(), project);
|
|
|
|
respondent.setUser(user);
|
|
respondentDao.saveRespondent(respondent);
|
|
}
|
|
|
|
@Override
|
|
public void deleteRespondent(DeleteRespondentDTO deleteRespondentDTO) {
|
|
if (!projectDao.existProject(deleteRespondentDTO.getProjectName())) {
|
|
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
|
|
}
|
|
Project project = projectDao.selectProject(deleteRespondentDTO.getProjectName());
|
|
if (!respondentDao.existRespondent(deleteRespondentDTO.getIdNumber(), project)) {
|
|
throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
|
|
}
|
|
Respondent respondent = respondentDao.selectRespondent(deleteRespondentDTO.getIdNumber(), project);
|
|
respondent.setState(RespondentStateEnum.FILED.getValue());
|
|
respondentDao.saveRespondent(respondent);
|
|
|
|
}
|
|
}
|