change data struct
This commit is contained in:
		
							parent
							
								
									27f313e939
								
							
						
					
					
						commit
						61eb8584b9
					
				
							
								
								
									
										11
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								pom.xml
									
									
									
									
									
								
							@ -82,6 +82,17 @@
 | 
			
		||||
            <groupId>org.springframework.boot</groupId>
 | 
			
		||||
            <artifactId>spring-boot-starter-aop</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <dependency>
 | 
			
		||||
                    <groupId>io.springfox</groupId>
 | 
			
		||||
                    <artifactId>springfox-swagger2</artifactId>
 | 
			
		||||
                    <version>2.9.2</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
                    <groupId>io.springfox</groupId>
 | 
			
		||||
                    <artifactId>springfox-swagger-ui</artifactId>
 | 
			
		||||
                    <version>2.10.5</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
    </dependencies>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,7 @@ package com.example.survey;
 | 
			
		||||
import org.springframework.boot.SpringApplication;
 | 
			
		||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@SpringBootApplication
 | 
			
		||||
public class SurveyApplication {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,6 @@ import com.example.survey.util.TokenUtil;
 | 
			
		||||
import com.example.survey.vo.ResultVO;
 | 
			
		||||
import lombok.extern.log4j.Log4j2;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.context.annotation.Configuration;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.*;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
@ -4,14 +4,10 @@ import lombok.extern.log4j.Log4j2;
 | 
			
		||||
import org.aspectj.lang.ProceedingJoinPoint;
 | 
			
		||||
import org.aspectj.lang.annotation.Around;
 | 
			
		||||
import org.aspectj.lang.annotation.Aspect;
 | 
			
		||||
import org.aspectj.lang.annotation.Before;
 | 
			
		||||
import org.aspectj.lang.annotation.Pointcut;
 | 
			
		||||
import org.springframework.aop.MethodBeforeAdvice;
 | 
			
		||||
import org.springframework.context.annotation.Configuration;
 | 
			
		||||
 | 
			
		||||
import java.lang.reflect.Method;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Objects;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										25
									
								
								src/main/java/com/example/survey/config/SwaggerConfig.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/main/java/com/example/survey/config/SwaggerConfig.java
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
package com.example.survey.config;
 | 
			
		||||
 | 
			
		||||
import org.springframework.context.annotation.Bean;
 | 
			
		||||
import org.springframework.context.annotation.Configuration;
 | 
			
		||||
import springfox.documentation.builders.PathSelectors;
 | 
			
		||||
import springfox.documentation.builders.RequestHandlerSelectors;
 | 
			
		||||
import springfox.documentation.spi.DocumentationType;
 | 
			
		||||
import springfox.documentation.spring.web.plugins.Docket;
 | 
			
		||||
import springfox.documentation.swagger2.annotations.EnableSwagger2;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Configuration
 | 
			
		||||
@EnableSwagger2
 | 
			
		||||
public class SwaggerConfig {
 | 
			
		||||
 | 
			
		||||
    @Bean
 | 
			
		||||
    public Docket api() {
 | 
			
		||||
        return new Docket(DocumentationType.SWAGGER_2)
 | 
			
		||||
                .select()
 | 
			
		||||
                .apis(RequestHandlerSelectors.basePackage("com.progressivecoder.springbootmongodbsampleapp.controllers"))
 | 
			
		||||
                .paths(PathSelectors.any())
 | 
			
		||||
                .build();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -3,9 +3,12 @@ package com.example.survey.controller;
 | 
			
		||||
import com.example.survey.dto.metaData.CreateMetaDataDTO;
 | 
			
		||||
import com.example.survey.dto.metaData.DeleteMetaDataDTO;
 | 
			
		||||
import com.example.survey.dto.metaData.ModifyMetaDataDTO;
 | 
			
		||||
import com.example.survey.enumeration.MetaDataTypeEnum;
 | 
			
		||||
import com.example.survey.enumeration.ResultEnum;
 | 
			
		||||
import com.example.survey.service.MetaDataService;
 | 
			
		||||
import com.example.survey.vo.ResultVO;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.lang3.EnumUtils;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
@ -30,14 +33,22 @@ public class MetaDataController {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/nameList")
 | 
			
		||||
    public ResultVO listMetaData(@RequestParam(value = "name",required = false) String name,
 | 
			
		||||
    public ResultVO listMetaData(
 | 
			
		||||
                                @RequestParam(value = "type",required = false) String type,
 | 
			
		||||
                                @RequestParam(value = "name",required = false) String name,
 | 
			
		||||
                                @RequestParam("currentPage")int currentPage,
 | 
			
		||||
                                @RequestParam(value = "pageSize",defaultValue = "30")int pageSize){
 | 
			
		||||
 | 
			
		||||
        if (! EnumUtils.isValidEnum(MetaDataTypeEnum.class, type)) {
 | 
			
		||||
            ResultVO resultVO = new ResultVO(ResultEnum.NOT_EXIST_METADATA);
 | 
			
		||||
            resultVO.setMsg("元数据类型不存在");
 | 
			
		||||
            return resultVO;
 | 
			
		||||
        }
 | 
			
		||||
        Map<String, Object> resultMap = new HashMap<>(16,0.75F);
 | 
			
		||||
        resultMap.put("totalCount", metaDataService.countMetaData(name));
 | 
			
		||||
        resultMap.put("currentPage", currentPage);
 | 
			
		||||
        resultMap.put("pageSize", pageSize);
 | 
			
		||||
        resultMap.put("data", metaDataService.listMetaDataNameLimit(name,currentPage,pageSize));
 | 
			
		||||
        resultMap.put("data", metaDataService.listMetaDataNameLimit(name, EnumUtils.getEnum(MetaDataTypeEnum.class, type) ,currentPage,pageSize));
 | 
			
		||||
 | 
			
		||||
        ResultVO resultVO = new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
        resultVO.setData(resultMap);
 | 
			
		||||
@ -63,11 +74,4 @@ public class MetaDataController {
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PostMapping("/wordTemplate")
 | 
			
		||||
    public ResultVO bindWordTemplate(@RequestParam("template")MultipartFile template,
 | 
			
		||||
                                     @RequestParam("name")String name){
 | 
			
		||||
        metaDataService.bindWordTemplate(template,name);
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,18 +1,18 @@
 | 
			
		||||
package com.example.survey.controller;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.dto.project.AddRecordDTO;
 | 
			
		||||
import com.example.survey.dto.project.CreateProjectDTO;
 | 
			
		||||
import com.example.survey.dto.project.DeleteRecordDTO;
 | 
			
		||||
import com.example.survey.dto.project.ModifyProjectDTO;
 | 
			
		||||
import com.example.survey.dto.project.ModifyStateDTO;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.enumeration.RespondentStateEnum;
 | 
			
		||||
import com.example.survey.enumeration.ResultEnum;
 | 
			
		||||
import com.example.survey.service.ProjectService;
 | 
			
		||||
import com.example.survey.vo.ProjectVO;
 | 
			
		||||
import com.example.survey.vo.ResultVO;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -34,36 +34,20 @@ public class ProjectController {
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/projectList")
 | 
			
		||||
    public ResultVO getProject(@RequestParam(value = "name",required = false) String name,
 | 
			
		||||
                               @RequestParam(value = "state", required = false)String state,
 | 
			
		||||
                               @RequestParam(value = "date_gt", required = false) long date_gt,
 | 
			
		||||
                               @RequestParam(value = "date_lt", required = false) long date_lt,
 | 
			
		||||
                               @RequestParam(value = "currentPage") int currentPage,
 | 
			
		||||
                               @RequestParam(value = "pageSize", defaultValue = "30") int pageSize) {
 | 
			
		||||
        Map<String, Object> resultMap = new HashMap<>(16,0.75F);
 | 
			
		||||
        resultMap.put("totalCount", projectService.countProject(name,state));
 | 
			
		||||
        resultMap.put("totalCount", projectService.countProject(name, date_gt, date_lt));
 | 
			
		||||
        resultMap.put("currentPage", currentPage);
 | 
			
		||||
        resultMap.put("pageSize", pageSize);
 | 
			
		||||
        resultMap.put("data", projectService.listProjectLimit(name,state, currentPage, pageSize));
 | 
			
		||||
        resultMap.put("data", projectService.listProjectLimit(name, date_gt, date_lt, currentPage, pageSize));
 | 
			
		||||
        ResultVO resultVO = new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
        resultVO.setData(resultMap);
 | 
			
		||||
        return resultVO;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/respondentCount")
 | 
			
		||||
    public ResultVO getRespondentCount(@RequestParam(value = "name") String name) {
 | 
			
		||||
 | 
			
		||||
        Map<String, Object> resultMap = new HashMap<>(16, 0.75F);
 | 
			
		||||
        resultMap.put("respondentCount", projectService.countRespondent(name));
 | 
			
		||||
        resultMap.put("notInvestigatedRespondentCount", projectService.countRespondent(name, RespondentStateEnum.NOT_INVESTIGATED.getValue()));
 | 
			
		||||
 | 
			
		||||
        ResultVO resultVO = new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
        resultVO.setData(resultMap);
 | 
			
		||||
        return resultVO;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/projectState")
 | 
			
		||||
    public ResultVO modifyProjectState(@RequestBody ModifyStateDTO modifyStateDTO){
 | 
			
		||||
        projectService.modifyProjectState(modifyStateDTO);
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/project")
 | 
			
		||||
    public ResultVO modifyProject(@RequestBody ModifyProjectDTO modifyProjectDTO){
 | 
			
		||||
@ -71,4 +55,16 @@ public class ProjectController {
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/record")
 | 
			
		||||
    public ResultVO addRecord(@RequestBody AddRecordDTO addRecordDTO){
 | 
			
		||||
        projectService.addRecord(addRecordDTO);
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @DeleteMapping("/record")
 | 
			
		||||
    public ResultVO deleteRecord(@RequestBody DeleteRecordDTO deleteRecordDTO){
 | 
			
		||||
        projectService.deleteRecord(deleteRecordDTO);
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -26,19 +26,23 @@ public class RecordController {
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/recordList")
 | 
			
		||||
    public ResultVO getRecord(@RequestParam(value = "idNumber", required = false) String idNumber,
 | 
			
		||||
                              @RequestParam(value = "userPhone", required = false) String userPhone,
 | 
			
		||||
                              @RequestParam(value = "projectName", required = false) String projectName,
 | 
			
		||||
                              @RequestParam(value = "state", required = false) String state,
 | 
			
		||||
                              @RequestParam(value = "version", required = false) String version,
 | 
			
		||||
                              @RequestParam(value = "questionnaireNumber", required = false) String questionnaireNumber,
 | 
			
		||||
                              @RequestParam(value = "currentPage") Integer currentPage,
 | 
			
		||||
                              @RequestParam(value = "templateName", required = false) String templateName,
 | 
			
		||||
                              @RequestParam(value = "templateType", required = false) String templateType,
 | 
			
		||||
                              @RequestParam(value = "uuid", required = false) String uuid,
 | 
			
		||||
                              @RequestParam(value = "submitTimeGt", required = false) long submitTimeGt,
 | 
			
		||||
                              @RequestParam(value = "submitTimeLt", required = false) long submitTimeLt,
 | 
			
		||||
                              @RequestParam(value = "projectName", required = false) String projectName,
 | 
			
		||||
                              @RequestParam(value = "currentPage", defaultValue = "0") Integer currentPage,
 | 
			
		||||
                              @RequestParam(value = "pageSize", defaultValue = "30") Integer pageSize
 | 
			
		||||
    ) {
 | 
			
		||||
        Map<String, Object> resultMap = new HashMap<>(16, 0.75F);
 | 
			
		||||
        resultMap.put("totalCount", recordService.countRecord(idNumber, userPhone, projectName, state, version, questionnaireNumber));
 | 
			
		||||
        resultMap.put("totalCount", recordService.countRecord(idNumber, state, uuid, templateName, templateType,
 | 
			
		||||
                                                                submitTimeGt, submitTimeLt, projectName));
 | 
			
		||||
        resultMap.put("currentPage", currentPage);
 | 
			
		||||
        resultMap.put("pageSize", pageSize);
 | 
			
		||||
        resultMap.put("data", recordService.listRecordLimit(idNumber, userPhone, projectName, state, version, questionnaireNumber, currentPage, pageSize));
 | 
			
		||||
        resultMap.put("data", recordService.listRecordLimit(idNumber, state, uuid, templateName, templateType,
 | 
			
		||||
                            submitTimeGt, submitTimeLt, projectName, currentPage, pageSize));
 | 
			
		||||
        ResultVO resultVo = new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
        resultVo.setData(resultMap);
 | 
			
		||||
 | 
			
		||||
@ -46,23 +50,14 @@ public class RecordController {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/recordValues")
 | 
			
		||||
    public ResultVO getRecordValue(@RequestParam("projectName") String projectName,
 | 
			
		||||
                                   @RequestParam("idNumber") String idNumber,
 | 
			
		||||
                                   @RequestParam(value = "version", required = false) String version) {
 | 
			
		||||
    public ResultVO getRecordValue(@RequestParam("uuid") String uuid
 | 
			
		||||
                                  ) {
 | 
			
		||||
        ResultVO resultVO = new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
        resultVO.setData(recordService.getRecordValues(projectName, idNumber, version));
 | 
			
		||||
        resultVO.setData(recordService.getRecordValues(uuid));
 | 
			
		||||
        return resultVO;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/underReviewRecordCount")
 | 
			
		||||
    public ResultVO countUnderReviewRecord(@RequestParam(value = "userPhone") String userPhone,
 | 
			
		||||
                                           @RequestParam(value = "projectName") String projectName) {
 | 
			
		||||
        ResultVO resultVo = new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
        resultVo.setData(recordService.countRecord(userPhone, projectName));
 | 
			
		||||
        return resultVo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/underReviewRecord")
 | 
			
		||||
    @PutMapping("/review")
 | 
			
		||||
    public ResultVO reviewRecord(@RequestBody ReviewRecordDTO reviewRecordDTO) {
 | 
			
		||||
        recordService.reviewRecord(reviewRecordDTO);
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
@ -95,17 +90,11 @@ public class RecordController {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/record2word")
 | 
			
		||||
    public void record2word(@RequestParam("idNumber")String idNumber,
 | 
			
		||||
                            @RequestParam("projectName")String projectName,
 | 
			
		||||
    public void record2word(@RequestParam("uuid")String uuid,
 | 
			
		||||
                            HttpServletResponse response){
 | 
			
		||||
        recordService.record2word(idNumber,projectName,response);
 | 
			
		||||
        recordService.record2word(uuid,response);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/project")
 | 
			
		||||
    public ResultVO modifyProject(@RequestBody ModifyProjectDTO modifyProjectDTO){
 | 
			
		||||
        recordService.modifyProject(modifyProjectDTO);
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/metaData")
 | 
			
		||||
    public ResultVO modifyMetaData(@RequestBody ModifyMetaDataDTO modifyMetaDataDTO){
 | 
			
		||||
 | 
			
		||||
@ -1,72 +0,0 @@
 | 
			
		||||
package com.example.survey.controller;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.dto.respondent.*;
 | 
			
		||||
import com.example.survey.enumeration.ResultEnum;
 | 
			
		||||
import com.example.survey.service.RespondentService;
 | 
			
		||||
import com.example.survey.vo.ResultVO;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
@RestController
 | 
			
		||||
@RequestMapping("/respondent")
 | 
			
		||||
public class RespondentController {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private RespondentService respondentService;
 | 
			
		||||
 | 
			
		||||
    @PostMapping("/respondent")
 | 
			
		||||
    public ResultVO addRespondent(@RequestBody CreateRespondentDTO createRespondentDTO) {
 | 
			
		||||
        respondentService.createRespondent(createRespondentDTO);
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/respondentList")
 | 
			
		||||
    public ResultVO listRespondent(@RequestParam(value = "userPhone", required = false) String userPhone,
 | 
			
		||||
                                   @RequestParam(value = "projectName", required = false) String projectName,
 | 
			
		||||
                                   @RequestParam(value = "state", required = false) String state,
 | 
			
		||||
                                   @RequestParam(value = "idNumber", required = false) String idNumber,
 | 
			
		||||
                                   @RequestParam(value = "name", required = false) String name,
 | 
			
		||||
                                   @RequestParam(value = "phone", required = false) String phone,
 | 
			
		||||
                                   @RequestParam(value = "province", required = false) String province,
 | 
			
		||||
                                   @RequestParam(value = "city", required = false) String city,
 | 
			
		||||
                                   @RequestParam(value = "county", required = false) String county,
 | 
			
		||||
                                   @RequestParam(value = "currentPage") int currentPage,
 | 
			
		||||
                                   @RequestParam(value = "pageSize", defaultValue = "30") int pageSize
 | 
			
		||||
    ) {
 | 
			
		||||
        Map<String, Object> resultMap = new HashMap<>(16, 0.75F);
 | 
			
		||||
        resultMap.put("totalCount", respondentService.countRespondent(userPhone, state, idNumber, name, phone, province, city, county, projectName));
 | 
			
		||||
        resultMap.put("currentPage", currentPage);
 | 
			
		||||
        resultMap.put("pageSize", pageSize);
 | 
			
		||||
        resultMap.put("data", respondentService.listRespondentLimit(userPhone, state, idNumber, name, phone, province, city, county, projectName, currentPage, pageSize));
 | 
			
		||||
 | 
			
		||||
        ResultVO resultVo = new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
        resultVo.setData(resultMap);
 | 
			
		||||
 | 
			
		||||
        return resultVo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/respondent")
 | 
			
		||||
    public ResultVO modifyRespondent(@RequestBody ModifyRespondentDTO modifyRespondentDTO) {
 | 
			
		||||
        respondentService.modifyRespondent(modifyRespondentDTO);
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @DeleteMapping("/respondent")
 | 
			
		||||
    public ResultVO deleteRespondent(@RequestBody DeleteRespondentDTO deleteRespondentDTO) {
 | 
			
		||||
        respondentService.deleteRespondent(deleteRespondentDTO);
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/user")
 | 
			
		||||
    public ResultVO modifyUser(@RequestBody ModifyRespondentUserDTO modifyRespondentUserDTO) {
 | 
			
		||||
        respondentService.modifyUser(modifyRespondentUserDTO);
 | 
			
		||||
        return new ResultVO(ResultEnum.SUCCESS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +1,6 @@
 | 
			
		||||
package com.example.survey.dao;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.Audit;
 | 
			
		||||
import com.example.survey.vo.AuditVO;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,7 @@
 | 
			
		||||
package com.example.survey.dao;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.MetaData;
 | 
			
		||||
import com.example.survey.vo.MetaDataVO;
 | 
			
		||||
import org.springframework.data.mongodb.core.query.Meta;
 | 
			
		||||
import com.example.survey.enumeration.MetaDataTypeEnum;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@ -42,7 +41,7 @@ public interface MetaDataDao {
 | 
			
		||||
     * @param pageSize 页大小
 | 
			
		||||
     * @return 元数据
 | 
			
		||||
     */
 | 
			
		||||
    List<MetaData> listMetaDataLimit(String name, int offset, int pageSize);
 | 
			
		||||
    List<MetaData> listMetaDataLimit(String name, MetaDataTypeEnum type,  int offset, int pageSize);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据元数据名查询数量
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
package com.example.survey.dao;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.Project;
 | 
			
		||||
import com.example.survey.entity.Record;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@ -42,7 +43,7 @@ public interface ProjectDao {
 | 
			
		||||
     * @param pageSize 页大小
 | 
			
		||||
     * @return 项目列表
 | 
			
		||||
     */
 | 
			
		||||
    List<Project> listProjectLimit(String name,String state, int offset, int pageSize);
 | 
			
		||||
    List<Project> listProjectLimit(String name, long date_gt, long date_lt, int offset, int pageSize);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据项目名查询数量
 | 
			
		||||
@ -51,5 +52,7 @@ public interface ProjectDao {
 | 
			
		||||
     * @param state 状态
 | 
			
		||||
     * @return 数量
 | 
			
		||||
     */
 | 
			
		||||
    long countProject(String name,String state);
 | 
			
		||||
    long countProject(String name, long date_gt, long date_lt);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,10 @@
 | 
			
		||||
package com.example.survey.dao;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.Project;
 | 
			
		||||
import com.example.survey.entity.Record;
 | 
			
		||||
import com.example.survey.entity.Respondent;
 | 
			
		||||
import com.example.survey.entity.User;
 | 
			
		||||
import com.example.survey.enumeration.MetaDataTypeEnum;
 | 
			
		||||
import com.example.survey.enumeration.RecordStateEnum;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@ -19,7 +20,7 @@ public interface RecordDao {
 | 
			
		||||
     * @param state      流调记录状态
 | 
			
		||||
     * @return 是否存在符合条件的流调记录
 | 
			
		||||
     */
 | 
			
		||||
    boolean existRecord(Respondent respondent, Project project, String state);
 | 
			
		||||
    boolean existRecord(String uuid);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据调查对象身份证号与流调记录状态查询流调记录
 | 
			
		||||
@ -29,7 +30,7 @@ public interface RecordDao {
 | 
			
		||||
     * @param state      流调记录状态
 | 
			
		||||
     * @return 流调记录
 | 
			
		||||
     */
 | 
			
		||||
    Record getRecord(Respondent respondent,Project project, String state);
 | 
			
		||||
    Record getRecord(String uuid);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 保存流调记录,若已有相同id的则更新
 | 
			
		||||
@ -43,20 +44,20 @@ public interface RecordDao {
 | 
			
		||||
     *
 | 
			
		||||
     * @param respondent 调查对象
 | 
			
		||||
     * @param user 分配的人员
 | 
			
		||||
     * @param project 项目
 | 
			
		||||
     * @param state 流调记录状态
 | 
			
		||||
     * @param version 流调记录版本
 | 
			
		||||
     * @param questionnaireNumber 问卷编号
 | 
			
		||||
     * @return 数量
 | 
			
		||||
     */
 | 
			
		||||
    long countRecord(Respondent respondent, User user, Project project, String state, String version, String questionnaireNumber);
 | 
			
		||||
    long countRecord(String idNumber, String state, String uuid, 
 | 
			
		||||
                    String templateName, String templateType, 
 | 
			
		||||
                    long submitTimeGt, long submitTimeLt, String projectName);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据筛选条件分页查询流调记录
 | 
			
		||||
     *
 | 
			
		||||
     * @param respondent 调查对象
 | 
			
		||||
     * @param user 分配的人员
 | 
			
		||||
     * @param project 项目
 | 
			
		||||
     * @param state 流调记录状态
 | 
			
		||||
     * @param version 流调记录版本
 | 
			
		||||
     * @param questionnaireNumber 问卷编号
 | 
			
		||||
@ -64,34 +65,9 @@ public interface RecordDao {
 | 
			
		||||
     * @param pageSize 页大小
 | 
			
		||||
     * @return 流调记录
 | 
			
		||||
     */
 | 
			
		||||
    List<Record> listRecordLimit(Respondent respondent, User user, Project project, String state, String version, String questionnaireNumber, int offset, int pageSize);
 | 
			
		||||
    List<Record> listRecordLimit(String idNumber, String state, String uuid, 
 | 
			
		||||
                                String templateName, String templateType, 
 | 
			
		||||
                                long submitTimeGt, long submitTimeLt,  String projectName, int offset, int pageSize);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据筛选条件查询流调记录
 | 
			
		||||
     *
 | 
			
		||||
     * @param respondent 调查对象
 | 
			
		||||
     * @param project 项目
 | 
			
		||||
     * @param version 版本号
 | 
			
		||||
     * @return 流调记录
 | 
			
		||||
     */
 | 
			
		||||
    Record selectRecord(Respondent respondent, Project project, String version);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据筛选条件查询流调记录
 | 
			
		||||
     *
 | 
			
		||||
     * @param respondent 调查对象
 | 
			
		||||
     * @param project 项目
 | 
			
		||||
     * @param states 记录状态
 | 
			
		||||
     * @return 流调记录
 | 
			
		||||
     */
 | 
			
		||||
    Record selectRecord(Respondent respondent, Project project, List<String> states);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询流调记录列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param project 项目
 | 
			
		||||
     * @param respondent 调查对象
 | 
			
		||||
     * @return 流调记录列表
 | 
			
		||||
     */
 | 
			
		||||
    List<Record> listRecord(Project project, Respondent respondent);
 | 
			
		||||
   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,101 +0,0 @@
 | 
			
		||||
package com.example.survey.dao;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.Project;
 | 
			
		||||
import com.example.survey.entity.Respondent;
 | 
			
		||||
import com.example.survey.entity.User;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
public interface RespondentDao {
 | 
			
		||||
    /**
 | 
			
		||||
     * 插入待调查对象
 | 
			
		||||
     *
 | 
			
		||||
     * @param respondent 待调查对象
 | 
			
		||||
     */
 | 
			
		||||
    void saveRespondent(Respondent respondent);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据流调人员电话号码分页查询待调查对象列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param user     分配的人员
 | 
			
		||||
     * @param state    状态
 | 
			
		||||
     * @param idNumber 身份证号
 | 
			
		||||
     * @param name     调查对象姓名
 | 
			
		||||
     * @param phone    调查对象电话
 | 
			
		||||
     * @param province 省份
 | 
			
		||||
     * @param city     城市
 | 
			
		||||
     * @param county   区县
 | 
			
		||||
     * @param project  项目
 | 
			
		||||
     * @param offset   偏移量
 | 
			
		||||
     * @param pageSize 大小
 | 
			
		||||
     * @return 待调查对象列表
 | 
			
		||||
     */
 | 
			
		||||
    List<Respondent> listRespondentLimit(User user, String state, String idNumber, String name, String phone, String province, String city, String county, Project project, int offset, int pageSize);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 判断是否存在对应id的调查对象
 | 
			
		||||
     *
 | 
			
		||||
     * @param idNumber 身份证号
 | 
			
		||||
     * @param project  项目
 | 
			
		||||
     * @return 是否存在该调查对象
 | 
			
		||||
     */
 | 
			
		||||
    boolean existRespondent(String idNumber, Project project);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 判断是否存在符合条件的调查对象
 | 
			
		||||
     *
 | 
			
		||||
     * @param idNumber 身份证号
 | 
			
		||||
     * @param project  项目
 | 
			
		||||
     * @param state    调查对象状态
 | 
			
		||||
     * @return 是否存在该调查对象
 | 
			
		||||
     */
 | 
			
		||||
    boolean existRespondent(String idNumber, Project project, String state);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根绝筛选条件获取调查对象数量
 | 
			
		||||
     *
 | 
			
		||||
     * @param user     分配的人员
 | 
			
		||||
     * @param state    状态
 | 
			
		||||
     * @param idNumber 身份证号
 | 
			
		||||
     * @param name     调查对象姓名
 | 
			
		||||
     * @param phone    调查对象电话
 | 
			
		||||
     * @param province 省份
 | 
			
		||||
     * @param city     城市
 | 
			
		||||
     * @param county   区县
 | 
			
		||||
     * @param project  项目
 | 
			
		||||
     * @return 数量
 | 
			
		||||
     */
 | 
			
		||||
    long countRespondent(User user, String state, String idNumber, String name, String phone, String province, String city, String county, Project project);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据身份证号查询调查对象
 | 
			
		||||
     *
 | 
			
		||||
     * @param idNumber 身份证号
 | 
			
		||||
     * @param project  项目
 | 
			
		||||
     * @return 调查对象
 | 
			
		||||
     */
 | 
			
		||||
    Respondent selectRespondent(String idNumber, Project project);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除调查对象
 | 
			
		||||
     *
 | 
			
		||||
     * @param idNumber 身份证号
 | 
			
		||||
     */
 | 
			
		||||
    void deleteRespondent(String idNumber);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据项目与调查对象状态查询调查对象数量
 | 
			
		||||
     *
 | 
			
		||||
     * @param project 项目
 | 
			
		||||
     * @param state   调查对象状态
 | 
			
		||||
     * @return 调查对象数量
 | 
			
		||||
     */
 | 
			
		||||
    long countRespondent(Project project, String state);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -1,10 +1,8 @@
 | 
			
		||||
package com.example.survey.dao;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.Role;
 | 
			
		||||
import com.example.survey.enumeration.AuthEnum;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 | 
			
		||||
@ -8,8 +8,6 @@ import org.springframework.data.mongodb.core.MongoTemplate;
 | 
			
		||||
import org.springframework.data.mongodb.core.query.Criteria;
 | 
			
		||||
import org.springframework.data.mongodb.core.query.Query;
 | 
			
		||||
import org.springframework.stereotype.Repository;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ package com.example.survey.dao.impl;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.dao.MetaDataDao;
 | 
			
		||||
import com.example.survey.entity.MetaData;
 | 
			
		||||
import com.example.survey.enumeration.MetaDataTypeEnum;
 | 
			
		||||
import com.example.survey.enumeration.ResultEnum;
 | 
			
		||||
import com.example.survey.exception.MetaDataException;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
@ -44,11 +45,14 @@ public class MetaDataDaoImpl implements MetaDataDao {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<MetaData> listMetaDataLimit(String name, int offset, int pageSize) {
 | 
			
		||||
    public List<MetaData> listMetaDataLimit(String name, MetaDataTypeEnum type, int offset, int pageSize) {
 | 
			
		||||
        Criteria criteria = new Criteria();
 | 
			
		||||
        if (name != null) {
 | 
			
		||||
            criteria.and("name").regex(name);
 | 
			
		||||
        }
 | 
			
		||||
        if (type != null) {
 | 
			
		||||
            criteria.and("type").is(type);
 | 
			
		||||
        }
 | 
			
		||||
        Query query = new Query(criteria).skip(offset).limit(pageSize);
 | 
			
		||||
        return mongoTemplate.find(query, MetaData.class);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ package com.example.survey.dao.impl;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.dao.ProjectDao;
 | 
			
		||||
import com.example.survey.entity.Project;
 | 
			
		||||
import com.example.survey.entity.Record;
 | 
			
		||||
import com.example.survey.enumeration.ResultEnum;
 | 
			
		||||
import com.example.survey.exception.ProjectException;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
@ -10,7 +11,9 @@ import org.springframework.data.mongodb.core.query.Criteria;
 | 
			
		||||
import org.springframework.data.mongodb.core.query.Query;
 | 
			
		||||
import org.springframework.stereotype.Repository;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -45,13 +48,16 @@ public class ProjectDaoImpl implements ProjectDao {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<Project> listProjectLimit(String name,String state, int offset, int pageSize) {
 | 
			
		||||
    public List<Project> listProjectLimit(String name, long date_gt, long date_lt, int offset, int pageSize) {
 | 
			
		||||
        Criteria criteria = new Criteria();
 | 
			
		||||
        if (name != null) {
 | 
			
		||||
            criteria.and("name").regex(name);
 | 
			
		||||
        }
 | 
			
		||||
        if(state!=null){
 | 
			
		||||
            criteria.and("state").is(state);
 | 
			
		||||
        if (date_gt != 0) {
 | 
			
		||||
            criteria.and("date").gt(date_gt);
 | 
			
		||||
        }
 | 
			
		||||
        if(date_lt != 0) {
 | 
			
		||||
            criteria.and("date").lt(date_lt);
 | 
			
		||||
        }
 | 
			
		||||
        Query query = new Query(criteria).skip(offset).limit(pageSize);
 | 
			
		||||
        return mongoTemplate.find(query, Project.class);
 | 
			
		||||
@ -59,15 +65,19 @@ public class ProjectDaoImpl implements ProjectDao {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public long countProject(String name,String state) {
 | 
			
		||||
    public long countProject(String name, long date_gt, long date_lt) {
 | 
			
		||||
        Criteria criteria = new Criteria();
 | 
			
		||||
        if (name != null) {
 | 
			
		||||
            criteria.and("name").regex(name);
 | 
			
		||||
        }
 | 
			
		||||
        if(state!=null){
 | 
			
		||||
            criteria.and("state").is(state);
 | 
			
		||||
        if (date_gt != 0) {
 | 
			
		||||
            criteria.and("date").gt(date_gt);
 | 
			
		||||
        }
 | 
			
		||||
        if(date_lt != 0) {
 | 
			
		||||
            criteria.and("date").lt(date_lt);
 | 
			
		||||
        }
 | 
			
		||||
        Query query = new Query(criteria);
 | 
			
		||||
        return mongoTemplate.count(query, Project.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,8 @@
 | 
			
		||||
package com.example.survey.dao.impl;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.dao.MetaDataDao;
 | 
			
		||||
import com.example.survey.dao.RecordDao;
 | 
			
		||||
import com.example.survey.entity.Project;
 | 
			
		||||
import com.example.survey.entity.MetaData;
 | 
			
		||||
import com.example.survey.entity.Record;
 | 
			
		||||
import com.example.survey.entity.Respondent;
 | 
			
		||||
import com.example.survey.entity.User;
 | 
			
		||||
@ -13,6 +14,7 @@ import org.springframework.data.mongodb.core.query.Criteria;
 | 
			
		||||
import org.springframework.data.mongodb.core.query.Query;
 | 
			
		||||
import org.springframework.stereotype.Repository;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -25,23 +27,22 @@ public class RecordDaoImpl implements RecordDao {
 | 
			
		||||
    @Autowired
 | 
			
		||||
    MongoTemplate mongoTemplate;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    MetaDataDao metaDataDao;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean existRecord(Respondent respondent, Project project, String state) {
 | 
			
		||||
    public boolean existRecord(String uuid) {
 | 
			
		||||
        Criteria criteria = new Criteria()
 | 
			
		||||
                .and("respondent.$id").is(respondent.getId())
 | 
			
		||||
                .and("project.$id").is(project.getId())
 | 
			
		||||
                .and("state").is(state);
 | 
			
		||||
                .and("uuid").is(uuid);
 | 
			
		||||
        Query query = new Query(criteria);
 | 
			
		||||
        return mongoTemplate.exists(query, Record.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Record getRecord(Respondent respondent, Project project, String state) {
 | 
			
		||||
    public Record getRecord(String uuid) {
 | 
			
		||||
        Criteria criteria = new Criteria()
 | 
			
		||||
                .and("respondent.$id").is(respondent.getId())
 | 
			
		||||
                .and("project.$id").is(project.getId())
 | 
			
		||||
                .and("state").is(state);
 | 
			
		||||
                    .and("uuid").is(uuid);
 | 
			
		||||
        Query query = new Query(criteria);
 | 
			
		||||
 | 
			
		||||
        return mongoTemplate.findOne(query, Record.class);
 | 
			
		||||
@ -53,90 +54,95 @@ public class RecordDaoImpl implements RecordDao {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public long countRecord(Respondent respondent, User user, Project project, String state, String version, String questionnaireNumber) {
 | 
			
		||||
    public long countRecord(String idNumber, String state, String uuid, 
 | 
			
		||||
                            String templateName, String templateType, 
 | 
			
		||||
                            long submitTimeGt, long submitTimeLt, String projectName) {
 | 
			
		||||
        Criteria criteria = new Criteria();
 | 
			
		||||
        if (respondent != null) {
 | 
			
		||||
            criteria.and("respondent.$id").is(respondent.getId());
 | 
			
		||||
        if (idNumber != null) {
 | 
			
		||||
            criteria.and("idNumber").is(idNumber);
 | 
			
		||||
        }
 | 
			
		||||
        if (user != null) {
 | 
			
		||||
            criteria.and("user.$id").is(user.getId());
 | 
			
		||||
        }
 | 
			
		||||
        if (project != null) {
 | 
			
		||||
            criteria.and("project.$id").is(project.getId());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
       
 | 
			
		||||
        if (state != null) {
 | 
			
		||||
            criteria.and("state").is(state);
 | 
			
		||||
        } else {
 | 
			
		||||
            criteria.and("state").in(RecordStateEnum.REVIEWED.getValue(), RecordStateEnum.UNDER_REVIEW.getValue());
 | 
			
		||||
        } 
 | 
			
		||||
        if (uuid != null) {
 | 
			
		||||
            criteria.and("uuid").is(uuid);
 | 
			
		||||
        }
 | 
			
		||||
        if (templateName != null) {
 | 
			
		||||
            MetaData metaData = metaDataDao.selectMetaData(templateName);
 | 
			
		||||
            if (metaData != null) {
 | 
			
		||||
                criteria.and("metaData.$id").is(metaData.getId());
 | 
			
		||||
            }
 | 
			
		||||
            else{
 | 
			
		||||
                return 0;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (version != null) {
 | 
			
		||||
            criteria.and("version").is(version);
 | 
			
		||||
        if (templateType != null) {
 | 
			
		||||
            criteria.and("metaDataType").is(templateType);
 | 
			
		||||
        }
 | 
			
		||||
        if (questionnaireNumber != null) {
 | 
			
		||||
            criteria.and("value.questionnaireNumber").is(questionnaireNumber);
 | 
			
		||||
 | 
			
		||||
        if (submitTimeGt != 0) {
 | 
			
		||||
            criteria.and("submitTime").gt(submitTimeGt);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (submitTimeLt != 0) {
 | 
			
		||||
            criteria.and("submitTime").lt(submitTimeLt);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if (projectName != null) {
 | 
			
		||||
            criteria.and("projectList").elemMatch(new Criteria().in(projectName));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Query query = new Query(criteria);
 | 
			
		||||
        return mongoTemplate.count(query, Record.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<Record> listRecordLimit(Respondent respondent, User user, Project project, String state, String version, String questionnaireNumber, int offset, int pageSize) {
 | 
			
		||||
    public List<Record> listRecordLimit(String idNumber, String state, String uuid, 
 | 
			
		||||
                                        String templateName, String templateType, 
 | 
			
		||||
                                        long submitTimeGt, long submitTimeLt, String projectName,
 | 
			
		||||
                                        int offset, int pageSize) {
 | 
			
		||||
        Criteria criteria = new Criteria();
 | 
			
		||||
        if (respondent != null) {
 | 
			
		||||
            criteria.and("respondent.$id").is(respondent.getId());
 | 
			
		||||
        if (idNumber != null) {
 | 
			
		||||
            criteria.and("idNumber").is(idNumber);
 | 
			
		||||
        }
 | 
			
		||||
        if (user != null) {
 | 
			
		||||
            criteria.and("user.$id").is(user.getId());
 | 
			
		||||
        }
 | 
			
		||||
        if (project != null) {
 | 
			
		||||
            criteria.and("project.$id").is(project.getId());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
       
 | 
			
		||||
        if (state != null) {
 | 
			
		||||
            criteria.and("state").is(state);
 | 
			
		||||
        } else {
 | 
			
		||||
            criteria.and("state").in(RecordStateEnum.REVIEWED.getValue(), RecordStateEnum.UNDER_REVIEW.getValue());
 | 
			
		||||
        } 
 | 
			
		||||
        if (uuid != null) {
 | 
			
		||||
            criteria.and("uuid").is(uuid);
 | 
			
		||||
        }
 | 
			
		||||
        if (templateName != null) {
 | 
			
		||||
            MetaData metaData = metaDataDao.selectMetaData(templateName);
 | 
			
		||||
            if (metaData != null) {
 | 
			
		||||
                criteria.and("metaData.$id").is(metaData.getId());
 | 
			
		||||
            }
 | 
			
		||||
            else{
 | 
			
		||||
                return new ArrayList<Record>();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (version != null) {
 | 
			
		||||
            criteria.and("version").is(version);
 | 
			
		||||
        if (templateType != null) {
 | 
			
		||||
            criteria.and("metaDataType").is(templateType);
 | 
			
		||||
        }
 | 
			
		||||
        if (questionnaireNumber != null) {
 | 
			
		||||
            criteria.and("value.questionnaireNumber").is(questionnaireNumber);
 | 
			
		||||
 | 
			
		||||
        if (submitTimeGt != 0) {
 | 
			
		||||
            criteria.and("submitTime").gt(submitTimeGt);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (submitTimeLt != 0) {
 | 
			
		||||
            criteria.and("submitTime").lt(submitTimeLt);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if (projectName != null) {
 | 
			
		||||
            criteria.and("projectList").elemMatch(new Criteria().in(projectName));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Query query = new Query(criteria).skip(offset).limit(pageSize);
 | 
			
		||||
        return mongoTemplate.find(query, Record.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Record selectRecord(Respondent respondent, Project project, String version) {
 | 
			
		||||
        Criteria criteria = Criteria
 | 
			
		||||
                .where("respondent.$id").is(respondent.getId())
 | 
			
		||||
                .and("project.$id").is(project.getId());
 | 
			
		||||
        if (version != null) {
 | 
			
		||||
            criteria.and("version").is(version);
 | 
			
		||||
        }
 | 
			
		||||
        Query query = new Query(criteria);
 | 
			
		||||
        return mongoTemplate.findOne(query, Record.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Record selectRecord(Respondent respondent, Project project, List<String> states) {
 | 
			
		||||
        Criteria criteria = new Criteria()
 | 
			
		||||
                .and("respondent.$id").is(respondent.getId())
 | 
			
		||||
                .and("project.$id").is(project.getId())
 | 
			
		||||
                .and("state").in(states);
 | 
			
		||||
        Query query = new Query(criteria);
 | 
			
		||||
        return mongoTemplate.findOne(query, Record.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<Record> listRecord(Project project, Respondent respondent) {
 | 
			
		||||
 | 
			
		||||
        Query query = new Query(Criteria.where("project.$id").is(project.getId())
 | 
			
		||||
                .and("respondent.$id").is(respondent.getId()));
 | 
			
		||||
        return mongoTemplate.find(query,Record.class);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,152 +0,0 @@
 | 
			
		||||
package com.example.survey.dao.impl;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.dao.RespondentDao;
 | 
			
		||||
import com.example.survey.entity.Project;
 | 
			
		||||
import com.example.survey.entity.Respondent;
 | 
			
		||||
import com.example.survey.entity.User;
 | 
			
		||||
import com.example.survey.enumeration.ResultEnum;
 | 
			
		||||
import com.example.survey.exception.RespondentException;
 | 
			
		||||
import lombok.extern.log4j.Log4j2;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.data.mongodb.core.MongoTemplate;
 | 
			
		||||
import org.springframework.data.mongodb.core.query.Criteria;
 | 
			
		||||
import org.springframework.data.mongodb.core.query.Query;
 | 
			
		||||
import org.springframework.stereotype.Repository;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
@Log4j2
 | 
			
		||||
@Repository
 | 
			
		||||
public class RespondentDaoImpl implements RespondentDao {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private MongoTemplate mongoTemplate;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void saveRespondent(Respondent respondent) {
 | 
			
		||||
        try {
 | 
			
		||||
            mongoTemplate.save(respondent);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            throw new RespondentException(ResultEnum.ALREADY_EXIST_RESPONDENT);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<Respondent> listRespondentLimit(User user, String state, String idNumber, String name, String phone, String province, String city, String county, Project project, int offset, int pageSize) {
 | 
			
		||||
        Criteria criteria = new Criteria();
 | 
			
		||||
 | 
			
		||||
        if (idNumber != null) {
 | 
			
		||||
            criteria.and("idNumber").is(idNumber);
 | 
			
		||||
        }
 | 
			
		||||
        if (name != null) {
 | 
			
		||||
            criteria.and("name").regex(name);
 | 
			
		||||
        }
 | 
			
		||||
        if (phone != null) {
 | 
			
		||||
            criteria.and("phone").is(phone);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (province != null) {
 | 
			
		||||
            criteria.and("administrativeArea.province").is(province);
 | 
			
		||||
        }
 | 
			
		||||
        if (city != null) {
 | 
			
		||||
            criteria.and("administrativeArea.city").is(city);
 | 
			
		||||
        }
 | 
			
		||||
        if (county != null) {
 | 
			
		||||
            criteria.and("administrativeArea.county").is(county);
 | 
			
		||||
        }
 | 
			
		||||
        if (project != null) {
 | 
			
		||||
            criteria.and("project.$id").is(project.getId());
 | 
			
		||||
        }
 | 
			
		||||
        if (user != null) {
 | 
			
		||||
            criteria.and("user.$id").is(user.getId());
 | 
			
		||||
        }
 | 
			
		||||
        if (state != null) {
 | 
			
		||||
            criteria.and("state").is(state);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Query query = new Query(criteria).skip(offset).limit(pageSize);
 | 
			
		||||
        return mongoTemplate.find(query, Respondent.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public long countRespondent(User user, String state, String idNumber, String name, String phone, String province, String city, String county, Project project) {
 | 
			
		||||
        Criteria criteria = new Criteria();
 | 
			
		||||
 | 
			
		||||
        if (idNumber != null) {
 | 
			
		||||
            criteria.and("idNumber").is(idNumber);
 | 
			
		||||
        }
 | 
			
		||||
        if (name != null) {
 | 
			
		||||
            criteria.and("name").regex(name);
 | 
			
		||||
        }
 | 
			
		||||
        if (phone != null) {
 | 
			
		||||
            criteria.and("phone").is(phone);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (province != null) {
 | 
			
		||||
            criteria.and("administrativeArea.province").is(province);
 | 
			
		||||
        }
 | 
			
		||||
        if (city != null) {
 | 
			
		||||
            criteria.and("administrativeArea.city").is(city);
 | 
			
		||||
        }
 | 
			
		||||
        if (county != null) {
 | 
			
		||||
            criteria.and("administrativeArea.county").is(county);
 | 
			
		||||
        }
 | 
			
		||||
        if (project != null) {
 | 
			
		||||
            criteria.and("project.$id").is(project.getId());
 | 
			
		||||
        }
 | 
			
		||||
        if (user != null) {
 | 
			
		||||
            criteria.and("user.$id").is(user.getId());
 | 
			
		||||
        }
 | 
			
		||||
        if (state != null) {
 | 
			
		||||
            criteria.and("state").is(state);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Query query = new Query(criteria);
 | 
			
		||||
        return mongoTemplate.count(query, Respondent.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean existRespondent(String idNumber, Project project) {
 | 
			
		||||
        Criteria criteria = Criteria.where("idNumber").is(idNumber);
 | 
			
		||||
        if (project != null) {
 | 
			
		||||
            criteria.and("project.$id").is(project.getId());
 | 
			
		||||
        }
 | 
			
		||||
        Query query = new Query(criteria);
 | 
			
		||||
 | 
			
		||||
        return mongoTemplate.exists(query, Respondent.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean existRespondent(String idNumber, Project project, String state) {
 | 
			
		||||
        Query query = new Query(
 | 
			
		||||
                Criteria.where("idNumber").is(idNumber)
 | 
			
		||||
                        .and("project.$id").is(project.getId())
 | 
			
		||||
                        .and("state").is(state));
 | 
			
		||||
        return mongoTemplate.exists(query, Respondent.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Respondent selectRespondent(String idNumber, Project project) {
 | 
			
		||||
        Query query = new Query(Criteria.where("idNumber").is(idNumber).and("project.$id").is(project.getId()));
 | 
			
		||||
        return mongoTemplate.findOne(query, Respondent.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteRespondent(String idNumber) {
 | 
			
		||||
        Query query = new Query(Criteria.where("idNumber").is(idNumber));
 | 
			
		||||
        mongoTemplate.remove(query, Respondent.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public long countRespondent(Project project, String state) {
 | 
			
		||||
        Criteria criteria = Criteria.where("project.$id").is(project.getId()).and("state").is(state);
 | 
			
		||||
        Query query = new Query(criteria);
 | 
			
		||||
        return mongoTemplate.count(query, Respondent.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -2,7 +2,6 @@ package com.example.survey.dao.impl;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.dao.RoleDao;
 | 
			
		||||
import com.example.survey.entity.Role;
 | 
			
		||||
import com.example.survey.enumeration.AuthEnum;
 | 
			
		||||
import com.example.survey.enumeration.ResultEnum;
 | 
			
		||||
import com.example.survey.exception.RoleException;
 | 
			
		||||
import lombok.extern.log4j.Log4j2;
 | 
			
		||||
@ -13,7 +12,6 @@ import org.springframework.data.mongodb.core.query.Query;
 | 
			
		||||
import org.springframework.stereotype.Repository;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,8 @@
 | 
			
		||||
package com.example.survey.dto.metaData;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.inner.FieldToName;
 | 
			
		||||
import com.example.survey.enumeration.MetaDataTypeEnum;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
@ -13,7 +15,5 @@ import java.util.Map;
 | 
			
		||||
public class CreateMetaDataDTO {
 | 
			
		||||
    private String name;
 | 
			
		||||
    private Map<String,Object> form;
 | 
			
		||||
    private List<FieldToName> fieldToNameList;
 | 
			
		||||
    private Map<String, Object> config;
 | 
			
		||||
    private String wordTemplate;
 | 
			
		||||
    private MetaDataTypeEnum type;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,8 @@
 | 
			
		||||
package com.example.survey.dto.metaData;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.inner.FieldToName;
 | 
			
		||||
import com.example.survey.enumeration.MetaDataTypeEnum;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
@ -13,6 +15,5 @@ import java.util.Map;
 | 
			
		||||
public class ModifyMetaDataDTO {
 | 
			
		||||
    private String name;
 | 
			
		||||
    private Map<String,Object> form;
 | 
			
		||||
    private List<FieldToName> fieldToNameList;
 | 
			
		||||
    private Map<String, Object> config;
 | 
			
		||||
    private MetaDataTypeEnum type;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,12 +1,13 @@
 | 
			
		||||
package com.example.survey.dto.project;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class ModifyStateDTO {
 | 
			
		||||
public class AddRecordDTO {
 | 
			
		||||
    private String name;
 | 
			
		||||
    private String state;
 | 
			
		||||
    private String uuid;
 | 
			
		||||
}
 | 
			
		||||
@ -16,31 +16,9 @@ public class CreateProjectDTO {
 | 
			
		||||
     */
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 描述信息
 | 
			
		||||
     */
 | 
			
		||||
    private String detail;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 元数据名字
 | 
			
		||||
     */
 | 
			
		||||
    private String metaDataName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 开始时间
 | 
			
		||||
     */
 | 
			
		||||
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 | 
			
		||||
    private Date startTime;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 结束时间
 | 
			
		||||
     */
 | 
			
		||||
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 | 
			
		||||
    private Date endTime;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 负责人电话号码
 | 
			
		||||
     */
 | 
			
		||||
    private String userPhone;
 | 
			
		||||
    private long date;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,13 @@
 | 
			
		||||
package com.example.survey.dto.project;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class DeleteRecordDTO {
 | 
			
		||||
    private String name;
 | 
			
		||||
    private String uuid;
 | 
			
		||||
}
 | 
			
		||||
@ -11,10 +11,5 @@ import java.util.Date;
 | 
			
		||||
@Data
 | 
			
		||||
public class ModifyProjectDTO {
 | 
			
		||||
    private String name;
 | 
			
		||||
    private String detail;
 | 
			
		||||
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 | 
			
		||||
    private Date startTime;
 | 
			
		||||
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 | 
			
		||||
    private Date endTime;
 | 
			
		||||
    private String userPhone;
 | 
			
		||||
    private long date;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -7,11 +7,7 @@ import lombok.Data;
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class DeleteRecordDTO {
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
 | 
			
		||||
    private String userPhone;
 | 
			
		||||
 | 
			
		||||
    private String uuid;
 | 
			
		||||
    private String phone;
 | 
			
		||||
    private String msg;
 | 
			
		||||
 | 
			
		||||
    private String projectName;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,5 @@
 | 
			
		||||
package com.example.survey.dto.record;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.inner.AdministrativeArea;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -8,9 +7,6 @@ import lombok.Data;
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class ModifyMetaDataDTO {
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
 | 
			
		||||
    private String projectName;
 | 
			
		||||
 | 
			
		||||
    private String uuid;
 | 
			
		||||
    private String metaDataName;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -8,12 +8,6 @@ import lombok.Data;
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class ModifyProjectDTO {
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
    private String phone;
 | 
			
		||||
    private String name;
 | 
			
		||||
    private String msg;
 | 
			
		||||
    private String gender;
 | 
			
		||||
    private AdministrativeArea administrativeArea;
 | 
			
		||||
    private String projectName;
 | 
			
		||||
    private String newProjectName;
 | 
			
		||||
    private String uuid;
 | 
			
		||||
    private String project;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -3,16 +3,14 @@ package com.example.survey.dto.record;
 | 
			
		||||
import lombok.*;
 | 
			
		||||
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class ModifyRecordDTO {
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
    private String uuid;
 | 
			
		||||
    private Map<String, Object> values;
 | 
			
		||||
    private String userPhone;
 | 
			
		||||
    private String msg;
 | 
			
		||||
    private String projectName;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -11,8 +11,7 @@ import lombok.*;
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
public class ReviewRecordDTO {
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
    private String projectName;
 | 
			
		||||
    private String uuid;
 | 
			
		||||
    private Boolean pass;
 | 
			
		||||
    private String msg;
 | 
			
		||||
    private String reviewerPhone;
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,8 @@ import java.util.Map;
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
public class SubmitRecordDTO {
 | 
			
		||||
    private String uuid;
 | 
			
		||||
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
 | 
			
		||||
    private Map<String, Object> values;
 | 
			
		||||
@ -23,6 +25,6 @@ public class SubmitRecordDTO {
 | 
			
		||||
 | 
			
		||||
    private String metaDataName;
 | 
			
		||||
 | 
			
		||||
    private String projectName;
 | 
			
		||||
    // private String projectName;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,59 +0,0 @@
 | 
			
		||||
package com.example.survey.dto.respondent;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.Project;
 | 
			
		||||
import com.example.survey.entity.inner.AdministrativeArea;
 | 
			
		||||
import lombok.*;
 | 
			
		||||
import org.springframework.data.mongodb.core.index.Indexed;
 | 
			
		||||
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
@Getter
 | 
			
		||||
@Setter
 | 
			
		||||
@ToString
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
public class CreateRespondentDTO {
 | 
			
		||||
    /**
 | 
			
		||||
     * 身份证号
 | 
			
		||||
     */
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 电话
 | 
			
		||||
     */
 | 
			
		||||
    private String phone;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 姓名
 | 
			
		||||
     */
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 备注
 | 
			
		||||
     */
 | 
			
		||||
    private String msg;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 性别
 | 
			
		||||
     */
 | 
			
		||||
    private String gender;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 行政区划
 | 
			
		||||
     */
 | 
			
		||||
    private AdministrativeArea administrativeArea;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 分配人员
 | 
			
		||||
     */
 | 
			
		||||
    private String userPhone;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 项目名集合
 | 
			
		||||
     */
 | 
			
		||||
    private String projectName;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -1,18 +0,0 @@
 | 
			
		||||
package com.example.survey.dto.respondent;
 | 
			
		||||
 | 
			
		||||
import lombok.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
@Getter
 | 
			
		||||
@Setter
 | 
			
		||||
@ToString
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
public class DeleteRespondentDTO {
 | 
			
		||||
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
    private String projectName;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -1,52 +0,0 @@
 | 
			
		||||
package com.example.survey.dto.respondent;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.inner.AdministrativeArea;
 | 
			
		||||
import lombok.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
@Getter
 | 
			
		||||
@Setter
 | 
			
		||||
@ToString
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
public class ModifyRespondentDTO {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 身份证号
 | 
			
		||||
     */
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 电话
 | 
			
		||||
     */
 | 
			
		||||
    private String phone;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 姓名
 | 
			
		||||
     */
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 备注
 | 
			
		||||
     */
 | 
			
		||||
    private String msg;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 性别
 | 
			
		||||
     */
 | 
			
		||||
    private String gender;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 行政区划
 | 
			
		||||
     */
 | 
			
		||||
    private AdministrativeArea administrativeArea;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 项目名
 | 
			
		||||
     */
 | 
			
		||||
    private String projectName;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -1,13 +0,0 @@
 | 
			
		||||
package com.example.survey.dto.respondent;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class ModifyRespondentUserDTO {
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
    private String projectName;
 | 
			
		||||
    private String userPhone;
 | 
			
		||||
}
 | 
			
		||||
@ -2,7 +2,6 @@ package com.example.survey.dto.role;
 | 
			
		||||
 | 
			
		||||
import lombok.*;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
package com.example.survey.dto.user;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.Department;
 | 
			
		||||
// import com.example.survey.entity.Department;
 | 
			
		||||
import com.example.survey.entity.inner.AdministrativeArea;
 | 
			
		||||
import lombok.*;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
// import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@ package com.example.survey.dto.user;
 | 
			
		||||
 | 
			
		||||
import lombok.*;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
// import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
@ -2,10 +2,11 @@ package com.example.survey.entity;
 | 
			
		||||
 | 
			
		||||
import lombok.*;
 | 
			
		||||
import org.bson.types.ObjectId;
 | 
			
		||||
import org.springframework.data.mongodb.core.index.Indexed;
 | 
			
		||||
// import org.springframework.data.mongodb.core.index.Indexed;
 | 
			
		||||
import org.springframework.data.mongodb.core.mapping.DBRef;
 | 
			
		||||
import org.springframework.data.mongodb.core.mapping.Document;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,10 @@
 | 
			
		||||
package com.example.survey.entity;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.inner.FieldToName;
 | 
			
		||||
import com.example.survey.enumeration.MetaDataTypeEnum;
 | 
			
		||||
 | 
			
		||||
import lombok.*;
 | 
			
		||||
import org.bson.types.ObjectId;
 | 
			
		||||
import org.springframework.data.mongodb.core.index.Indexed;
 | 
			
		||||
import org.springframework.data.mongodb.core.mapping.Document;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
@ -15,9 +17,9 @@ import java.util.Map;
 | 
			
		||||
@Document(collection = "metaData")
 | 
			
		||||
public class MetaData {
 | 
			
		||||
    private ObjectId id;
 | 
			
		||||
    private String type;
 | 
			
		||||
    
 | 
			
		||||
    @Indexed(unique = true)
 | 
			
		||||
    private String name;
 | 
			
		||||
    private Map<String,Object> form;
 | 
			
		||||
    private List<FieldToName> fieldToNameList;
 | 
			
		||||
    private String wordTemplate;
 | 
			
		||||
    private Map<String, Object> config;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,9 @@ import org.springframework.data.mongodb.core.index.Indexed;
 | 
			
		||||
import org.springframework.data.mongodb.core.mapping.DBRef;
 | 
			
		||||
import org.springframework.data.mongodb.core.mapping.Document;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -29,39 +31,7 @@ public class Project {
 | 
			
		||||
    @Indexed(unique = true)
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 描述信息
 | 
			
		||||
     */
 | 
			
		||||
    private String detail;
 | 
			
		||||
    private long date;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 调查对象数量
 | 
			
		||||
     */
 | 
			
		||||
    private long respondentCount;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 未调查调查对象数量
 | 
			
		||||
     */
 | 
			
		||||
    private long notInvestigatedRespondentCount;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 负责人
 | 
			
		||||
     */
 | 
			
		||||
    @DBRef
 | 
			
		||||
    private User user;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 开始时间
 | 
			
		||||
     */
 | 
			
		||||
    private Date startTime;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 结束时间
 | 
			
		||||
     */
 | 
			
		||||
    private Date endTime;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 状态
 | 
			
		||||
     */
 | 
			
		||||
    private String state;
 | 
			
		||||
    private long count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,12 +1,17 @@
 | 
			
		||||
package com.example.survey.entity;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.inner.Operation;
 | 
			
		||||
import com.example.survey.enumeration.MetaDataTypeEnum;
 | 
			
		||||
import com.example.survey.enumeration.RecordStateEnum;
 | 
			
		||||
 | 
			
		||||
import lombok.*;
 | 
			
		||||
import org.bson.types.ObjectId;
 | 
			
		||||
import org.springframework.data.annotation.Id;
 | 
			
		||||
import org.springframework.data.mongodb.core.index.Indexed;
 | 
			
		||||
import org.springframework.data.mongodb.core.mapping.DBRef;
 | 
			
		||||
import org.springframework.data.mongodb.core.mapping.Document;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
@ -21,11 +26,10 @@ public class Record {
 | 
			
		||||
    @Id
 | 
			
		||||
    private ObjectId id;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 调查对象
 | 
			
		||||
     */
 | 
			
		||||
    @DBRef
 | 
			
		||||
    private Respondent respondent;
 | 
			
		||||
    @Indexed(unique = true)
 | 
			
		||||
    private String uuid;
 | 
			
		||||
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 用于存放前端传的字段
 | 
			
		||||
@ -43,24 +47,19 @@ public class Record {
 | 
			
		||||
     */
 | 
			
		||||
    private List<Operation> operationList;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 记录版本
 | 
			
		||||
     */
 | 
			
		||||
    private String version;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 记录状态
 | 
			
		||||
     */
 | 
			
		||||
    private String state;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 项目集合
 | 
			
		||||
     */
 | 
			
		||||
    @DBRef
 | 
			
		||||
    private Project project;
 | 
			
		||||
 | 
			
		||||
    @DBRef
 | 
			
		||||
    private MetaData metaData;
 | 
			
		||||
 | 
			
		||||
    private String metaDataType;
 | 
			
		||||
 | 
			
		||||
    private List<String> projectList;
 | 
			
		||||
 | 
			
		||||
    private long submitTime;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -65,13 +65,7 @@ public class Respondent {
 | 
			
		||||
     */
 | 
			
		||||
    @DBRef
 | 
			
		||||
    private User user;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 项目
 | 
			
		||||
     */
 | 
			
		||||
    @DBRef
 | 
			
		||||
    private Project project;
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * 调查对象状态
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,7 @@ import org.springframework.data.mongodb.core.index.Indexed;
 | 
			
		||||
import org.springframework.data.mongodb.core.mapping.DBRef;
 | 
			
		||||
import org.springframework.data.mongodb.core.mapping.Document;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
@ -30,11 +30,6 @@ public class Operation {
 | 
			
		||||
    @DBRef
 | 
			
		||||
    private User user;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 版本信息
 | 
			
		||||
     */
 | 
			
		||||
    private String version;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 备注
 | 
			
		||||
     */
 | 
			
		||||
@ -46,45 +41,41 @@ public class Operation {
 | 
			
		||||
    private String result;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public static Operation submitOp(User user, String msg, String version) {
 | 
			
		||||
    public static Operation submitOp(User user, String msg) {
 | 
			
		||||
        Operation submit = new Operation();
 | 
			
		||||
        submit.setType(OpTypeEnum.SUBMIT.getValue());
 | 
			
		||||
        submit.setTime(new Date());
 | 
			
		||||
        submit.setUser(user);
 | 
			
		||||
        submit.setVersion(version);
 | 
			
		||||
        submit.setMsg(msg);
 | 
			
		||||
        submit.setResult("提交成功");
 | 
			
		||||
        return submit;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static Operation modifyOp(User user, String msg, String version) {
 | 
			
		||||
    public static Operation modifyOp(User user, String msg) {
 | 
			
		||||
        Operation modify = new Operation();
 | 
			
		||||
        modify.setType(OpTypeEnum.MODIFY.getValue());
 | 
			
		||||
        modify.setTime(new Date());
 | 
			
		||||
        modify.setUser(user);
 | 
			
		||||
        modify.setVersion(version);
 | 
			
		||||
        modify.setMsg(msg);
 | 
			
		||||
        modify.setResult("提交修改");
 | 
			
		||||
        return modify;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static Operation deleteOp(User user, String msg, String version) {
 | 
			
		||||
    public static Operation deleteOp(User user, String msg) {
 | 
			
		||||
        Operation delete = new Operation();
 | 
			
		||||
        delete.setType(OpTypeEnum.DELETE.getValue());
 | 
			
		||||
        delete.setTime(new Date());
 | 
			
		||||
        delete.setUser(user);
 | 
			
		||||
        delete.setVersion(version);
 | 
			
		||||
        delete.setMsg(msg);
 | 
			
		||||
        delete.setResult("删除成功");
 | 
			
		||||
        return delete;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static Operation reviewOp(User user, String msg, String version, boolean result) {
 | 
			
		||||
    public static Operation reviewOp(User user, String msg, boolean result) {
 | 
			
		||||
        Operation review = new Operation();
 | 
			
		||||
        review.setType(OpTypeEnum.REVIEW.getValue());
 | 
			
		||||
        review.setTime(new Date());
 | 
			
		||||
        review.setUser(user);
 | 
			
		||||
        review.setVersion(version);
 | 
			
		||||
        review.setMsg(msg);
 | 
			
		||||
        if (result) {
 | 
			
		||||
            review.setResult("审核通过");
 | 
			
		||||
@ -99,7 +90,6 @@ public class Operation {
 | 
			
		||||
        cover.setType(OpTypeEnum.COVER.getValue());
 | 
			
		||||
        cover.setTime(new Date());
 | 
			
		||||
        cover.setUser(user);
 | 
			
		||||
        cover.setVersion(version);
 | 
			
		||||
        cover.setMsg("因重复提交覆盖");
 | 
			
		||||
        cover.setResult("被覆盖");
 | 
			
		||||
        return cover;
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,30 @@
 | 
			
		||||
package com.example.survey.enumeration;
 | 
			
		||||
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.LinkedList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public enum MetaDataTypeEnum {
 | 
			
		||||
 | 
			
		||||
    META_CONFIG("配置"),
 | 
			
		||||
 | 
			
		||||
    RECORD_TEMP("流调记录"),
 | 
			
		||||
 | 
			
		||||
    REPORT_TEMP("流调报告")
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
    private final String value;
 | 
			
		||||
 | 
			
		||||
    MetaDataTypeEnum(String value) {
 | 
			
		||||
        this.value = value;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getValue() {
 | 
			
		||||
        return value;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -9,7 +9,7 @@ public enum RecordStateEnum {
 | 
			
		||||
    /**
 | 
			
		||||
     * 已审核状态
 | 
			
		||||
     */
 | 
			
		||||
    REVIEWED("已审核"),
 | 
			
		||||
    REVIEWED("已通过"),
 | 
			
		||||
    /**
 | 
			
		||||
     * 待审核状态
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@ import com.example.survey.dto.metaData.CreateMetaDataDTO;
 | 
			
		||||
import com.example.survey.dto.metaData.DeleteMetaDataDTO;
 | 
			
		||||
import com.example.survey.dto.metaData.ModifyMetaDataDTO;
 | 
			
		||||
import com.example.survey.entity.MetaData;
 | 
			
		||||
import com.example.survey.enumeration.MetaDataTypeEnum;
 | 
			
		||||
import com.example.survey.vo.MetaDataVO;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
@ -27,7 +28,7 @@ public interface MetaDataService {
 | 
			
		||||
     * @param pageSize 页大小
 | 
			
		||||
     * @return 元数据名称
 | 
			
		||||
     */
 | 
			
		||||
    List<String> listMetaDataNameLimit(String name, int currentPage, int pageSize);
 | 
			
		||||
    List<String> listMetaDataNameLimit(String name, MetaDataTypeEnum type, int currentPage, int pageSize);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据元数据名查询数量
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,10 @@
 | 
			
		||||
package com.example.survey.service;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.dto.project.AddRecordDTO;
 | 
			
		||||
import com.example.survey.dto.project.CreateProjectDTO;
 | 
			
		||||
import com.example.survey.dto.project.DeleteRecordDTO;
 | 
			
		||||
import com.example.survey.dto.project.ModifyProjectDTO;
 | 
			
		||||
import com.example.survey.dto.project.ModifyStateDTO;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.vo.ProjectVO;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
@ -12,7 +14,6 @@ import java.util.List;
 | 
			
		||||
 */
 | 
			
		||||
public interface ProjectService {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 创建新项目
 | 
			
		||||
     *
 | 
			
		||||
@ -20,7 +21,6 @@ public interface ProjectService {
 | 
			
		||||
     */
 | 
			
		||||
    void createProject(CreateProjectDTO createProjectDTO);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据筛选条件分页查询项目
 | 
			
		||||
     *
 | 
			
		||||
@ -30,7 +30,7 @@ public interface ProjectService {
 | 
			
		||||
     * @param pageSize    页大小
 | 
			
		||||
     * @return 项目vo
 | 
			
		||||
     */
 | 
			
		||||
    List<ProjectVO> listProjectLimit(String name, String state, int currentPage, int pageSize);
 | 
			
		||||
    List<ProjectVO> listProjectLimit(String name, long date_gt, long date_lt, int currentPage, int pageSize);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据项目名查询调查对象数量
 | 
			
		||||
@ -38,23 +38,7 @@ public interface ProjectService {
 | 
			
		||||
     * @param name 项目名
 | 
			
		||||
     * @return 调查对象数量
 | 
			
		||||
     */
 | 
			
		||||
    long countRespondent(String name);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据项目名与调查对象状态查询调查对象数量
 | 
			
		||||
     *
 | 
			
		||||
     * @param name            项目名
 | 
			
		||||
     * @param respondentState 调查对象状态
 | 
			
		||||
     * @return 调查对象数量
 | 
			
		||||
     */
 | 
			
		||||
    long countRespondent(String name, String respondentState);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改项目状态
 | 
			
		||||
     *
 | 
			
		||||
     * @param modifyStateDTO 修改信息
 | 
			
		||||
     */
 | 
			
		||||
    void modifyProjectState(ModifyStateDTO modifyStateDTO);
 | 
			
		||||
    long countRecord(String name);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改项目数据
 | 
			
		||||
@ -64,11 +48,16 @@ public interface ProjectService {
 | 
			
		||||
    void modifyProject(ModifyProjectDTO modifyProjectDTO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据项目吗查询数量
 | 
			
		||||
     * 根据项目名查询数量
 | 
			
		||||
     *
 | 
			
		||||
     * @param name  项目名
 | 
			
		||||
     * @param state 项目状态
 | 
			
		||||
     * @return 数量
 | 
			
		||||
     */
 | 
			
		||||
    long countProject(String name, String state);
 | 
			
		||||
    long countProject(String name, long date_gt, long date_lt);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    void addRecord(AddRecordDTO addRecordDTO);
 | 
			
		||||
 | 
			
		||||
    void deleteRecord(DeleteRecordDTO deleteRecordDTO);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -13,16 +13,7 @@ import java.util.Map;
 | 
			
		||||
 */
 | 
			
		||||
public interface RecordService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据筛选条件查询流调记录数量
 | 
			
		||||
     *
 | 
			
		||||
     * @param userPhone 用户电话号码
 | 
			
		||||
     * @param projectName 项目名
 | 
			
		||||
     * @return 符合筛选条件的调查记录数量
 | 
			
		||||
     */
 | 
			
		||||
    long countRecord(String userPhone, String projectName);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
    /**
 | 
			
		||||
     * 审核流调记录
 | 
			
		||||
     *
 | 
			
		||||
@ -55,8 +46,9 @@ public interface RecordService {
 | 
			
		||||
     * @param questionnaireNumber 问卷编号
 | 
			
		||||
     * @return 流调记录数量
 | 
			
		||||
     */
 | 
			
		||||
    long countRecord(String idNumber, String userPhone, String projectName, String state, String version, String questionnaireNumber);
 | 
			
		||||
 | 
			
		||||
    long countRecord(String idNumber, String state, String uuid, 
 | 
			
		||||
                    String templateName, String templateType, 
 | 
			
		||||
                    long submitTimeGt, long submitTimeLt, String projectName);
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据筛选条件查询流调记录
 | 
			
		||||
     *
 | 
			
		||||
@ -70,7 +62,9 @@ public interface RecordService {
 | 
			
		||||
     * @param pageSize            页大小
 | 
			
		||||
     * @return 流调记录VO
 | 
			
		||||
     */
 | 
			
		||||
    List<RecordVO> listRecordLimit(String idNumber, String userPhone, String projectName, String state, String version, String questionnaireNumber, int currentPage, int pageSize);
 | 
			
		||||
    List<RecordVO> listRecordLimit(String idNumber, String state, String uuid, 
 | 
			
		||||
                                String templateName, String templateType, 
 | 
			
		||||
                                long submitTimeGt, long submitTimeLt,  String projectName, int offset, int pageSize);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据筛选条件查询流调记录的values
 | 
			
		||||
@ -80,7 +74,7 @@ public interface RecordService {
 | 
			
		||||
     * @param version 版本号
 | 
			
		||||
     * @return 流调记录的values
 | 
			
		||||
     */
 | 
			
		||||
    Map<String,Object> getRecordValues(String projectName, String idNumber, String version);
 | 
			
		||||
    Map<String,Object> getRecordValues(String uuid);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 上传文件
 | 
			
		||||
@ -104,14 +98,8 @@ public interface RecordService {
 | 
			
		||||
     * @param projectName 项目名
 | 
			
		||||
     * @param response 响应
 | 
			
		||||
     */
 | 
			
		||||
    void record2word(String idNumber, String projectName, HttpServletResponse response);
 | 
			
		||||
    void record2word(String idNumber, HttpServletResponse response);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改流调记录对应项目
 | 
			
		||||
     *
 | 
			
		||||
     * @param modifyProjectDTO 修改信息
 | 
			
		||||
     */
 | 
			
		||||
    void modifyProject(ModifyProjectDTO modifyProjectDTO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改流调记录所绑定元数据
 | 
			
		||||
 | 
			
		||||
@ -1,74 +0,0 @@
 | 
			
		||||
package com.example.survey.service;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.dto.respondent.*;
 | 
			
		||||
import com.example.survey.vo.RespondentVO;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
public interface RespondentService {
 | 
			
		||||
    /**
 | 
			
		||||
     * 创建待调查对象
 | 
			
		||||
     *
 | 
			
		||||
     * @param createRespondentDTO 待调查对象信息
 | 
			
		||||
     * @return 是否创建成功
 | 
			
		||||
     */
 | 
			
		||||
    void createRespondent(CreateRespondentDTO createRespondentDTO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据流调人员电话号码分页查询待调查对象数据
 | 
			
		||||
     *
 | 
			
		||||
     * @param userPhone   分配的人员电话号码
 | 
			
		||||
     * @param state       状态
 | 
			
		||||
     * @param idNumber    身份证号
 | 
			
		||||
     * @param name        调查对象姓名
 | 
			
		||||
     * @param phone       调查对象电话
 | 
			
		||||
     * @param province    省份
 | 
			
		||||
     * @param city        城市
 | 
			
		||||
     * @param county      区县
 | 
			
		||||
     * @param projectName 项目名
 | 
			
		||||
     * @param currentPage 当前页数
 | 
			
		||||
     * @param pageSize    页大小
 | 
			
		||||
     * @return 页数据
 | 
			
		||||
     */
 | 
			
		||||
    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);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据筛选条件查询调查对象数量
 | 
			
		||||
     *
 | 
			
		||||
     * @param userPhone   分配的人员电话号码
 | 
			
		||||
     * @param state       状态
 | 
			
		||||
     * @param idNumber    身份证号
 | 
			
		||||
     * @param name        调查对象姓名
 | 
			
		||||
     * @param phone       调查对象电话
 | 
			
		||||
     * @param province    省份
 | 
			
		||||
     * @param city        城市
 | 
			
		||||
     * @param county      区县
 | 
			
		||||
     * @param projectName 项目名
 | 
			
		||||
     * @return 数量
 | 
			
		||||
     */
 | 
			
		||||
    long countRespondent(String userPhone, String state, String idNumber, String name, String phone, String province, String city, String county, String projectName);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改调查对象信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param modifyRespondentDTO 修改信息
 | 
			
		||||
     */
 | 
			
		||||
    void modifyRespondent(ModifyRespondentDTO modifyRespondentDTO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 分配人员
 | 
			
		||||
     *
 | 
			
		||||
     * @param modifyRespondentUserDTO 绑定用户信息
 | 
			
		||||
     */
 | 
			
		||||
    void modifyUser(ModifyRespondentUserDTO modifyRespondentUserDTO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除调查对象
 | 
			
		||||
     *
 | 
			
		||||
     * @param deleteRespondentDTO 删除信息
 | 
			
		||||
     */
 | 
			
		||||
    void deleteRespondent(DeleteRespondentDTO deleteRespondentDTO);
 | 
			
		||||
}
 | 
			
		||||
@ -5,6 +5,7 @@ import com.example.survey.dto.metaData.CreateMetaDataDTO;
 | 
			
		||||
import com.example.survey.dto.metaData.DeleteMetaDataDTO;
 | 
			
		||||
import com.example.survey.dto.metaData.ModifyMetaDataDTO;
 | 
			
		||||
import com.example.survey.entity.MetaData;
 | 
			
		||||
import com.example.survey.enumeration.MetaDataTypeEnum;
 | 
			
		||||
import com.example.survey.enumeration.ResultEnum;
 | 
			
		||||
import com.example.survey.exception.MetaDataException;
 | 
			
		||||
import com.example.survey.service.MetaDataService;
 | 
			
		||||
@ -43,15 +44,16 @@ public class MetaDataServiceImpl implements MetaDataService {
 | 
			
		||||
        MetaData metaData = new MetaData();
 | 
			
		||||
        metaData.setName(createMetaDataDTO.getName());
 | 
			
		||||
        metaData.setForm(createMetaDataDTO.getForm());
 | 
			
		||||
        metaData.setFieldToNameList(createMetaDataDTO.getFieldToNameList());
 | 
			
		||||
        metaData.setConfig(createMetaDataDTO.getConfig());
 | 
			
		||||
        metaData.setWordTemplate(createMetaDataDTO.getWordTemplate());
 | 
			
		||||
        
 | 
			
		||||
        // metaData.setFieldToNameList(createMetaDataDTO.getFieldToNameList());
 | 
			
		||||
        // metaData.setConfig(createMetaDataDTO.getConfig());
 | 
			
		||||
        // metaData.setWordTemplate(createMetaDataDTO.getWordTemplate());
 | 
			
		||||
        metaDataDao.saveMetaData(metaData);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<String> listMetaDataNameLimit(String name, int currentPage, int pageSize) {
 | 
			
		||||
        List<MetaData> metaDataList = metaDataDao.listMetaDataLimit(name, currentPage * pageSize, pageSize);
 | 
			
		||||
    public List<String> listMetaDataNameLimit(String name, MetaDataTypeEnum type, int currentPage, int pageSize) {
 | 
			
		||||
        List<MetaData> metaDataList = metaDataDao.listMetaDataLimit(name, type, currentPage * pageSize, pageSize);
 | 
			
		||||
        if (metaDataList == null) {
 | 
			
		||||
            return new ArrayList<>();
 | 
			
		||||
        }
 | 
			
		||||
@ -77,8 +79,8 @@ public class MetaDataServiceImpl implements MetaDataService {
 | 
			
		||||
        }
 | 
			
		||||
        MetaData metaData = metaDataDao.selectMetaData(modifyMetaDataDTO.getName());
 | 
			
		||||
        metaData.setForm(modifyMetaDataDTO.getForm());
 | 
			
		||||
        metaData.setFieldToNameList(modifyMetaDataDTO.getFieldToNameList());
 | 
			
		||||
        metaData.setConfig(modifyMetaDataDTO.getConfig());
 | 
			
		||||
        // metaData.setFieldToNameList(modifyMetaDataDTO.getFieldToNameList());
 | 
			
		||||
        // metaData.setConfig(modifyMetaDataDTO.getConfig());
 | 
			
		||||
        metaDataDao.saveMetaData(metaData);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -136,7 +138,7 @@ public class MetaDataServiceImpl implements MetaDataService {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        metaData.setWordTemplate(path + newName);
 | 
			
		||||
        // metaData.setWordTemplate(path + newName);
 | 
			
		||||
        metaDataDao.saveMetaData(metaData);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,18 +2,22 @@ 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.RecordDao;
 | 
			
		||||
import com.example.survey.dao.UserDao;
 | 
			
		||||
import com.example.survey.dto.project.AddRecordDTO;
 | 
			
		||||
import com.example.survey.dto.project.CreateProjectDTO;
 | 
			
		||||
import com.example.survey.dto.project.DeleteRecordDTO;
 | 
			
		||||
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.Record;
 | 
			
		||||
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.RecordException;
 | 
			
		||||
import com.example.survey.exception.UserException;
 | 
			
		||||
import com.example.survey.service.ProjectService;
 | 
			
		||||
import com.example.survey.vo.ProjectVO;
 | 
			
		||||
@ -32,109 +36,128 @@ public class ProjectServiceImpl implements ProjectService {
 | 
			
		||||
    @Autowired
 | 
			
		||||
    ProjectDao projectDao;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    RespondentDao respondentDao;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    MetaDataDao metaDataDao;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    UserDao userDao;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    RecordDao recordDao;
 | 
			
		||||
 | 
			
		||||
    @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);
 | 
			
		||||
        // project.setStartTime(createProjectDTO.getStartTime());
 | 
			
		||||
        // project.setEndTime(createProjectDTO.getEndTime());
 | 
			
		||||
        // project.setDetail(createProjectDTO.getDetail());
 | 
			
		||||
        project.setDate(createProjectDTO.getDate());
 | 
			
		||||
        // project.setState(ProjectStateEnum.IN_PROGRESS.getValue());
 | 
			
		||||
        // project.setUser(user);
 | 
			
		||||
        projectDao.saveProject(project);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<ProjectVO> listProjectLimit(String name, String state, int currentPage, int pageSize) {
 | 
			
		||||
        return projectDao.listProjectLimit(name, state, currentPage * pageSize, pageSize).stream()
 | 
			
		||||
    public List<ProjectVO> listProjectLimit(String name, long date_gt, long date_lt, int currentPage, int pageSize) {
 | 
			
		||||
        return projectDao.listProjectLimit(name, date_gt, date_lt, 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());
 | 
			
		||||
                    projectVO.setUsername(project.getUser().getUsername());
 | 
			
		||||
                    projectVO.setDate(project.getDate());
 | 
			
		||||
                    projectVO.setCount(project.getCount());
 | 
			
		||||
                    // projectVO.setDetail(project.getDetail());
 | 
			
		||||
                    // projectVO.setStartTime(project.getStartTime());
 | 
			
		||||
                    // projectVO.setEndTime(project.getEndTime());
 | 
			
		||||
                    // projectVO.setUsername(project.getUser().getUsername());
 | 
			
		||||
                    // if (project.getMetaData() != null) {
 | 
			
		||||
                    //     projectVO.setMetaDataName(project.getMetaData().getName());
 | 
			
		||||
                    // }
 | 
			
		||||
                    projectVO.setState(project.getState());
 | 
			
		||||
                    // projectVO.setState(project.getState());
 | 
			
		||||
                    return projectVO;
 | 
			
		||||
                }).collect(Collectors.toList());
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public long countRespondent(String name) {
 | 
			
		||||
    public long countRecord(String name) {
 | 
			
		||||
        if (!projectDao.existProject(name)) {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        return projectDao.selectProject(name).getRespondentCount();
 | 
			
		||||
        
 | 
			
		||||
        return recordDao.countRecord(null, null, null, 
 | 
			
		||||
                                    null, null, 0, 0, name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @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());
 | 
			
		||||
        // 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);
 | 
			
		||||
        // project.setDetail(modifyProjectDTO.getDetail());
 | 
			
		||||
        // project.setStartTime(modifyProjectDTO.getStartTime());
 | 
			
		||||
        // project.setEndTime(modifyProjectDTO.getEndTime());
 | 
			
		||||
        // project.setUser(user);
 | 
			
		||||
        projectDao.saveProject(project);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public long countProject(String name, String state) {
 | 
			
		||||
        return projectDao.countProject(name, state);
 | 
			
		||||
    public long countProject(String name, long date_gt, long date_lt) {
 | 
			
		||||
        return projectDao.countProject(name, date_gt, date_lt);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void addRecord(AddRecordDTO addRecordDTO) {
 | 
			
		||||
        if(!projectDao.existProject(addRecordDTO.getName()))
 | 
			
		||||
        {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        if(!recordDao.existRecord(addRecordDTO.getUuid()))
 | 
			
		||||
        {
 | 
			
		||||
            throw new RecordException(ResultEnum.NOT_EXIST_RECORD);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Project project = projectDao.selectProject(addRecordDTO.getName());
 | 
			
		||||
 | 
			
		||||
        Record record = recordDao.getRecord(addRecordDTO.getUuid());
 | 
			
		||||
        if(!record.getProjectList().contains(project.getName()))
 | 
			
		||||
        {
 | 
			
		||||
           List<String> t =  record.getProjectList();
 | 
			
		||||
            t.add(project.getName());
 | 
			
		||||
            record.setProjectList(t);
 | 
			
		||||
            recordDao.saveRecord(record);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteRecord(DeleteRecordDTO deleteRecordDTO) {
 | 
			
		||||
        if(!projectDao.existProject(deleteRecordDTO.getName()))
 | 
			
		||||
        {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        if(!recordDao.existRecord(deleteRecordDTO.getUuid()))
 | 
			
		||||
        {
 | 
			
		||||
            throw new RecordException(ResultEnum.NOT_EXIST_RECORD);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Project project = projectDao.selectProject(deleteRecordDTO.getName());
 | 
			
		||||
 | 
			
		||||
        Record record = recordDao.getRecord(deleteRecordDTO.getUuid());
 | 
			
		||||
        if(record.getProjectList().contains(project.getName()))
 | 
			
		||||
        {
 | 
			
		||||
           List<String> t =  record.getProjectList();
 | 
			
		||||
            t.remove(project.getName());
 | 
			
		||||
            record.setProjectList(t);
 | 
			
		||||
            recordDao.saveRecord(record);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -33,13 +33,9 @@ import java.util.stream.Collectors;
 | 
			
		||||
@Service
 | 
			
		||||
public class RecordServiceImpl implements RecordService {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private RecordDao recordDao;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private RespondentDao respondentDao;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private UserDao userDao;
 | 
			
		||||
 | 
			
		||||
@ -55,18 +51,6 @@ public class RecordServiceImpl implements RecordService {
 | 
			
		||||
    @Value("${file.url}")
 | 
			
		||||
    private String url;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public long countRecord(String userPhone, 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 recordDao.countRecord(null, user, project, RecordStateEnum.UNDER_REVIEW.getValue(), null, null);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void reviewRecord(ReviewRecordDTO reviewRecordDTO) {
 | 
			
		||||
@ -74,23 +58,15 @@ public class RecordServiceImpl implements RecordService {
 | 
			
		||||
            throw new UserException(ResultEnum.NOT_EXIST_USER);
 | 
			
		||||
        }
 | 
			
		||||
        User user = userDao.selectUser(reviewRecordDTO.getReviewerPhone());
 | 
			
		||||
        if (!projectDao.existProject(reviewRecordDTO.getProjectName())) {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        Project project = projectDao.selectProject(reviewRecordDTO.getProjectName());
 | 
			
		||||
        if (!respondentDao.existRespondent(reviewRecordDTO.getIdNumber(), project, RespondentStateEnum.INVESTIGATED.getValue())) {
 | 
			
		||||
            throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
 | 
			
		||||
        }
 | 
			
		||||
        Respondent respondent = respondentDao.selectRespondent(reviewRecordDTO.getIdNumber(), project);
 | 
			
		||||
        if (!recordDao.existRecord(respondent, project, RecordStateEnum.UNDER_REVIEW.getValue())) {
 | 
			
		||||
        
 | 
			
		||||
        if (!recordDao.existRecord(reviewRecordDTO.getUuid())) {
 | 
			
		||||
            throw new RecordException(ResultEnum.NOT_EXIST_RECORD);
 | 
			
		||||
        }
 | 
			
		||||
        Record record = recordDao.getRecord(respondent, project, RecordStateEnum.UNDER_REVIEW.getValue());
 | 
			
		||||
 | 
			
		||||
        Record record = recordDao.getRecord( reviewRecordDTO.getUuid());
 | 
			
		||||
 | 
			
		||||
        record.setState(reviewRecordDTO.getPass() ? RecordStateEnum.REVIEWED.getValue() : RecordStateEnum.NOT_PASS.getValue());
 | 
			
		||||
        record.setVersion(UUID.randomUUID().toString());
 | 
			
		||||
        Operation reviewOp = Operation.reviewOp(user, reviewRecordDTO.getMsg(), record.getVersion(), reviewRecordDTO.getPass());
 | 
			
		||||
        // record.setVersion(UUID.randomUUID().toString());
 | 
			
		||||
        Operation reviewOp = Operation.reviewOp(user, reviewRecordDTO.getMsg(), reviewRecordDTO.getPass());
 | 
			
		||||
        List<Operation> opList = record.getOperationList();
 | 
			
		||||
        opList.add(reviewOp);
 | 
			
		||||
        record.setOperationList(opList);
 | 
			
		||||
@ -104,44 +80,18 @@ public class RecordServiceImpl implements RecordService {
 | 
			
		||||
            throw new UserException(ResultEnum.NOT_EXIST_USER);
 | 
			
		||||
        }
 | 
			
		||||
        User user = userDao.selectUser(modifyRecordDTO.getUserPhone());
 | 
			
		||||
        if (!projectDao.existProject(modifyRecordDTO.getProjectName())) {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        Project project = projectDao.selectProject(modifyRecordDTO.getProjectName());
 | 
			
		||||
        if (!respondentDao.existRespondent(modifyRecordDTO.getIdNumber(), project, RespondentStateEnum.INVESTIGATED.getValue())) {
 | 
			
		||||
            throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
 | 
			
		||||
        }
 | 
			
		||||
        Respondent respondent = respondentDao.selectRespondent(modifyRecordDTO.getIdNumber(), project);
 | 
			
		||||
 | 
			
		||||
        List<String> stateList = new ArrayList<>();
 | 
			
		||||
        stateList.add(RecordStateEnum.UNDER_REVIEW.getValue());
 | 
			
		||||
        stateList.add(RecordStateEnum.REVIEWED.getValue());
 | 
			
		||||
        Record record = recordDao.selectRecord(respondent, project, stateList);
 | 
			
		||||
      
 | 
			
		||||
        Record record = recordDao.getRecord(modifyRecordDTO.getUuid());
 | 
			
		||||
        if (record == null) {
 | 
			
		||||
            throw new RecordException(ResultEnum.NOT_EXIST_RECORD);
 | 
			
		||||
        }
 | 
			
		||||
        List<Operation> operationList = record.getOperationList();
 | 
			
		||||
        Operation modifyOp = Operation.modifyOp(user, modifyRecordDTO.getMsg());
 | 
			
		||||
        operationList.add(modifyOp);
 | 
			
		||||
 | 
			
		||||
        String newVersion = UUID.randomUUID().toString();
 | 
			
		||||
        List<Operation> oldOperationList = record.getOperationList();
 | 
			
		||||
        List<Operation> newOperationList = record.getOperationList();
 | 
			
		||||
 | 
			
		||||
        Operation coverOp = Operation.coverOp(user, newVersion);
 | 
			
		||||
        oldOperationList.add(coverOp);
 | 
			
		||||
 | 
			
		||||
        Operation modifyOp = Operation.modifyOp(user, modifyRecordDTO.getMsg(), newVersion);
 | 
			
		||||
        newOperationList.add(modifyOp);
 | 
			
		||||
 | 
			
		||||
        record.setOperationList(oldOperationList);
 | 
			
		||||
        record.setState(RecordStateEnum.FILED.getValue());
 | 
			
		||||
        recordDao.saveRecord(record);
 | 
			
		||||
 | 
			
		||||
        record.setId(null);
 | 
			
		||||
        record.setValues(modifyRecordDTO.getValues());
 | 
			
		||||
        record.setOperationList(newOperationList);
 | 
			
		||||
        record.setOperationList(operationList);
 | 
			
		||||
        record.setState(RecordStateEnum.UNDER_REVIEW.getValue());
 | 
			
		||||
 | 
			
		||||
        recordDao.saveRecord(record);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@ -150,128 +100,66 @@ public class RecordServiceImpl implements RecordService {
 | 
			
		||||
            throw new UserException(ResultEnum.NOT_EXIST_USER);
 | 
			
		||||
        }
 | 
			
		||||
        User user = userDao.selectUser(submitRecordDTO.getUserPhone());
 | 
			
		||||
        if (!projectDao.existProject(submitRecordDTO.getProjectName())) {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        Project project = projectDao.selectProject(submitRecordDTO.getProjectName());
 | 
			
		||||
 | 
			
		||||
        if (!metaDataDao.existMetaData(submitRecordDTO.getMetaDataName())) {
 | 
			
		||||
            throw new MetaDataException(ResultEnum.NOT_EXIST_METADATA);
 | 
			
		||||
        }
 | 
			
		||||
        MetaData metaData = metaDataDao.selectMetaData(submitRecordDTO.getMetaDataName());
 | 
			
		||||
        if (!respondentDao.existRespondent(submitRecordDTO.getIdNumber(), project)) {
 | 
			
		||||
            throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
 | 
			
		||||
        }
 | 
			
		||||
        Respondent respondent = respondentDao.selectRespondent(submitRecordDTO.getIdNumber(), project);
 | 
			
		||||
        //设置调查对象为已调查
 | 
			
		||||
        respondent.setState(RespondentStateEnum.INVESTIGATED.getValue());
 | 
			
		||||
        respondentDao.saveRespondent(respondent);
 | 
			
		||||
 | 
			
		||||
        List<String> stateList = new ArrayList<>();
 | 
			
		||||
        stateList.add(RecordStateEnum.UNDER_REVIEW.getValue());
 | 
			
		||||
        stateList.add(RecordStateEnum.REVIEWED.getValue());
 | 
			
		||||
        Record record = recordDao.selectRecord(respondent, project, stateList);
 | 
			
		||||
 | 
			
		||||
        String newVersion = UUID.randomUUID().toString();
 | 
			
		||||
        List<Operation> oldOperationList = new ArrayList<>();
 | 
			
		||||
        List<Operation> newOperationList = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
        if (record != null) {
 | 
			
		||||
            oldOperationList = record.getOperationList();
 | 
			
		||||
            newOperationList = record.getOperationList();
 | 
			
		||||
            Operation coverOp = Operation.coverOp(user, newVersion);
 | 
			
		||||
            oldOperationList.add(coverOp);
 | 
			
		||||
            record.setOperationList(oldOperationList);
 | 
			
		||||
            record.setState(RecordStateEnum.FILED.getValue());
 | 
			
		||||
            recordDao.saveRecord(record);
 | 
			
		||||
        } else {
 | 
			
		||||
            record = new Record();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        record.setProject(project);
 | 
			
		||||
        Record record = new Record();
 | 
			
		||||
        
 | 
			
		||||
        record.setUser(user);
 | 
			
		||||
        record.setValues(submitRecordDTO.getValues());
 | 
			
		||||
        Operation submitOp = Operation.submitOp(user, submitRecordDTO.getMsg(), newVersion);
 | 
			
		||||
        newOperationList.add(submitOp);
 | 
			
		||||
        record.setOperationList(newOperationList);
 | 
			
		||||
        Operation submitOp = Operation.submitOp(user, submitRecordDTO.getMsg());
 | 
			
		||||
        List<Operation> operations = new ArrayList<>();
 | 
			
		||||
        operations.add(submitOp);
 | 
			
		||||
        record.setOperationList(operations);
 | 
			
		||||
        record.setUuid(submitRecordDTO.getUuid());
 | 
			
		||||
        record.setIdNumber(submitRecordDTO.getIdNumber());
 | 
			
		||||
        record.setState(RecordStateEnum.UNDER_REVIEW.getValue());
 | 
			
		||||
        record.setMetaData(metaData);
 | 
			
		||||
        record.setVersion(newVersion);
 | 
			
		||||
        record.setMetaDataType(metaData.getType());
 | 
			
		||||
        record.setSubmitTime(System.currentTimeMillis());
 | 
			
		||||
        recordDao.saveRecord(record);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public long countRecord(String idNumber, String userPhone, String projectName, String state, String version, String questionnaireNumber) {
 | 
			
		||||
        if (projectName != null && !projectDao.existProject(projectName)) {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        Project project = projectDao.selectProject(projectName);
 | 
			
		||||
 | 
			
		||||
        if (userPhone != null && !userDao.existUser(userPhone)) {
 | 
			
		||||
            throw new UserException(ResultEnum.NOT_EXIST_USER);
 | 
			
		||||
        }
 | 
			
		||||
        User user = userDao.selectUser(userPhone);
 | 
			
		||||
 | 
			
		||||
        if (idNumber != null && !respondentDao.existRespondent(idNumber, project)) {
 | 
			
		||||
            throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Respondent respondent = respondentDao.selectRespondent(idNumber, project);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        return recordDao.countRecord(respondent, user, project, state, version, questionnaireNumber);
 | 
			
		||||
    public long countRecord(String idNumber, String state, String uuid, 
 | 
			
		||||
                String templateName, String templateType, 
 | 
			
		||||
                long submitTimeGt, long submitTimeLt, String projectName) {
 | 
			
		||||
       
 | 
			
		||||
        return recordDao.countRecord(idNumber, state, uuid, templateName, templateType, submitTimeGt, submitTimeLt, projectName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<RecordVO> listRecordLimit(String idNumber, String userPhone, String projectName, String state, String version, String questionnaireNumber, int currentPage, int pageSize) {
 | 
			
		||||
        if (userPhone != null && !userDao.existUser(userPhone)) {
 | 
			
		||||
            throw new UserException(ResultEnum.NOT_EXIST_USER);
 | 
			
		||||
        }
 | 
			
		||||
        User user = userDao.selectUser(userPhone);
 | 
			
		||||
 | 
			
		||||
        if (projectName != null && !projectDao.existProject(projectName)) {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        Project project = projectDao.selectProject(projectName);
 | 
			
		||||
 | 
			
		||||
        if (idNumber != null && !respondentDao.existRespondent(idNumber, project)) {
 | 
			
		||||
            throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
 | 
			
		||||
        }
 | 
			
		||||
        Respondent respondent = respondentDao.selectRespondent(idNumber, project);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        List<Record> recordList = recordDao.listRecordLimit(respondent, user, project, state, version, questionnaireNumber, currentPage * pageSize, pageSize);
 | 
			
		||||
    public List<RecordVO> listRecordLimit(String idNumber, String state, String uuid, 
 | 
			
		||||
            String templateName, String templateType, 
 | 
			
		||||
            long submitTimeGt, long submitTimeLt, String projectName, int currentPage, int pageSize) {
 | 
			
		||||
      
 | 
			
		||||
        List<Record> recordList = recordDao.listRecordLimit(idNumber, state, uuid, templateName, templateType, submitTimeGt, submitTimeLt, projectName, currentPage * pageSize, pageSize);
 | 
			
		||||
        return recordList.stream().map(record -> {
 | 
			
		||||
            RecordVO recordVO = new RecordVO();
 | 
			
		||||
            recordVO.setIdNumber(record.getRespondent().getIdNumber());
 | 
			
		||||
            recordVO.setUserPhone(record.getUser().getPhone());
 | 
			
		||||
            recordVO.setProjectName(record.getProject().getName());
 | 
			
		||||
            recordVO.setIdNumber(record.getIdNumber());
 | 
			
		||||
            recordVO.setUuid(record.getUuid());
 | 
			
		||||
            recordVO.setTemplate(record.getMetaData().getName());
 | 
			
		||||
            recordVO.setOperationInfoList(record.getOperationList().stream().map(op -> {
 | 
			
		||||
                OperationInfo operationInfo = new OperationInfo();
 | 
			
		||||
                operationInfo.setType(op.getType());
 | 
			
		||||
                operationInfo.setTime(op.getTime());
 | 
			
		||||
                operationInfo.setUserPhone(op.getUser().getPhone());
 | 
			
		||||
                operationInfo.setPersonId(op.getUser().getPhone());
 | 
			
		||||
                operationInfo.setPersonName(op.getUser().getUsername());
 | 
			
		||||
                operationInfo.setMsg(op.getMsg());
 | 
			
		||||
                operationInfo.setResult(op.getResult());
 | 
			
		||||
                operationInfo.setVersion(op.getVersion());
 | 
			
		||||
                return operationInfo;
 | 
			
		||||
            }).collect(Collectors.toList()));
 | 
			
		||||
            recordVO.setVersion(record.getVersion());
 | 
			
		||||
            recordVO.setState(record.getState());
 | 
			
		||||
            return recordVO;
 | 
			
		||||
        }).collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Map<String, Object> getRecordValues(String projectName, String idNumber, String version) {
 | 
			
		||||
        if (!projectDao.existProject(projectName)) {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        Project project = projectDao.selectProject(projectName);
 | 
			
		||||
        if (!respondentDao.existRespondent(idNumber, project)) {
 | 
			
		||||
            throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
 | 
			
		||||
        }
 | 
			
		||||
        Respondent respondent = respondentDao.selectRespondent(idNumber, project);
 | 
			
		||||
        Record record = recordDao.selectRecord(respondent, project, version);
 | 
			
		||||
    public Map<String, Object> getRecordValues(String uuid) {
 | 
			
		||||
        
 | 
			
		||||
        Record record = recordDao.getRecord(uuid);
 | 
			
		||||
        if (record == null) {
 | 
			
		||||
            throw new RecordException(ResultEnum.NOT_EXIST_RECORD);
 | 
			
		||||
        }
 | 
			
		||||
@ -317,29 +205,17 @@ public class RecordServiceImpl implements RecordService {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteRecord(DeleteRecordDTO deleteRecordDTO) {
 | 
			
		||||
        if (!userDao.existUser(deleteRecordDTO.getUserPhone())) {
 | 
			
		||||
        if (!userDao.existUser(deleteRecordDTO.getPhone())) {
 | 
			
		||||
            throw new UserException(ResultEnum.NOT_EXIST_USER);
 | 
			
		||||
        }
 | 
			
		||||
        User user = userDao.selectUser(deleteRecordDTO.getUserPhone());
 | 
			
		||||
        if (!projectDao.existProject(deleteRecordDTO.getProjectName())) {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        Project project = projectDao.selectProject(deleteRecordDTO.getProjectName());
 | 
			
		||||
        if (!respondentDao.existRespondent(deleteRecordDTO.getIdNumber(), project)) {
 | 
			
		||||
            throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
 | 
			
		||||
        }
 | 
			
		||||
        Respondent respondent = respondentDao.selectRespondent(deleteRecordDTO.getIdNumber(), project);
 | 
			
		||||
 | 
			
		||||
        List<String> stateList = new ArrayList<>();
 | 
			
		||||
        stateList.add(RecordStateEnum.UNDER_REVIEW.getValue());
 | 
			
		||||
        stateList.add(RecordStateEnum.REVIEWED.getValue());
 | 
			
		||||
        stateList.add(RecordStateEnum.NOT_PASS.getValue());
 | 
			
		||||
        Record record = recordDao.selectRecord(respondent, project, stateList);
 | 
			
		||||
        User user = userDao.selectUser(deleteRecordDTO.getPhone());
 | 
			
		||||
    
 | 
			
		||||
        Record record = recordDao.getRecord(deleteRecordDTO.getUuid());
 | 
			
		||||
        if (record == null) {
 | 
			
		||||
            throw new RecordException(ResultEnum.NOT_EXIST_RECORD);
 | 
			
		||||
        }
 | 
			
		||||
        List<Operation> operationList = record.getOperationList();
 | 
			
		||||
        Operation deleteOp = Operation.deleteOp(user, deleteRecordDTO.getMsg(), record.getVersion());
 | 
			
		||||
        Operation deleteOp = Operation.deleteOp(user, deleteRecordDTO.getMsg());
 | 
			
		||||
        operationList.add(deleteOp);
 | 
			
		||||
        record.setOperationList(operationList);
 | 
			
		||||
        record.setState(RecordStateEnum.FILED.getValue());
 | 
			
		||||
@ -347,70 +223,21 @@ public class RecordServiceImpl implements RecordService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void record2word(String idNumber, String projectName, HttpServletResponse response) {
 | 
			
		||||
    public void record2word(String idNumber, HttpServletResponse response) {
 | 
			
		||||
        //TODO 导出为word
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void modifyProject(ModifyProjectDTO modifyProjectDTO) {
 | 
			
		||||
        if (!projectDao.existProject(modifyProjectDTO.getProjectName())) {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        Project project = projectDao.selectProject(modifyProjectDTO.getProjectName());
 | 
			
		||||
        if(!projectDao.existProject(modifyProjectDTO.getNewProjectName())){
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        Project newProject = projectDao.selectProject(modifyProjectDTO.getNewProjectName());
 | 
			
		||||
        if (!respondentDao.existRespondent(modifyProjectDTO.getIdNumber(), project)) {
 | 
			
		||||
            throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
 | 
			
		||||
        }
 | 
			
		||||
        Respondent respondent = respondentDao.selectRespondent(modifyProjectDTO.getIdNumber(), project);
 | 
			
		||||
 | 
			
		||||
        List<String> states = new ArrayList<>();
 | 
			
		||||
        states.add(RecordStateEnum.REVIEWED.getValue());
 | 
			
		||||
        states.add(RecordStateEnum.UNDER_REVIEW.getValue());
 | 
			
		||||
        Record record = recordDao.selectRecord(respondent, project, states);
 | 
			
		||||
 | 
			
		||||
        //如果新项目已经存在调查对象则覆盖
 | 
			
		||||
        respondent.setId(null);
 | 
			
		||||
        respondent.setPhone(modifyProjectDTO.getPhone());
 | 
			
		||||
        respondent.setName(modifyProjectDTO.getName());
 | 
			
		||||
        respondent.setMsg(modifyProjectDTO.getMsg());
 | 
			
		||||
        respondent.setGender(modifyProjectDTO.getGender());
 | 
			
		||||
        respondent.setAdministrativeArea(modifyProjectDTO.getAdministrativeArea());
 | 
			
		||||
        respondent.setProject(newProject);
 | 
			
		||||
        if(respondentDao.existRespondent(modifyProjectDTO.getIdNumber(),newProject)){
 | 
			
		||||
            respondent.setId(respondentDao.selectRespondent(modifyProjectDTO.getIdNumber(), project).getId());
 | 
			
		||||
        }
 | 
			
		||||
        respondentDao.saveRespondent(respondent);
 | 
			
		||||
 | 
			
		||||
        record.setRespondent(respondent);
 | 
			
		||||
        record.setProject(project);
 | 
			
		||||
        recordDao.saveRecord(record);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void modifyMetaData(ModifyMetaDataDTO modifyMetaDataDTO) {
 | 
			
		||||
        if (!projectDao.existProject(modifyMetaDataDTO.getProjectName())) {
 | 
			
		||||
            throw new ProjectException(ResultEnum.NOT_EXIST_PROJECT);
 | 
			
		||||
        }
 | 
			
		||||
        Project project = projectDao.selectProject(modifyMetaDataDTO.getProjectName());
 | 
			
		||||
       
 | 
			
		||||
        if (!metaDataDao.existMetaData(modifyMetaDataDTO.getMetaDataName())) {
 | 
			
		||||
            throw new MetaDataException(ResultEnum.NOT_EXIST_METADATA);
 | 
			
		||||
        }
 | 
			
		||||
        MetaData metaData = metaDataDao.selectMetaData(modifyMetaDataDTO.getMetaDataName());
 | 
			
		||||
        if (!respondentDao.existRespondent(modifyMetaDataDTO.getIdNumber(), project)) {
 | 
			
		||||
            throw new RespondentException(ResultEnum.NOT_EXIST_RESPONDENT);
 | 
			
		||||
        }
 | 
			
		||||
        Respondent respondent = respondentDao.selectRespondent(modifyMetaDataDTO.getIdNumber(), project);
 | 
			
		||||
 | 
			
		||||
        List<String> states = new ArrayList<>();
 | 
			
		||||
        states.add(RecordStateEnum.REVIEWED.getValue());
 | 
			
		||||
        states.add(RecordStateEnum.UNDER_REVIEW.getValue());
 | 
			
		||||
        Record record = recordDao.selectRecord(respondent, project, states);
 | 
			
		||||
       
 | 
			
		||||
        Record record = recordDao.getRecord(modifyMetaDataDTO.getUuid());
 | 
			
		||||
        record.setMetaData(metaData);
 | 
			
		||||
        recordDao.saveRecord(record);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,175 +0,0 @@
 | 
			
		||||
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);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -57,7 +57,7 @@ public class WordUtil {
 | 
			
		||||
 | 
			
		||||
    public static void export2Word(HttpServletResponse response, MetaData metaData, Record record){
 | 
			
		||||
        Map<String, Object> values = record.getValues();
 | 
			
		||||
        String templatePath = metaData.getWordTemplate();
 | 
			
		||||
        // String templatePath = metaData.getWordTemplate();
 | 
			
		||||
        for (Map.Entry<String, Object> entry : metaData.getForm().entrySet()) {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,7 @@ import java.util.Map;
 | 
			
		||||
public class MetaDataVO {
 | 
			
		||||
    private String name;
 | 
			
		||||
    private Map<String,Object> form;
 | 
			
		||||
    private List<FieldToName> fieldToNameList;
 | 
			
		||||
    private Map<String, Object> config;
 | 
			
		||||
    private String type;
 | 
			
		||||
    // private List<FieldToName> fieldToNameList;
 | 
			
		||||
    // private Map<String, Object> config;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,8 @@ package com.example.survey.vo;
 | 
			
		||||
 | 
			
		||||
import com.example.survey.entity.MetaData;
 | 
			
		||||
import com.example.survey.entity.Respondent;
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonFormat;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import org.springframework.data.mongodb.core.index.Indexed;
 | 
			
		||||
import org.springframework.data.mongodb.core.mapping.DBRef;
 | 
			
		||||
@ -19,33 +21,7 @@ public class ProjectVO {
 | 
			
		||||
     */
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 描述信息
 | 
			
		||||
     */
 | 
			
		||||
    private String detail;
 | 
			
		||||
    private long date;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 元数据
 | 
			
		||||
     */
 | 
			
		||||
    private String metaDataName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 开始时间
 | 
			
		||||
     */
 | 
			
		||||
    private Date startTime;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 结束时间
 | 
			
		||||
     */
 | 
			
		||||
    private Date endTime;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 负责人姓名
 | 
			
		||||
     */
 | 
			
		||||
    private String username;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 状态
 | 
			
		||||
     */
 | 
			
		||||
    private String state;
 | 
			
		||||
    private long count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -14,15 +14,15 @@ public class RecordVO {
 | 
			
		||||
 | 
			
		||||
    private String idNumber;
 | 
			
		||||
 | 
			
		||||
    private String userPhone;
 | 
			
		||||
    private List<String> projectList;
 | 
			
		||||
 | 
			
		||||
    private String projectName;
 | 
			
		||||
    private String template;
 | 
			
		||||
    
 | 
			
		||||
    private String uuid;
 | 
			
		||||
 | 
			
		||||
    private long submitTime;
 | 
			
		||||
 | 
			
		||||
    private List<OperationInfo> operationInfoList;
 | 
			
		||||
 | 
			
		||||
    private String version;
 | 
			
		||||
 | 
			
		||||
    private String state;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,8 @@ import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonFormat;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Pope
 | 
			
		||||
 */
 | 
			
		||||
@ -17,17 +19,15 @@ public class OperationInfo {
 | 
			
		||||
    /**
 | 
			
		||||
     * 时间
 | 
			
		||||
     */
 | 
			
		||||
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 | 
			
		||||
    private Date time;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 操作者
 | 
			
		||||
     */
 | 
			
		||||
    private String userPhone;
 | 
			
		||||
    private String personId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 版本信息
 | 
			
		||||
     */
 | 
			
		||||
    private String version;
 | 
			
		||||
    private String personName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 备注
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user