140 lines
5.2 KiB
Java
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);
|
|
|
|
}
|
|
|
|
}
|