问卷统计修改

This commit is contained in:
zhangheng 2024-12-26 18:06:17 +08:00
parent 16b28038b6
commit b6eabdc247
4 changed files with 70 additions and 1 deletions

View File

@ -306,8 +306,14 @@ public class StatisticsServiceImpl implements IStatisticsService {
//查询问卷任务
List<QuestionnaireTaskStatisticsVo> questionnaireTaskStatisticsVos = signPatientManageRouteNodeMapper.questionnaireTaskStatistics(questionnaireTaskStatisticsDto);
//遍历计算比例
List<QuestionnaireTaskVo> questionnaireTaskVos = new ArrayList<>();
if (CollectionUtils.isNotEmpty(questionnaireTaskStatisticsVos)){
for (QuestionnaireTaskStatisticsVo questionnaireTaskStatisticsVo : questionnaireTaskStatisticsVos) {
QuestionnaireTaskVo questionnaireTaskVo = new QuestionnaireTaskVo();
questionnaireTaskVo.setQuestionInfoId(questionnaireTaskStatisticsVo.getQuestionInfoId());
questionnaireTaskVo.setQuestionnaireName(questionnaireTaskStatisticsVo.getQuestionnaireName());
questionnaireTaskVo.setCreateTime(questionnaireTaskStatisticsVo.getCreateTime());
questionnaireTaskVos.add(questionnaireTaskVo);
//除数不能为空或0
if (CollectionUtils.isNotEmpty(questionnaireTaskStatisticsVo.getQuestionnaireTaskOptionStatisticsVos()) && Objects.nonNull(questionnaireTaskStatisticsVo.getTotal()) && questionnaireTaskStatisticsVo.getTotal() != 0){
questionnaireTaskStatisticsVo.getQuestionnaireTaskOptionStatisticsVos()
@ -318,8 +324,14 @@ public class StatisticsServiceImpl implements IStatisticsService {
questionnaireTaskStatisticsVo.getQuestionnaireTaskOptionStatisticsVos().forEach(item -> item.setChoiceProportion(BigDecimal.ZERO));
}
}
//组装第一层数据
questionnaireTaskVos = questionnaireTaskVos.stream().distinct().collect(Collectors.toList());
for (QuestionnaireTaskVo questionnaireTaskVo : questionnaireTaskVos) {
List<QuestionnaireTaskStatisticsVo> collect = questionnaireTaskStatisticsVos.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionInfoId()) && questionnaireTaskVo.getQuestionInfoId().equals(item.getQuestionInfoId())).collect(Collectors.toList());
questionnaireTaskVo.setQuestionnaireTaskStatisticsVos(collect);
}
}
return AjaxResult.success(questionnaireTaskStatisticsVos);
return AjaxResult.success(questionnaireTaskVos);
}
/**

View File

@ -1,9 +1,11 @@
package com.xinelu.manage.vo.statistics;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
@ -55,4 +57,16 @@ public class QuestionnaireTaskStatisticsVo {
* 选项结合
*/
private List<QuestionnaireTaskOptionStatisticsVo> questionnaireTaskOptionStatisticsVos;
/**
* 问卷标题(上层数据使用)
*/
@ApiModelProperty(value = "问卷标题")
private String questionnaireName;
/**
* 创建时间(上层数据使用)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,37 @@
package com.xinelu.manage.vo.statistics;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* @description: 问卷任务统计返回值
* @author: zh
* @create: 2024-12-22
**/
@Data
public class QuestionnaireTaskVo {
/**
* 问卷表id
*/
@ApiModelProperty(value = "问卷表id")
private Long questionInfoId;
/**
* 问卷标题
*/
@ApiModelProperty(value = "问卷标题")
private String questionnaireName;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
List<QuestionnaireTaskStatisticsVo> questionnaireTaskStatisticsVos;
}

View File

@ -94,6 +94,8 @@
<result property="questionType" column="question_type"/>
<result property="questionName" column="question_name"/>
<result property="total" column="total"/>
<result property="createTime" column="create_time"/>
<result property="questionnaireName" column="questionnaire_name"/>
<collection property="questionnaireTaskOptionStatisticsVos" javaType="java.util.List"
resultMap="QuestionnaireTaskOptionStatisticsVoResult"/>
</resultMap>
@ -1225,6 +1227,8 @@
resultType="com.xinelu.manage.vo.statistics.QuestionnaireTaskStatisticsVo"
resultMap="QuestionnaireTaskStatisticsVoResult">
select
qi.create_time,
qi.questionnaire_name,
spmrn.question_info_id,
pqsjr.question_subject_id,
pqsjr.question_number,
@ -1256,6 +1260,7 @@
WHERE a.question_info_id = spmrn.question_info_id
) total
from sign_patient_manage_route_node spmrn
left join question_info qi on spmrn.question_info_id = qi.id
left join sign_patient_manage_route spmr on spmr.id = spmrn.manage_route_id
left join patient_info p on spmr.patient_id = p.id
left join patient_question_submit_result pqsbr on spmrn.id = pqsbr.manage_route_node_id
@ -1280,6 +1285,7 @@
or (date_format(p.discharge_time,'%y%m%d') >= date_format(#{visitStartTime}, '%y%m%d') and
date_format(p.discharge_time,'%y%m%d') &lt;= date_format(#{visitEndTime}, '%y%m%d')))
</if>
order by qi.create_time DESC
</select>
<select id="selectTaskOptionContented"