Commit 46a42f91 authored by 梁钊炜's avatar 梁钊炜

更新问卷生成、上报、汇总

文件上传,下载
parent 92cf9193
......@@ -204,7 +204,6 @@ public class FileCtrl {
} catch (Exception var23) {
var23.printStackTrace();
}
}
@RequestMapping({"/upload"})
......
package com.tiptimes.ctrl;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.*;
@RestController
@RequestMapping("/api")
public class FileUploadController {
@RequestMapping("/upload")
public Object upload(@RequestParam("file") MultipartFile[] files) throws IOException {
Properties props = new Properties();
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("file.properties");
props.load(inputStream);
String UPLOAD_PATH = props.getProperty("UPLOAD_PATH");
if (files == null || files.length == 0) {
return "请选择文件上传";
}
Map<String,String> fileUrls = new HashMap<>();
for (MultipartFile file : files) {
if (!file.isEmpty()) {
// 获取原始文件名
String originalFileName = file.getOriginalFilename();
// 生成时间戳
String timeStamp = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
// 在文件名中加入时间戳,确保文件名唯一
String fileNameWithTimeStamp = timeStamp + "_" + originalFileName;
// 确保文件目录存在
File destDir = new File(UPLOAD_PATH);
if (!destDir.exists()) {
destDir.mkdirs();
}
// 文件上传后保存的路径
String destPath = UPLOAD_PATH + fileNameWithTimeStamp;
try {
// 保存文件
file.transferTo(new File(destPath));
// 添加上传文件的路径,并进行URL编码
fileUrls.put(fileNameWithTimeStamp,destPath);
} catch (IOException e) {
e.printStackTrace();
return "文件上传失败:" + e.getMessage();
}
}
}
return fileUrls;
}
@RequestMapping("/delete")
@ResponseBody
public boolean deleteFile(String fileName) throws IOException {
Properties props = new Properties();
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("file.properties");
props.load(inputStream);
String UPLOAD_PATH = props.getProperty("UPLOAD_PATH");
String filePathToDelete = UPLOAD_PATH + fileName;
File fileToDelete = new File(filePathToDelete);
if (fileToDelete.exists()) {
try {
return fileToDelete.delete();
} catch (SecurityException e) {
e.printStackTrace();
return false;
}
} else {
return false;
}
}
@RequestMapping("/download")
@ResponseBody
public ResponseEntity<Resource> downloadFile(@RequestParam("fileName") String fileName) {
try {
Properties props = new Properties();
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("file.properties");
props.load(inputStream);
String UPLOAD_PATH = props.getProperty("UPLOAD_PATH");
String newName = "";
int lastDotIndex = fileName.lastIndexOf(".");
if (lastDotIndex != -1 && lastDotIndex < fileName.length() - 1) {
newName = UUID.randomUUID() + fileName.substring(lastDotIndex);
}
Path filePath = Paths.get(UPLOAD_PATH).resolve(fileName);
Resource resource = new UrlResource(filePath.toUri());
if (resource.exists() && resource.isReadable()) {
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + newName);
return ResponseEntity.ok()
.headers(headers)
.body(resource);
} else {
return null;
}
} catch (Exception e) {
return null;
}
}
}
......@@ -4,6 +4,9 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.tiptimes.model.*;
import com.tiptimes.model.YearId;
import com.tiptimes.model.QuestionnaireDTO.FormOptionByGroup;
import com.tiptimes.model.QuestionnaireDTO.ReportDto;
import com.tiptimes.model.QuestionnaireDTO.SaveQuestionByGroup;
import com.tiptimes.service.FileService;
import com.tiptimes.service.QuestionnaireService;
import com.tiptimes.util.*;
......@@ -36,6 +39,104 @@ public class QuestionnaireCtrl {
public QuestionnaireCtrl() {
}
/**
* 获取表单项
* @param year 年份
* @param createId 上报人id
* @return 结果
*/
@RequestMapping({"/get_options"})
@ResponseBody
public List<FormOptionByGroup> getFormOptions(Integer year,String createId){
return questionnaireService.getFormOptions(year,createId);
}
/**
* 保存内容(暂存)
* @param reportDto 上报表单封装
* @return 结果
*/
@RequestMapping({"/save_report"})
@ResponseBody
public Map<String, Object> saveReport(@RequestBody ReportDto reportDto){
HashMap<String, Object> result = new HashMap<>();
if (reportDto == null){
result.put("result",false);
result.put("msg","上报内容为空");
}
Map<String, Object> map = questionnaireService.selectReport(reportDto);
result.put("result",true);
result.put("data",map);
return result;
}
/**
* 分组保存审核结果
* @param saveQuestionByGroup 参数
* @return 结果
*/
@RequestMapping({"/save_group"})
@ResponseBody
public Map<String,Object> saveGroup(@RequestBody SaveQuestionByGroup saveQuestionByGroup){
HashMap<String, Object> result = new HashMap<>();
boolean flag = questionnaireService.saveQuestionByGroup(saveQuestionByGroup);
result.put("status",flag);
return result;
}
/**
* 审核内容回显
* @param uid 问卷id
* @param createId 创建人id
* @param year 年份
* @return 结果
*/
@RequestMapping({"/query_review"})
@ResponseBody
public Map<String,Object> queryReview(Long uid,String createId,int year){
HashMap<String, Object> result = new HashMap<>();
List<SaveQuestionByGroup> res = questionnaireService.queryReview(uid,createId,year);
if (res == null){
result.put("status",false);
return result;
}
result.put("status",true);
result.put("data",res);
return result;
}
/**
* 审核上报
* @param uid 问卷id
* @param createId 创建人id
* @param year 年份
* @param status 当前状态
* @return 结果
*/
@RequestMapping({"/admin_submit"})
@ResponseBody
public Map<String,Object> adminSubmit(Long uid,String createId,int year,int status){
HashMap<String, Object> res = new HashMap<>();
boolean flag = questionnaireService.adminSubmit(uid,createId,year,status);
res.put("status",flag);
return res;
}
/**
* 数据上报
*
......
......@@ -2,6 +2,7 @@ package com.tiptimes.dao;
import com.tiptimes.ctrl.QuestionnaireVo;
import com.tiptimes.model.*;
import com.tiptimes.model.QuestionnaireDTO.AnswerDTO;
import com.tiptimes.model.exportDTO.*;
import org.apache.ibatis.annotations.Param;
......@@ -9,6 +10,28 @@ import java.util.List;
public interface QuestionnaireDao {
/**
* 根据问卷id查询组别id
* @param questionnaireId 问卷id
* @return 结果
*/
List<FormGroup> queryGroup(Integer questionnaireId);
/**
* 按照问题id查询问题
* @param questionId 问卷id
* @return 结果
*/
List<Questions> queryQuestionsByQuestionnaireId(int questionId);
/**
* 按照问题id查询选项
* @param questionId 问题id
* @return 结果
*/
List<Options> queryOptionsByQuestionId(Long questionId);
Long insertQuestionnaire(QuestionnaireVo questionnaireVo);
Integer queryQuestionsId(@Param("qnYear") Integer qnYear);
......@@ -35,6 +58,16 @@ public interface QuestionnaireDao {
Integer insertAnswer(@Param("list") List<Answer> answerList,
@Param("recordId") Long recordId);
Integer insertAnswers(@Param("answer") List<AnswerDTO> answer,
@Param("recordId") int recordId);
Integer updateAnswersByIdBatch(@Param("list") List<AnswerDTO> answerList,
@Param("recordId") int recordId);
String queryAnswersByIdBatch(@Param("optionId") int optionId,
@Param("recordId") int recordId,
@Param("group") int group);
Integer updateRecord(Record record);
Integer delView(@Param("recordId") Long recordId, @Param("questionsId") Long questionsId);
......@@ -312,4 +345,34 @@ public interface QuestionnaireDao {
@Param("id97") Integer id97,
@Param("id98") Integer id98
);
Integer queryReport(
@Param("createId") String createId,
@Param("questionnaireUuid") Long questionnaireUuid
);
Integer updateReportStatus(@Param("aId") Integer aId);
int saveQuestionByGroup(@Param("questionsId") int questionsId,
@Param("recordId") int recordId,
@Param("remark") String remark,
@Param("approvalStatus") int approvalStatus,
@Param("score") double score,
@Param("groupId") int groupId);
String selectGroupById(@Param("groupId") int group);
Group selectGroup(@Param("groupId") int group);
Review selectReview(@Param("questionsId") int questionsId,
@Param("recordId") int recordId,
@Param("groupId") int groupId);
Integer updateRecordStatus(@Param("uid") Long uid,
@Param("createId") String createId,
@Param("year") int year,
@Param("status") int status);
Integer queryAnswer(@Param("recordId") int recordId);
}
package com.tiptimes.model;
public class FormGroup {
/**
* 组别id
*/
private int groupId;
/**
* 组别标题
*/
private String groupTitle;
/**
* 关联年份
*/
private int qnYear;
/**
* 组别类型 0-表单 1-表格
*/
private int groupType;
/**
* 关联问题列表 按照(,)分割
*/
private String questionId;
/**
* 关联表单id
*/
private int questionnaireId;
/**
* 关联组id 用于同一表单项同步值
*/
private int relevance;
public FormGroup() {
}
public FormGroup(int groupId, String groupTitle, int qnYear, int groupType, String questionId, int questionnaireId, int relevance) {
this.groupId = groupId;
this.groupTitle = groupTitle;
this.qnYear = qnYear;
this.groupType = groupType;
this.questionId = questionId;
this.questionnaireId = questionnaireId;
this.relevance = relevance;
}
public int getGroupId() {
return groupId;
}
public void setGroupId(int groupId) {
this.groupId = groupId;
}
public String getGroupTitle() {
return groupTitle;
}
public void setGroupTitle(String groupTitle) {
this.groupTitle = groupTitle;
}
public int getQnYear() {
return qnYear;
}
public void setQnYear(int qnYear) {
this.qnYear = qnYear;
}
public int getGroupType() {
return groupType;
}
public void setGroupType(int groupType) {
this.groupType = groupType;
}
public String getQuestionId() {
return questionId;
}
public void setQuestionId(String questionId) {
this.questionId = questionId;
}
public int getQuestionnaireId() {
return questionnaireId;
}
public void setQuestionnaireId(int questionnaireId) {
this.questionnaireId = questionnaireId;
}
public int getRelevance() {
return relevance;
}
public void setRelevance(int relevance) {
this.relevance = relevance;
}
}
package com.tiptimes.model;
public class Group {
/**
* 组别id
*/
private int groupId;
/**
* 组别标题
*/
private String groupTitle;
/**
* 年份
*/
private int qnYear;
/**
* 组别类型
*/
private int groupType;
/**
* 问题id
*/
private String questionId;
/**
* 问卷id
*/
private int questionnaireId;
/**
* 关联字段(保留字段)
*/
private int relevance;
public Group() {
}
public Group(int groupId, String groupTitle, int qnYear, int groupType, String questionId, int questionnaireId, int relevance) {
this.groupId = groupId;
this.groupTitle = groupTitle;
this.qnYear = qnYear;
this.groupType = groupType;
this.questionId = questionId;
this.questionnaireId = questionnaireId;
this.relevance = relevance;
}
public int getGroupId() {
return groupId;
}
public void setGroupId(int groupId) {
this.groupId = groupId;
}
public String getGroupTitle() {
return groupTitle;
}
public void setGroupTitle(String groupTitle) {
this.groupTitle = groupTitle;
}
public int getQnYear() {
return qnYear;
}
public void setQnYear(int qnYear) {
this.qnYear = qnYear;
}
public int getGroupType() {
return groupType;
}
public void setGroupType(int groupType) {
this.groupType = groupType;
}
public String getQuestionId() {
return questionId;
}
public void setQuestionId(String questionId) {
this.questionId = questionId;
}
public int getQuestionnaireId() {
return questionnaireId;
}
public void setQuestionnaireId(int questionnaireId) {
this.questionnaireId = questionnaireId;
}
public int getRelevance() {
return relevance;
}
public void setRelevance(int relevance) {
this.relevance = relevance;
}
}
package com.tiptimes.model;
/**
* 选项表
*/
public class Options {//选项表
private Long id;//选项id
private Long questionId;//问题id
private int status;//选项状态 1:启用(默认值);0:停用'
private String optionValue;//选项内容
public String getQnYear() {
return qnYear;
}
/**
* id
*/
private Long id;
/**
* 问题id
*/
private Long questionId;
/**
* 选项状态
*/
private int status;
/**
* 选项内容
*/
private String optionValue;
/**
* 映射表单类型 0-文本框 1-数字输入框 2-多选项 3-文件上传 4-表格项
*/
private int formTag;
public void setQnYear(String qnYear) {
this.qnYear = qnYear;
/**
* 多选选项 当映射表单类型2时有意义
*/
private String formOption;
/**
* 内容
*/
private Object formContent;
/**
* 提交记录id 关联提交记录,涉及表单定时保存
*/
private int answerId;
public Options() {
}
private String qnYear;
public Options(Long id, Long questionId, int status, String optionValue, int formTag, String formOption, String formContent, int answerId) {
this.id = id;
this.questionId = questionId;
this.status = status;
this.optionValue = optionValue;
this.formTag = formTag;
this.formOption = formOption;
this.formContent = formContent;
this.answerId = answerId;
}
public Long getId() {
return id;
......@@ -24,6 +69,14 @@ public class Options {//选项表
this.id = id;
}
public Long getQuestionId() {
return questionId;
}
public void setQuestionId(Long questionId) {
this.questionId = questionId;
}
public int getStatus() {
return status;
}
......@@ -32,29 +85,43 @@ public class Options {//选项表
this.status = status;
}
public Options() {
public String getOptionValue() {
return optionValue;
}
public Long getQuestionId() {
return questionId;
public void setOptionValue(String optionValue) {
this.optionValue = optionValue;
}
public void setQuestionId(Long questionId) {
this.questionId = questionId;
public int getFormTag() {
return formTag;
}
public String getOptionValue() {
return optionValue;
public void setFormTag(int formTag) {
this.formTag = formTag;
}
public void setOptionValue(String optionValue) {
this.optionValue = optionValue;
public String getFormOption() {
return formOption;
}
public Options(Long id, Long questionId, int status, String optionValue) {
this.id = id;
this.questionId = questionId;
this.status = status;
this.optionValue = optionValue;
public void setFormOption(String formOption) {
this.formOption = formOption;
}
public Object getFormContent() {
return formContent;
}
public void setFormContent(String formContent) {
this.formContent = formContent;
}
public int getAnswerId() {
return answerId;
}
public void setAnswerId(int answerId) {
this.answerId = answerId;
}
}
package com.tiptimes.model.QuestionnaireDTO;
import java.math.BigDecimal;
public class AnswerDTO {
/**
* 子项id
*/
private int optionId;
/**
* 表单内容
*/
private Object value;
/**
* 分组id
*/
private int groupId;
/**
* 备注
*/
private String remark;
/**
* 分数
*/
private BigDecimal score;
public AnswerDTO() {
}
public AnswerDTO(int optionId, Object value, int groupId, String remark, BigDecimal score) {
this.optionId = optionId;
this.value = value;
this.groupId = groupId;
this.remark = remark;
this.score = score;
}
public int getOptionId() {
return optionId;
}
public void setOptionId(int optionId) {
this.optionId = optionId;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public int getGroupId() {
return groupId;
}
public void setGroupId(int groupId) {
this.groupId = groupId;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public BigDecimal getScore() {
return score;
}
public void setScore(BigDecimal score) {
this.score = score;
}
}
package com.tiptimes.model.QuestionnaireDTO;
import java.util.List;
/**
* 按组别获取表单对象
*/
public class FormOptionByGroup {
/**
* 组别id
*/
private int groupId;
/**
* 组别标题
*/
private String groupTitle;
/**
* 关联年份
*/
private int qnYear;
/**
* 组别类型 0-表单 1-表格
*/
private int groupType;
/**
* 关联问题列表 按照(,)分割
*/
private String questionId;
/**
* 关联表单id
*/
private int questionnaireId;
/**
* 关联组id 用于同一表单项同步值
*/
private int relevance;
/**
* 组下问题列表
*/
private List<FormOptionsDto> formOptions;
public FormOptionByGroup() {
}
public FormOptionByGroup(int groupId, String groupTitle, int qnYear, int groupType, String questionId, int questionnaireId, int relevance, List<FormOptionsDto> formOptions) {
this.groupId = groupId;
this.groupTitle = groupTitle;
this.qnYear = qnYear;
this.groupType = groupType;
this.questionId = questionId;
this.questionnaireId = questionnaireId;
this.relevance = relevance;
this.formOptions = formOptions;
}
public int getGroupId() {
return groupId;
}
public void setGroupId(int groupId) {
this.groupId = groupId;
}
public String getGroupTitle() {
return groupTitle;
}
public void setGroupTitle(String groupTitle) {
this.groupTitle = groupTitle;
}
public int getQnYear() {
return qnYear;
}
public void setQnYear(int qnYear) {
this.qnYear = qnYear;
}
public int getGroupType() {
return groupType;
}
public void setGroupType(int groupType) {
this.groupType = groupType;
}
public String getQuestionId() {
return questionId;
}
public void setQuestionId(String questionId) {
this.questionId = questionId;
}
public int getQuestionnaireId() {
return questionnaireId;
}
public void setQuestionnaireId(int questionnaireId) {
this.questionnaireId = questionnaireId;
}
public int getRelevance() {
return relevance;
}
public void setRelevance(int relevance) {
this.relevance = relevance;
}
public List<FormOptionsDto> getFormOptions() {
return formOptions;
}
public void setFormOptions(List<FormOptionsDto> formOptions) {
this.formOptions = formOptions;
}
}
package com.tiptimes.model.QuestionnaireDTO;
import com.tiptimes.model.Options;
import java.util.List;
/**
* 获取表单对象
*/
public class FormOptionsDto {
/**
* 问题id
*/
private Long id;
/**
* 关联表单id
*/
private Long questionnaireUuid;
/**
* 问题内容
*/
private String question;
/**
* 问题预存内容
*/
private Object questionContent;
/**
* 问题状态标识
*/
private int status;
/**
* 问题关联选项列表
*/
private List<Options> options;
public FormOptionsDto(Long id, Long questionnaireUuid, String question, String questionContent, int status, List<Options> options) {
this.id = id;
this.questionnaireUuid = questionnaireUuid;
this.question = question;
this.questionContent = questionContent;
this.status = status;
this.options = options;
}
public FormOptionsDto() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getQuestionnaireUuid() {
return questionnaireUuid;
}
public void setQuestionnaireUuid(Long questionnaireUuid) {
this.questionnaireUuid = questionnaireUuid;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public Object getQuestionContent() {
return questionContent;
}
public void setQuestionContent(String questionContent) {
this.questionContent = questionContent;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public List<Options> getOptions() {
return options;
}
public void setOptions(List<Options> options) {
this.options = options;
}
}
package com.tiptimes.model.QuestionnaireDTO;
import java.util.List;
/**
* 表单上报
*/
public class ReportDto {
/**
* 表单数据
*/
private List<AnswerDTO> answer;
/**
* 问卷id
*/
private Long questionnaireUuid;
/**
* 问卷名称
*/
private String questionnaireName;//问卷名称
/**
* 创建人
*/
private String createBy;
/**
* 上报人id
*/
private String createId;
/**
* 所属众创空间
*/
private String createName;//所属众创空间
/**
* 联系方式
*/
private String phoneNumber;//联系方式
/**
* 保存类型
*/
private Integer type; //0暂存 1上报
/**
* 填报人
*/
private String writePeople;//填报人
/**
* 上报年份
*/
private Integer qnYear; //上报年份
public ReportDto(List<AnswerDTO> answer, Long questionnaireUuid, String questionnaireName, String createBy, String createId, String createName, String phoneNumber, Integer type, String writePeople, Integer qnYear) {
this.answer = answer;
this.questionnaireUuid = questionnaireUuid;
this.questionnaireName = questionnaireName;
this.createBy = createBy;
this.createId = createId;
this.createName = createName;
this.phoneNumber = phoneNumber;
this.type = type;
this.writePeople = writePeople;
this.qnYear = qnYear;
}
public ReportDto() {
}
public List<AnswerDTO> getAnswer() {
return answer;
}
public void setAnswer(List<AnswerDTO> answer) {
this.answer = answer;
}
public Long getQuestionnaireUuid() {
return questionnaireUuid;
}
public void setQuestionnaireUuid(Long questionnaireUuid) {
this.questionnaireUuid = questionnaireUuid;
}
public String getQuestionnaireName() {
return questionnaireName;
}
public void setQuestionnaireName(String questionnaireName) {
this.questionnaireName = questionnaireName;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public String getCreateId() {
return createId;
}
public void setCreateId(String createId) {
this.createId = createId;
}
public String getCreateName() {
return createName;
}
public void setCreateName(String createName) {
this.createName = createName;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getWritePeople() {
return writePeople;
}
public void setWritePeople(String writePeople) {
this.writePeople = writePeople;
}
public Integer getQnYear() {
return qnYear;
}
public void setQnYear(Integer qnYear) {
this.qnYear = qnYear;
}
}
package com.tiptimes.model.QuestionnaireDTO;
/**
* 审批单次提交
*/
public class SaveQuestionByGroup {
/**
* 上报人id
*/
private String createId;
/**
* 问卷id
*/
private Long questionnaireUuid;
/**
* 组别id
*/
private Integer groupId;
/**
* 填写状态 0-驳回 1-通过
*/
private int status;
/**
* 分数
*/
private double score;
/**
* 备注(驳回原因)
*/
private String remark;
public SaveQuestionByGroup() {
}
public SaveQuestionByGroup(String createId, Long questionnaireUuid, Integer groupId, int status, double score, String remark) {
this.createId = createId;
this.questionnaireUuid = questionnaireUuid;
this.groupId = groupId;
this.status = status;
this.score = score;
this.remark = remark;
}
public String getCreateId() {
return createId;
}
public void setCreateId(String createId) {
this.createId = createId;
}
public Long getQuestionnaireUuid() {
return questionnaireUuid;
}
public void setQuestionnaireUuid(Long questionnaireUuid) {
this.questionnaireUuid = questionnaireUuid;
}
public Integer getGroupId() {
return groupId;
}
public void setGroupId(Integer groupId) {
this.groupId = groupId;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
......@@ -5,7 +5,7 @@ public class Questions {//问题表
private Long id;//问题id
private Long questionnaireUuid;//问卷id
private String question;//问题
private int status;//问题状态 1:启用(默认值);0:停用'
private int status;//问题状态 1:启用(默认值);0:停用 2 文件类型'
private Date createTime;//创建时间
public Long getId() {
......
package com.tiptimes.service;
import com.tiptimes.model.*;
import com.tiptimes.model.QuestionnaireDTO.FormOptionByGroup;
import com.tiptimes.model.QuestionnaireDTO.ReportDto;
import com.tiptimes.model.QuestionnaireDTO.SaveQuestionByGroup;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
......@@ -8,6 +11,9 @@ import java.util.List;
import java.util.Map;
public interface QuestionnaireService {
/**
* 根据上报人和问卷id查询上报记录id
* @param questionnaireUuid 问卷id
......@@ -164,7 +170,46 @@ public interface QuestionnaireService {
Integer id97,Integer id98
);
/**
* 根据年份查询表单
* @param year 年份
* @param createId 上报人id
* @return 结果
*/
List<FormOptionByGroup> getFormOptions(int year, String createId);
}
/**
* 查询上报记录
* @param reportDto 上报数据
*/
Map<String,Object> selectReport(ReportDto reportDto);
/**
* 单次提交审核
* @param saveQuestionByGroup 单次提交
* @return 结果
*/
boolean saveQuestionByGroup(SaveQuestionByGroup saveQuestionByGroup);
/**
* 审核表单回显
* @param uid 表单id
* @param createId 创建人
* @param year 年份
* @return 结果
*/
List<SaveQuestionByGroup> queryReview(Long uid, String createId, int year);
/**
* 审核上报
* @param uid 问卷id
* @param createId 创建人
* @param year 年份
* @param status 状态
* @return 结果
*/
boolean adminSubmit(Long uid, String createId, int year ,int status);
}
......@@ -4,3 +4,4 @@ ImgUrl=/data/tianruanImgFile/
#MasterServer=1 为主服务器
#MasterServer=2 为从服务器
MasterServer=1
UPLOAD_PATH = C:/uploaded_files/
\ No newline at end of file
......@@ -3,6 +3,112 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tiptimes.dao.QuestionnaireDao">
<!-- 问卷id查询组别id -->
<select id="queryGroup" parameterType="Integer" resultType="com.tiptimes.model.FormGroup">
SELECT *
FROM t_group
WHERE questionnaire_id = #{questionnaireId}
</select>
<!-- 根据问题ID与问卷id查询问题列表 -->
<select id="queryQuestionsByQuestionnaireId" resultType="com.tiptimes.model.Questions">
SELECT *
FROM t_questions
WHERE id = #{questionId}
</select>
<!-- 根据问题ID查询选项列表 -->
<select id="queryOptionsByQuestionId" resultType="com.tiptimes.model.Options">
SELECT *
FROM t_options
WHERE question_id = #{questionId}
</select>
<select id="queryReport" resultType="integer">
SELECT id
FROM t_record
WHERE create_id = #{createId}
AND questionnaire_uuid = #{questionnaireUuid};
</select>
<update id="updateReportStatus">
UPDATE t_record
SET process_status = 1
WHERE id = #{aId}
</update>
<!-- saveQuestionByGroup: 查询并更新或插入t_review表数据 -->
<insert id="saveQuestionByGroup" parameterType="map">
<selectKey resultType="java.lang.Integer" keyProperty="isExist" order="BEFORE">
SELECT COUNT(*) FROM t_review
WHERE questions_id = #{questionsId} AND record_id = #{recordId}
AND
group_id =#{groupId}
</selectKey>
<if test="isExist > 0">
UPDATE t_review
SET
remark = #{remark},
approval_status = #{approvalStatus},
score = #{score}
WHERE
questions_id = #{questionsId}
AND
record_id = #{recordId}
AND
group_id =#{groupId}
</if>
<if test="isExist == 0">
INSERT INTO t_review (questions_id, record_id, remark, approval_status, score, group_id)
VALUES (#{questionsId}, #{recordId}, #{remark}, #{approvalStatus}, #{score}, #{groupId})
</if>
</insert>
<select id="selectGroupById" resultType="string">
SELECT question_id
FROM t_group
WHERE group_id = #{groupId}
</select>
<select id="selectGroup" resultType="com.tiptimes.model.Group">
SELECT *
FROM t_group
WHERE group_id = #{groupId}
</select>
<select id="selectReview" resultType="com.tiptimes.model.Review">
SELECT *
FROM t_review
WHERE record_id = #{recordId} AND questions_id = #{questionsId} AND group_id =#{groupId}
ORDER BY group_id DESC
</select>
<update id="updateRecordStatus" >
UPDATE t_record
SET process_status = #{status}
WHERE qn_year = #{year} AND create_id = #{createId} AND questionnaire_uuid = #{uid}
</update>
<select id="queryAnswer" resultType="integer">
select COUNT(*) AS 'number'
FROM t_answer
WHERE record_id = #{recordId}
</select>
<insert id="insertQuestionnaire" useGeneratedKeys="true" keyProperty="id">
INSERT INTO t_questionnaire(questionnaire_name, status, create_time, create_by, qn_year)
VALUES (#{questionnaireName}, #{status}, #{createTime}, #{createBy}, #{qnYear})
......@@ -54,7 +160,10 @@
INSERT INTO t_record(questionnaire_uuid, questionnaire_name, process_status, phone_number, create_time,
create_by, create_id, write_people, qn_year)
VALUES (#{questionnaireUuid}, #{questionnaireName}, #{processStatus}, #{phoneNumber}, #{createTime},
#{createBy}, #{createId}, #{writePeople}, #{qnYear})
#{createBy}, #{createId}, #{writePeople}, #{qnYear});
<selectKey keyProperty="id" order="AFTER" resultType="long">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
<insert id="insertAnswer" parameterType="com.tiptimes.model.Answer">
......@@ -64,6 +173,27 @@
</foreach>
</insert>
<insert id="insertAnswers" parameterType="com.tiptimes.model.QuestionnaireDTO.AnswerDTO">
INSERT INTO t_answer (`options_id`, `value`, `group`, `record_id`) VALUES
<foreach collection="answer" separator="," item="item">
( #{item.optionId}, #{item.value}, #{item.groupId} , #{recordId})
</foreach>
</insert>
<update id="updateAnswersByIdBatch" parameterType="com.tiptimes.model.QuestionnaireDTO.AnswerDTO">
<foreach collection="list" item="item" separator=";">
UPDATE t_answer
SET `value` = #{item.value}
WHERE `options_id` = #{item.optionId} AND `record_id` = #{recordId} AND `group` = #{item.groupId}
</foreach>
</update>
<select id="queryAnswersByIdBatch" resultType="string">
SELECT `value`
FROM t_answer
WHERE options_id = #{optionId} AND record_id = #{recordId} AND `group` = #{group}
</select>
<insert id="insertReview">
INSERT INTO t_review (`questions_id`,`remark`,`score`,`approval_status`,`record_id`) VALUES
<foreach collection="list" item="list" separator=",">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment