Browse Source

修改问卷相关接口

master
ma 4 years ago
parent
commit
d4cf878312
  1. 3
      src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java
  2. 28
      src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDetailDao.java
  3. 118
      src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java
  4. 2
      src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java
  5. 59
      src/main/resources/mapper_dao/QuestionnaireDetailDao.xml

3
src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java

@ -53,6 +53,9 @@ public class QuestionnaireDto {
@NotNull(message = "问卷详情id不能为空")
@ApiModelProperty("问卷详情id")
private Long detailId;
@NotNull(message = "医院名称不能为空")
@ApiModelProperty("医院名称")
private String name;
}
@Data

28
src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDetailDao.java

@ -37,4 +37,32 @@ public interface QuestionnaireDetailDao extends QuestionnaireDetailMapper {
* @return code与答案
*/
List<QuestionnaireVo.QuestionnaireInfo> queryDetail(@Param("qid") Long qid, @Param("userId") Long userId);
/**
* 查询QXXWJ 是否填写完毕
* @param detailId 详情id
* @return
*/
Integer countCodeNumber(@Param("detailId") Long detailId);
/**
* 查询XGZL的答案
* @param detailId 问卷详情id
* @return XGZL的答案
*/
String queryXGZL(@Param("detailId")Long detailId);
/**
* 查询XGZL的子选项数量
* @param detailId 详情id
* @return XGZL的子选项数量
*/
Integer querySonOfXGZL(@Param("detailId")Long detailId);
/**
* 查询此医院是否已提交
* @param name 医院名称
* @return 大于0为已提交
*/
Integer queryIsSubmit(@Param("name") String name);
}

118
src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java

@ -23,7 +23,6 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@ -71,101 +70,6 @@ public class QuestionnaireService implements IQuestionnaireService{
@Override
public void saveQuestionnaire(QuestionnaireDto.SaveQuestionnaire param, Long userId) throws Exception {
//校验介入治疗字段
// if (1 == param.getPciStatus()) {
// if (ObjectUtil.isNull(param.getAisNumberSix())){
// throw new BaseException(DefaultCodeError.PCI_NOT_NULL);
// }
// if (ObjectUtil.isNull(param.getShouldDirectly())) {
// throw new BaseException(DefaultCodeError.PCI_NOT_NULL);
// }
// if (ObjectUtil.isNull(param.getDptMedianNumber())) {
// throw new BaseException(DefaultCodeError.PCI_NOT_NULL);
// }
// if (ObjectUtil.isNull(param.getPrtMedianNumber())) {
// throw new BaseException(DefaultCodeError.PCI_NOT_NULL);
// }
// if (ObjectUtil.isNull(param.getJmrsNumberTwo())) {
// throw new BaseException(DefaultCodeError.PCI_NOT_NULL);
// }
// if (ObjectUtil.isNull(param.getDeathNumber())) {
// throw new BaseException(DefaultCodeError.PCI_NOT_NULL);
// }
// }
//
// //查询是否有已提交的,如果有只能保存
// Long time = System.currentTimeMillis();
// QuestionnaireVo.QuestionnaireInfo questionnaireInfo = questionnaireDao.queryRepeat(param.getHospitalName(),param.getQuestionnaireId());
// if (ObjectUtil.isNotNull(questionnaireInfo.getDetail())) {
// //1.提交数据,2.不是修改
// if (1 == param.getSubmitStatus() && ObjectUtil.isNull(param.getDetailId())) {
// QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
// BeanUtil.copyProperties(param,questionnaireDetail);
// questionnaireDetail.setId(snowflake.nextId());
// questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
// questionnaireDetail.setUserId(userId);
// questionnaireDetail.setSubmitStatus((byte)0);
// questionnaireDetailDao.insertSelective(questionnaireDetail);
// }
// //1.提交数据,2.修改,3.与库中已有提交人一致
// if (1 == param.getSubmitStatus() && ObjectUtil.isNotNull(param.getDetailId()) && userId.equals(questionnaireInfo.getDetail().getUserId())) {
// throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT);
// }
// //1.提交数据,2.修改,3.与库中已有提交人不一致
// if (1 == param.getSubmitStatus() && ObjectUtil.isNotNull(param.getDetailId()) && !userId.equals(questionnaireInfo.getDetail().getUserId())) {
// QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
// BeanUtil.copyProperties(param,questionnaireDetail);
// questionnaireDetail.setId(param.getDetailId());
// questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
// questionnaireDetail.setUserId(userId);
// questionnaireDetail.setSubmitStatus((byte)0);
// questionnaireDetailDao.updateByPrimaryKeySelective(questionnaireDetail);
// }
// //1.保存数据,2.修改的数据为已提交数据
// if (0 == param.getSubmitStatus() && ObjectUtil.isNotNull(param.getDetailId()) && param.getDetailId().equals(questionnaireInfo.getDetail().getId())) {
// throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT);
// }
//
// //1.保存数据,2.非修改
// if (0 == param.getSubmitStatus() && ObjectUtil.isNull(param.getDetailId())) {
// QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
// BeanUtil.copyProperties(param,questionnaireDetail);
// questionnaireDetail.setId(snowflake.nextId());
// questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
// questionnaireDetail.setUserId(userId);
// questionnaireDetail.setSubmitStatus((byte)0);
// questionnaireDetailDao.insertSelective(questionnaireDetail);
// }
// //1.保存数据,2.修改
// if (0 == param.getSubmitStatus() && ObjectUtil.isNotNull(param.getDetailId())) {
// QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
// BeanUtil.copyProperties(param,questionnaireDetail);
// questionnaireDetail.setId(param.getDetailId());
// questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
// questionnaireDetail.setUserId(userId);
// questionnaireDetail.setSubmitStatus((byte)0);
// questionnaireDetailDao.updateByPrimaryKeySelective(questionnaireDetail);
// }
// }else {
// // 新加数据
// if (ObjectUtil.isNull(param.getDetailId())) {
// QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
// BeanUtil.copyProperties(param,questionnaireDetail);
// questionnaireDetail.setId(snowflake.nextId());
// questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
// questionnaireDetail.setUserId(userId);
// questionnaireDetailDao.insertSelective(questionnaireDetail);
// }
// // 修改数据
// if (ObjectUtil.isNotNull(param.getDetailId())) {
// QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
// BeanUtil.copyProperties(param,questionnaireDetail);
// questionnaireDetail.setId(param.getDetailId());
// questionnaireDetail.setUserId(userId);
// questionnaireDetailDao.updateByPrimaryKeySelective(questionnaireDetail);
// }
//
// }
Long recordId = recordDao.queryIsExist(param.getDetailId(),param.getCode());
if (ObjectUtil.isNotNull(recordId)) {
QuestionnaireRecord record = new QuestionnaireRecord();
@ -182,8 +86,6 @@ public class QuestionnaireService implements IQuestionnaireService{
recordDao.insertSelective(record);
}
//如果医院/部门/用户不存在,则创建对应内容
// asyncService.createHospitalOfNotExit(param,userId);
}
@ -222,11 +124,29 @@ public class QuestionnaireService implements IQuestionnaireService{
if (ObjectUtil.isNull(questionnaireDetail)) {
throw new BaseException(DefaultCodeError.QUESTIONNAIRE_DETAIL_ERROR);
}
// TODO 1.校验字段是否都填写 2.校验是否已经有提交 3.创建项目或加入项目
//1.校验字段是否都填写
Integer num = questionnaireDetailDao.countCodeNumber(param.getDetailId());
if (num < 22) {
throw new BaseException(DefaultCodeError.QUESTIONNAIRE_INFO_INCOMPLETE);
}
String answer = questionnaireDetailDao.queryXGZL(param.getDetailId());
if ("是".equals(answer)) {
Integer sonOfXGZLNum = questionnaireDetailDao.querySonOfXGZL(param.getDetailId());
if (sonOfXGZLNum < 23) {
throw new BaseException(DefaultCodeError.XGZL_INCOMPLETE);
}
}
//2.校验是否已经有提交
Integer submitNum = questionnaireDetailDao.queryIsSubmit(param.getName());
if (0 < submitNum) {
//TODO 3.加入项目
return;
}
QuestionnaireDetail detail = new QuestionnaireDetail();
detail.setId(param.getDetailId());
detail.setSubmitStatus(Constant.SubmitStatus.submit.status);
questionnaireDetailDao.updateByPrimaryKeySelective(detail);
//TODO 创建项目
// asyncService.createHospitalOfNotExit();
}

2
src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java

@ -44,6 +44,8 @@ public class DefaultCodeError extends CodeError {
public static final Code HOSPITAL_REPEAT_SUBMIT = new Code(35,"数据已提交,无法修改", true);
public static final Code PCI_NOT_NULL = new Code(36,"介入治疗相关信息不能为空", true);
public static final Code QUESTIONNAIRE_DETAIL_ERROR = new Code(37,"问卷详情信息错误", true);
public static final Code QUESTIONNAIRE_INFO_INCOMPLETE = new Code(39,"请填写全部选项", true);
public static final Code XGZL_INCOMPLETE = new Code(40,"请填写血管内治疗的全部选项", true);

59
src/main/resources/mapper_dao/QuestionnaireDetailDao.xml

@ -11,6 +11,7 @@
WHERE
qd.user_id = #{userId}
AND questionnaire_id = #{qid}
AND qd.rec_status = 0
</select>
<select id="queryIsExist" resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$DetailInfo">
@ -41,4 +42,62 @@
AND qd.questionnaire_id = #{qid}
</select>
<select id="countCodeNumber" resultType="java.lang.Integer">
SELECT
COUNT(qd.id)
FROM
t_qcp_questionnaire_detail AS qd
LEFT JOIN t_qcp_questionnaire_record AS qr ON qd.id = qr.questionnaire_detail_id
LEFT JOIN t_qcp_code_parent AS cp ON qr.question_code = cp.question_code
WHERE
qd.id = #{detailId}
AND cp.parent_code = 'QXXWJ'
AND qd.rec_status = 0
AND qr.rec_status = 0
AND cp.rec_status = 0
</select>
<select id="queryXGZL" resultType="java.lang.String">
SELECT
qr.answer
FROM
t_qcp_questionnaire_detail AS qd
LEFT JOIN t_qcp_questionnaire_record AS qr ON qd.id = qr.questionnaire_detail_id
LEFT JOIN t_qcp_code_parent AS cp ON qr.question_code = cp.question_code
WHERE
qd.id = #{detailId}
AND cp.question_code = 'XGZL'
AND qd.rec_status = 0
AND qr.rec_status = 0
AND cp.rec_status = 0
</select>
<select id="querySonOfXGZL" resultType="java.lang.Integer">
SELECT
COUNT(qd.id)
FROM
t_qcp_questionnaire_detail AS qd
LEFT JOIN t_qcp_questionnaire_record AS qr ON qd.id = qr.questionnaire_detail_id
LEFT JOIN t_qcp_code_parent AS cp ON qr.question_code = cp.question_code
WHERE
qd.id = #{detailId}
AND cp.parent_code = 'XGZL'
AND qd.rec_status = 0
AND qr.rec_status = 0
AND cp.rec_status = 0
</select>
<select id="queryIsSubmit" resultType="java.lang.Integer">
SELECT
COUNT(qd.id)
FROM
t_qcp_questionnaire_detail AS qd
LEFT JOIN t_qcp_questionnaire_record AS qr ON qd.id = qr.questionnaire_detail_id
WHERE
qr.answer = #{name}
AND qd.submit_status = 1
AND qd.rec_status = 0
AND qr.rec_status = 0
</select>
</mapper>

Loading…
Cancel
Save