Commit f861aa39bc1d44c7c52c97f187ce24cd6b4a82c4

Authored by cfl
1 parent 7d8cfe821e
Exists in dev

检测记录保存,入参格式变更修改代码

Showing 5 changed files with 116 additions and 16 deletions

talkonlineweb/src/main/java/com/lyms/talkonlineweb/config/GlobalExceptionHandler.java View file @ f861aa3
... ... @@ -3,11 +3,15 @@
3 3 import com.lyms.talkonlineweb.result.BaseResponse;
4 4 import lombok.extern.log4j.Log4j2;
5 5 import org.springframework.http.HttpRequest;
6   -import org.springframework.web.bind.annotation.ControllerAdvice;
7   -import org.springframework.web.bind.annotation.ExceptionHandler;
8   -import org.springframework.web.bind.annotation.ResponseBody;
9   -import org.springframework.web.bind.annotation.RestControllerAdvice;
  6 +import org.springframework.http.HttpStatus;
  7 +import org.springframework.validation.BindingResult;
  8 +import org.springframework.validation.FieldError;
  9 +import org.springframework.validation.ObjectError;
  10 +import org.springframework.web.bind.MethodArgumentNotValidException;
  11 +import org.springframework.web.bind.annotation.*;
10 12  
  13 +import java.util.List;
  14 +
11 15 /**
12 16 * 全局异常处理类
13 17 */
... ... @@ -15,6 +19,34 @@
15 19 @Log4j2
16 20 public class GlobalExceptionHandler {
17 21  
  22 + /**
  23 + * 处理@Validated参数校验失败异常
  24 + * @param exception 异常类
  25 + * @return 响应
  26 + */
  27 + @ResponseBody
  28 + @ResponseStatus(HttpStatus.BAD_REQUEST)
  29 + @ExceptionHandler(MethodArgumentNotValidException.class)
  30 + public BaseResponse exceptionHandler(MethodArgumentNotValidException exception){
  31 + BindingResult result = exception.getBindingResult();
  32 + StringBuilder stringBuilder = new StringBuilder();
  33 + if (result.hasErrors()) {
  34 + List<ObjectError> errors = result.getAllErrors();
  35 + if (errors != null) {
  36 + errors.forEach(p -> {
  37 + FieldError fieldError = (FieldError) p;
  38 + log.warn("Bad Request Parameters: dto entity [{}],field [{}],message [{}]",fieldError.getObjectName(), fieldError.getField(), fieldError.getDefaultMessage());
  39 + stringBuilder.append(fieldError.getDefaultMessage()+";");
  40 + });
  41 + }
  42 + }
  43 + BaseResponse baseResponse=new BaseResponse();
  44 + baseResponse.setErrorcode(1);
  45 + baseResponse.setErrormsg(stringBuilder.toString());
  46 + return baseResponse;
  47 + }
  48 +
  49 +
18 50 @ExceptionHandler(value = Exception.class)
19 51 @ResponseBody
20 52 public BaseResponse exceptionHandler(Exception e){
... ... @@ -25,5 +57,7 @@
25 57 e.printStackTrace();
26 58 return baseResponse;
27 59 }
  60 +
  61 +
28 62 }
talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsXljcRecordAnswer.java View file @ f861aa3
... ... @@ -30,16 +30,29 @@
30 30 private Integer rid;
31 31  
32 32 /**
  33 + * 问题分组
  34 + */
  35 + @TableField(value = "type_label")
  36 + private String typeLabel;
  37 +
  38 + /**
33 39 * 问题序号
34 40 */
35 41 @TableField(value = "question_id")
36   - private Integer questionId;
  42 + private String questionId;
37 43  
38 44 /**
39 45 * 问题答案
40 46 */
41 47 @TableField(value = "question_answer")
42 48 private String questionAnswer;
  49 +
  50 + /**
  51 + * 问题名称,只有是其他是才有职位
  52 + */
  53 + @TableField(value = "question_label")
  54 + private String questionLabel;
  55 +
43 56  
44 57 @TableField(value = "createdby")
45 58 private Integer createdby;
talkonlineweb/src/main/java/com/lyms/talkonlineweb/request/XljcAnswerVO.java View file @ f861aa3
  1 +package com.lyms.talkonlineweb.request;
  2 +
  3 +import com.lyms.talkonlineweb.domain.LymsXljcRecordAnswer;
  4 +import lombok.Data;
  5 +
  6 +import java.io.Serializable;
  7 +import java.util.ArrayList;
  8 +import java.util.List;
  9 +
  10 +@Data
  11 +public class XljcAnswerVO implements Serializable {
  12 +
  13 + private String typeLabel;
  14 +
  15 + List<LymsXljcRecordAnswer> recordAnswers = new ArrayList<>();
  16 +}
talkonlineweb/src/main/java/com/lyms/talkonlineweb/request/XljcExamineRequest.java View file @ f861aa3
... ... @@ -45,7 +45,7 @@
45 45 private Integer examineDoctor;
46 46  
47 47  
48   - List<LymsXljcRecordAnswer> answers = new ArrayList<>();
  48 + List<XljcAnswerVO> answers = new ArrayList<>();
49 49  
50 50 /**
51 51 * 总分数
talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsXljcRecordServiceImpl.java View file @ f861aa3
... ... @@ -8,6 +8,7 @@
8 8 import com.lyms.talkonlineweb.enums.TraceStatusEnum;
9 9 import com.lyms.talkonlineweb.mapper.LymsXljcRecordMapper;
10 10 import com.lyms.talkonlineweb.request.ExamineRecordListRequest;
  11 +import com.lyms.talkonlineweb.request.XljcAnswerVO;
11 12 import com.lyms.talkonlineweb.request.XljcExamineRequest;
12 13 import com.lyms.talkonlineweb.request.XljcPatientRequest;
13 14 import com.lyms.talkonlineweb.result.*;
... ... @@ -20,9 +21,7 @@
20 21 import org.springframework.transaction.annotation.Transactional;
21 22  
22 23 import javax.annotation.Resource;
23   -import java.util.Calendar;
24   -import java.util.Date;
25   -import java.util.List;
  24 +import java.util.*;
26 25  
27 26 @Log4j2
28 27 @Service
29 28  
... ... @@ -83,13 +82,20 @@
83 82 recordResult.setCreatedtime(currentDate);
84 83 lymsXljcRecordResultService.save(recordResult);
85 84  
86   - List<LymsXljcRecordAnswer> answers = xljcExamineRequest.getAnswers();
87   - for(LymsXljcRecordAnswer answer: answers){
88   - answer.setRid(record.getId());
89   - answer.setCreatedby(curUser.getUid());
90   - answer.setCreatedtime(currentDate);
  85 + List<XljcAnswerVO> answers = xljcExamineRequest.getAnswers();
  86 + List<LymsXljcRecordAnswer> recordAnswerList = new ArrayList<>();
  87 + for(XljcAnswerVO answer: answers){
  88 + List<LymsXljcRecordAnswer> recordAnswers = answer.getRecordAnswers();
  89 + for(LymsXljcRecordAnswer recordAnswer: recordAnswers){
  90 + recordAnswer.setRid(record.getId());
  91 + recordAnswer.setTypeLabel(answer.getTypeLabel());
  92 + recordAnswer.setCreatedby(curUser.getUid());
  93 + recordAnswer.setCreatedtime(currentDate);
  94 + }
  95 + recordAnswerList.addAll(recordAnswers);
  96 +
91 97 }
92   - lymsXljcRecordAnswerService.saveBatch(answers);
  98 + lymsXljcRecordAnswerService.saveBatch(recordAnswerList);
93 99  
94 100 /**
95 101 *查询是否存在待追访记录
96 102  
... ... @@ -153,10 +159,41 @@
153 159 query.eq("rid",rid);
154 160 List<LymsXljcRecordAnswer> recordAnswers = lymsXljcRecordAnswerService.list(query);
155 161  
  162 + Map<String,List<LymsXljcRecordAnswer>> map = new HashMap<>();
  163 +
  164 + for(LymsXljcRecordAnswer answer: recordAnswers){
  165 + LymsXljcRecordAnswer recordAnswer = new LymsXljcRecordAnswer();
  166 + recordAnswer.setQuestionId(answer.getQuestionId());
  167 + recordAnswer.setQuestionAnswer(answer.getQuestionAnswer());
  168 + recordAnswer.setQuestionLabel(answer.getQuestionLabel());
  169 +
  170 + if(map.containsKey(answer.getTypeLabel())){
  171 + map.get(answer.getTypeLabel()).add(recordAnswer);
  172 + }else{
  173 + List<LymsXljcRecordAnswer> list = new ArrayList<>();
  174 + list.add(recordAnswer);
  175 + map.put(answer.getTypeLabel(),list);
  176 + }
  177 + }
  178 + QueryWrapper<LymsXljcRecordTrace> trqceQuery = new QueryWrapper();
  179 + trqceQuery.eq("rid",rid);
  180 + LymsXljcRecordTrace recordTrace = lymsXljcRecordTraceService.getOne(trqceQuery);
  181 +
156 182 XljcExamineRequest request = new XljcExamineRequest();
157 183 BeanUtils.copyProperties(record,request);
158 184 BeanUtils.copyProperties(recordResult,request);
159   - request.setAnswers(recordAnswers);
  185 + if(recordTrace != null){
  186 + request.setNextExamineDate(recordTrace.getNextExamineDate());
  187 + }
  188 +
  189 + List<XljcAnswerVO> xljcAnswerVOS = new ArrayList<>();
  190 + map.forEach((key,value)->{
  191 + XljcAnswerVO vo = new XljcAnswerVO();
  192 + vo.setTypeLabel(key);
  193 + vo.setRecordAnswers(value);
  194 + xljcAnswerVOS.add(vo);
  195 + });
  196 + request.setAnswers(xljcAnswerVOS);
160 197 return request;
161 198 }
162 199