Survey/src/main/java/com/example/survey/service/impl/ProjectServiceImpl.java
Pope dcf4b04e43 2021-3-19
修改了调查对象与流调记录部分接口
2021-03-19 20:49:22 +08:00

140 lines
5.2 KiB
Java

package com.example.survey.service.impl;
import com.example.survey.dao.MetaDataDao;
import com.example.survey.dao.ProjectDao;
import com.example.survey.dao.RespondentDao;
import com.example.survey.dao.UserDao;
import com.example.survey.dto.project.CreateProjectDTO;
import com.example.survey.dto.project.ModifyProjectDTO;
import com.example.survey.dto.project.ModifyStateDTO;
import com.example.survey.entity.MetaData;
import com.example.survey.entity.Project;
import com.example.survey.entity.User;
import com.example.survey.enumeration.ProjectStateEnum;
import com.example.survey.enumeration.ResultEnum;
import com.example.survey.exception.MetaDataException;
import com.example.survey.exception.ProjectException;
import com.example.survey.exception.UserException;
import com.example.survey.service.ProjectService;
import com.example.survey.vo.ProjectVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Pope
*/
@Service
public class ProjectServiceImpl implements ProjectService {
@Autowired
ProjectDao projectDao;
@Autowired
RespondentDao respondentDao;
@Autowired
MetaDataDao metaDataDao;
@Autowired
UserDao userDao;
@Override
public void createProject(CreateProjectDTO createProjectDTO) {
if (!userDao.existUser(createProjectDTO.getUserPhone())) {
throw new UserException(ResultEnum.NOT_EXIST_USER);
}
if (!metaDataDao.existMetaData(createProjectDTO.getMetaDataName())) {
throw new MetaDataException(ResultEnum.NOT_EXIST_METADATA);
}
User user = userDao.selectUser(createProjectDTO.getUserPhone());
MetaData metaData = metaDataDao.selectMetaData(createProjectDTO.getMetaDataName());
Project project = new Project();
project.setName(createProjectDTO.getName());
project.setMetaData(metaData);
project.setStartTime(createProjectDTO.getStartTime());
project.setEndTime(createProjectDTO.getEndTime());
project.setDetail(createProjectDTO.getDetail());
project.setState(ProjectStateEnum.IN_PROGRESS.getValue());
project.setUser(user);
projectDao.saveProject(project);
}
@Override
public List<ProjectVO> listProjectLimit(String name, int currentPage, int pageSize) {
return projectDao.listProjectLimit(name, currentPage * pageSize, pageSize).stream()
.map(project -> {
ProjectVO projectVO = new ProjectVO();
projectVO.setName(project.getName());
projectVO.setDetail(project.getDetail());
projectVO.setStartTime(project.getStartTime());
projectVO.setEndTime(project.getEndTime());
if (project.getMetaData() != null) {
projectVO.setMetaDataName(project.getMetaData().getName());
}
projectVO.setState(project.getState());
return projectVO;
}).collect(Collectors.toList());
}
@Override
public long countRespondent(String name) {
if (!projectDao.existProject(name)) {
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
}
return projectDao.selectProject(name).getRespondentCount();
}
@Override
public long countRespondent(String name, String respondentState) {
if (!projectDao.existProject(name)) {
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
}
Project project = projectDao.selectProject(name);
return project.getNotInvestigatedRespondentCount();
}
@Override
public void modifyProjectState(ModifyStateDTO modifyStateDTO) {
if (!projectDao.existProject(modifyStateDTO.getName())) {
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
}
Project project = projectDao.selectProject(modifyStateDTO.getName());
for (ProjectStateEnum value : ProjectStateEnum.values()) {
if (value.getValue().equals(modifyStateDTO.getState())) {
project.setState(modifyStateDTO.getState());
projectDao.saveProject(project);
return;
}
}
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT_STATE);
}
@Override
public void modifyProject(ModifyProjectDTO modifyProjectDTO) {
if (!userDao.existUser(modifyProjectDTO.getUserPhone())) {
throw new UserException(ResultEnum.NOT_EXIST_USER);
}
if (!projectDao.existProject(modifyProjectDTO.getName())) {
throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
}
User user = userDao.selectUser(modifyProjectDTO.getUserPhone());
Project project = projectDao.selectProject(modifyProjectDTO.getName());
project.setDetail(modifyProjectDTO.getDetail());
project.setStartTime(modifyProjectDTO.getStartTime());
project.setEndTime(modifyProjectDTO.getEndTime());
project.setUser(user);
projectDao.saveProject(project);
}
@Override
public long countProject(String name) {
return projectDao.countProject(name);
}
}