Browse Source

高危筛查问卷接口

bfyMa
zhangye 3 years ago
parent
commit
e818300814
  1. 3
      src/main/java/com/ccsens/carbasics/api/QuestionnaireController.java
  2. 74
      src/main/java/com/ccsens/carbasics/api/ScreeningController.java
  3. 38
      src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java
  4. 84
      src/main/java/com/ccsens/carbasics/bean/vo/QuestionnaireVo.java
  5. 8
      src/main/java/com/ccsens/carbasics/persist/dao/OrganizationPositionDao.java
  6. 29
      src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDao.java
  7. 1
      src/main/java/com/ccsens/carbasics/service/IQuestionnaireService.java
  8. 43
      src/main/java/com/ccsens/carbasics/service/IScreeningService.java
  9. 2
      src/main/java/com/ccsens/carbasics/service/ImportService.java
  10. 27
      src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java
  11. 97
      src/main/java/com/ccsens/carbasics/service/ScreeningService.java
  12. 8
      src/main/java/com/ccsens/carbasics/util/Constant.java
  13. 1
      src/main/resources/application-dev.yml
  14. 9
      src/main/resources/application-pre.yml
  15. 3
      src/main/resources/application-prod.yml
  16. 3
      src/main/resources/application-test.yml
  17. 4
      src/main/resources/application.yml
  18. 21
      src/main/resources/mapper_dao/OrganizationPositionDao.xml
  19. 188
      src/main/resources/mapper_dao/QuestionnaireDao.xml

3
src/main/java/com/ccsens/carbasics/api/QuestionnaireController.java

@ -9,6 +9,8 @@ import com.ccsens.carbasics.bean.vo.QuestionnaireVo;
import com.ccsens.carbasics.service.IQuestionnaireService;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.common.bean.dto.CPluginDto;
import com.ccsens.common.bean.dto.CShareDto;
import com.ccsens.common.bean.vo.CShareVo;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
@ -179,4 +181,5 @@ public class QuestionnaireController {
log.info("问卷查询医院列表结束{}",hospitalList);
return JsonResponse.newInstance().ok(hospitalList);
}
}

74
src/main/java/com/ccsens/carbasics/api/ScreeningController.java

@ -0,0 +1,74 @@
package com.ccsens.carbasics.api;
import com.ccsens.carbasics.bean.dto.QuestionnaireDto;
import com.ccsens.carbasics.bean.vo.QuestionnaireVo;
import com.ccsens.carbasics.service.IScreeningService;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@Api(tags = "高危筛查问卷相关接口" , description = "")
@RestController
@RequestMapping("/screening")
@Slf4j
public class ScreeningController {
@Resource
private IScreeningService screeningService;
@MustLogin
@ApiOperation(value = "提交高危筛查问卷", notes = "")
@RequestMapping(value = "/submit", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse submitQuestionnaire(@ApiParam @Validated @RequestBody QueryDto<QuestionnaireDto.SubmitScreeningQuestionnaire> params) throws Exception {
log.info("提交高危筛查问卷:{}",params);
screeningService.submitQuestionnaire(params.getParam(), params.getUserId());
log.info("提交高危筛查问卷");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "分享问卷(生成分享二维码)", notes = "")
@RequestMapping(value = "/share", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<QuestionnaireVo.ShareQuestionnaire> shareQuestionnaire(@ApiParam @Validated @RequestBody QueryDto<QuestionnaireDto.ShareQuestionnaire> params) throws Exception {
log.info("分享问卷:{}",params);
QuestionnaireVo.ShareQuestionnaire shareQuestionnaire = screeningService.shareQuestionnaire(params.getParam(), params.getUserId());
log.info("分享问卷结束:{}",shareQuestionnaire);
return JsonResponse.newInstance().ok(shareQuestionnaire);
}
@MustLogin
@ApiOperation(value = "村医查看工作量", notes = "")
@RequestMapping(value = "/village/workload", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<QuestionnaireVo.VillageWorkload> villageWorkload(@ApiParam @Validated @RequestBody QueryDto<QuestionnaireDto.VillageWorkload> params) throws Exception {
log.info("村医查看工作量:{}",params);
QuestionnaireVo.VillageWorkload villageWorkload = screeningService.villageWorkload(params.getParam(), params.getUserId());
log.info("村医查看工作量结束");
return JsonResponse.newInstance().ok(villageWorkload);
}
@MustLogin
@ApiOperation(value = "卫生院查看村医工作量", notes = "")
@RequestMapping(value = "/center/workload", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<QuestionnaireVo.CenterWorkload> centerWorkload(@ApiParam @Validated @RequestBody QueryDto<QuestionnaireDto.CenterWorkload> params) throws Exception {
log.info("卫生院查看村医工作量:{}",params);
List<QuestionnaireVo.CenterWorkload> centerWorkload = screeningService.centerWorkload(params.getParam(), params.getUserId());
log.info("卫生院查看村医工作量结束");
return JsonResponse.newInstance().ok(centerWorkload);
}
}

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

@ -74,7 +74,7 @@ public class QuestionnaireDto {
@ApiModel("创建问卷详情")
public static class CreateDetail {
@NotNull(message = "问卷类型不能为空")
@ApiModelProperty("问卷类型(0-卒中)")
@ApiModelProperty("问卷类型(0-卒中 1-高危筛查)")
private Byte type;
}
@ -82,7 +82,7 @@ public class QuestionnaireDto {
@ApiModel("判断是否提交了问卷-请求")
public static class Submit {
@NotNull(message = "问卷类型不能为空")
@ApiModelProperty("问卷类型(0-卒中)")
@ApiModelProperty("问卷类型(0-卒中 1-高危筛查)")
private Byte type;
}
@ -106,4 +106,38 @@ public class QuestionnaireDto {
private String name;
}
@Data
@ApiModel("分享问卷")
public static class ShareQuestionnaire {
@NotNull(message = "问卷类型不能为空")
@ApiModelProperty("问卷类型(0-卒中 1-高危筛查)")
private Byte type;
@ApiModelProperty("角色id")
private Long roleId;
}
@Data
@ApiModel("村医查看自己的工作量")
public static class VillageWorkload {
@ApiModelProperty("高危类型 0全部 1高危 2中危 3低危 默认为0")
private byte type;
@ApiModelProperty("患者名称")
private String name;
}
@Data
@ApiModel("提交高危筛查问卷")
public static class SubmitScreeningQuestionnaire {
@NotNull(message = "问卷详情id不能为空")
@ApiModelProperty("问卷详情id")
private Long detailId;
}
@Data
@ApiModel("卫生院查看工作量")
public static class CenterWorkload {
@ApiModelProperty("角色id")
private Long roleId;
}
}

84
src/main/java/com/ccsens/carbasics/bean/vo/QuestionnaireVo.java

@ -1,6 +1,9 @@
package com.ccsens.carbasics.bean.vo;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.carbasics.bean.po.QuestionnaireDetail;
import com.ccsens.util.DesensitizedUtils;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -110,4 +113,85 @@ public class QuestionnaireVo {
@ApiModelProperty("医院名称")
private String name;
}
@Data
@ApiModel("返回-分享问卷信息")
public static class ShareQuestionnaire {
@ApiModelProperty("医院名称")
private String hospitalName;
@ApiModelProperty("医生名称")
private String doctorName;
@ApiModelProperty("二维码路径")
private String qrCode;
}
@Data
@ApiModel("返回-村医查看工作量")
public static class VillageWorkload {
@ApiModelProperty("总数")
private int totalNum;
@ApiModelProperty("高危数量")
private int highNum;
@ApiModelProperty("中危数量")
private int middleNum;
@ApiModelProperty("中危数量")
private int lowNum;
@ApiModelProperty("患者列表")
private List<WorkloadList> workloadLists;
}
@Data
@ApiModel("返回-村医查看工作量-患者列表")
public static class WorkloadList {
@ApiModelProperty("问卷详情id")
private Long detailId;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("手机号(脱敏)")
private String phone;
@ApiModelProperty("状态 0正常 1高危 2中危 3低危")
private Byte type;
@ApiModelProperty("提交时间")
private Long submitTime;
@JsonIgnore
private String illnessType;
public String getPhone() {
String p = phone;
if(ObjectUtil.isNotNull(phone)){
p = DesensitizedUtils.mobilePhone(phone);
}
return p;
}
public Byte getType() {
byte b = 0;
if(StrUtil.isNotBlank(illnessType)){
if(illnessType.split(",").length >= 3){
b = 1;
}else if(illnessType.contains("09") || illnessType.contains("10")){
b = 1;
}else if(illnessType.contains("01") || illnessType.contains("03") || illnessType.contains("04")){
b = 2;
}else if(illnessType.contains("02") || illnessType.contains("05")
|| illnessType.contains("06") || illnessType.contains("07") || illnessType.contains("08")){
b = 3;
}
}
return b;
}
}
@Data
@ApiModel("返回-卫生院查看工作量")
public static class CenterWorkload {
@ApiModelProperty("医生id")
private Long doctorId;
@ApiModelProperty("医生名")
private String doctorName;
@ApiModelProperty("总数")
private int totalNum;
@ApiModelProperty("高危数量")
private int highNum;
}
}

8
src/main/java/com/ccsens/carbasics/persist/dao/OrganizationPositionDao.java

@ -46,4 +46,12 @@ public interface OrganizationPositionDao extends OrganizationPositionMapper {
* @return >=1 重复
*/
Integer queryNameRepeat(@Param("departmentId") Long departmentId,@Param("positionName") String positionName);
/**
* 查找医院和医生名
* @param roleId 角色id职位id
* @param userId userId
* @return 返回
*/
QuestionnaireVo.ShareQuestionnaire getHospitalNameAndDoctorName(@Param("roleId") Long roleId, @Param("userId") Long userId);
}

29
src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDao.java

@ -50,4 +50,33 @@ public interface QuestionnaireDao extends QuestionnaireMapper {
* @return 卒中统计的问卷列表
*/
List<StatisticsVo.QuestionnaireInfo> queryStatistics();
/**
* 村医查看工作量数量
* @param now 当前时间
* @return 返回各类型数量
*/
QuestionnaireVo.VillageWorkload villageWorkloadNum(@Param("userId")Long userId, @Param("now")long now);
/**
* 村医获取工作量中的患者列表
* @param type 类型
* @param name 姓名
* @return 返回患者列表
*/
List<QuestionnaireVo.WorkloadList> villageGetWorkload(@Param("userId")Long userId, @Param("now")long now,@Param("type")byte type, @Param("name")String name);
/**
* 查看卫生院下的医生
* @param roleId 卫生院角色id
* @return 返回医生id
*/
List<Long> queryDoctorIdByRoleId(@Param("roleId")Long roleId);
/**
* 卫生院查看工作量
* @param doctorIdList 医生列表
* @return 返回医生工作量列表
*/
List<QuestionnaireVo.CenterWorkload> centerWorkload(@Param("now")long now,@Param("doctorIdList") List<Long> doctorIdList);
}

1
src/main/java/com/ccsens/carbasics/service/IQuestionnaireService.java

@ -109,4 +109,5 @@ public interface IQuestionnaireService {
* @return 医院列表
*/
List<QuestionnaireVo.HospitalName> queryHospitalList(QuestionnaireDto.QueryHospitalList param, Long userId);
}

43
src/main/java/com/ccsens/carbasics/service/IScreeningService.java

@ -0,0 +1,43 @@
package com.ccsens.carbasics.service;
import com.ccsens.carbasics.bean.dto.QuestionnaireDto;
import com.ccsens.carbasics.bean.vo.QuestionnaireVo;
import java.util.List;
/**
* @author
*/
public interface IScreeningService {
/**
* 提交高危筛查问卷
* @param param 问卷详情id
* @param userId userId
*/
void submitQuestionnaire(QuestionnaireDto.SubmitScreeningQuestionnaire param, Long userId);
/**
* 分享问卷
* @param param 问卷类型
* @param userId userId
* @return 返回二维码路径
*/
QuestionnaireVo.ShareQuestionnaire shareQuestionnaire(QuestionnaireDto.ShareQuestionnaire param, Long userId) throws Exception;
/**
* 村医查看工作量
* @param param 搜索条件
* @param userId userId
* @return 返回工作量
*/
QuestionnaireVo.VillageWorkload villageWorkload(QuestionnaireDto.VillageWorkload param, Long userId);
/**
* 卫生院查看工作量
* @param param 角色id
* @param userId userId
* @return 返回医生列表
*/
List<QuestionnaireVo.CenterWorkload> centerWorkload(QuestionnaireDto.CenterWorkload param, Long userId);
}

2
src/main/java/com/ccsens/carbasics/service/ImportService.java

@ -313,6 +313,8 @@ public class ImportService implements IImportService {
LabelBusinessExample labelBusinessExample = new LabelBusinessExample();
labelBusinessExample.createCriteria().andBusinessIdEqualTo(projectId);
labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample);
}else {
throw new BaseException(DefaultCodeError.PROJECT_ERROR);
}
}
//获取项目信息的那一行

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

@ -20,6 +20,7 @@ import com.ccsens.cloudutil.bean.tall.dto.ProjectDto;
import com.ccsens.cloudutil.feign.Tall3FeignClient;
import com.ccsens.util.PoiUtil;
import com.ccsens.util.PropUtil;
import com.ccsens.util.QrCodeUtil;
import com.ccsens.util.RedisUtil;
import com.ccsens.util.exception.BaseException;
import com.itextpdf.text.pdf.PdfDiv;
@ -267,12 +268,24 @@ public class QuestionnaireService implements IQuestionnaireService{
@Override
public QuestionnaireVo.DetailInfo createDetail(QuestionnaireDto.CreateDetail param, Long userId) {
long currentTime = System.currentTimeMillis();
QuestionnaireVo.DetailInfo detailInfo = questionnaireDetailDao.queryIsExist(param.getType(),userId,currentTime);
if (ObjectUtil.isNull(detailInfo)){
throw new BaseException(DefaultCodeError.QUESTIONNAIRE_DETAIL_ERROR);
}
if (ObjectUtil.isNull(detailInfo.getId())){
throw new BaseException(DefaultCodeError.QUESTIONNAIRE_DETAIL_ERROR);
QuestionnaireVo.DetailInfo detailInfo = new QuestionnaireVo.DetailInfo();
if(param.getType() == 0){
detailInfo = questionnaireDetailDao.queryIsExist(param.getType(),userId,currentTime);
if (ObjectUtil.isNull(detailInfo)){
throw new BaseException(DefaultCodeError.QUESTIONNAIRE_DETAIL_ERROR);
}
if (ObjectUtil.isNull(detailInfo.getId())){
throw new BaseException(DefaultCodeError.QUESTIONNAIRE_DETAIL_ERROR);
}
}else {
//根据查找问卷类型
QuestionnaireExample questionnaireExample = new QuestionnaireExample();
questionnaireExample.createCriteria().andTypeEqualTo(param.getType())
.andWriteStartTimeLessThan(currentTime).andWriteEndTimeGreaterThan(currentTime);
List<Questionnaire> questionnaires = questionnaireDao.selectByExample(questionnaireExample);
if(CollectionUtil.isNotEmpty(questionnaires)){
detailInfo.setId(questionnaires.get(0).getId());
}
}
if (ObjectUtil.isNull(detailInfo.getDetailId())) {
QuestionnaireDetail detail = new QuestionnaireDetail();
@ -282,7 +295,6 @@ public class QuestionnaireService implements IQuestionnaireService{
detail.setSubmitStatus(Constant.SubmitStatus.save.status);
questionnaireDetailDao.insertSelective(detail);
detailInfo.setDetailId(detail.getId());
return detailInfo;
}
return detailInfo;
}
@ -776,4 +788,5 @@ public class QuestionnaireService implements IQuestionnaireService{
// }
return "";
}
}

97
src/main/java/com/ccsens/carbasics/service/ScreeningService.java

@ -0,0 +1,97 @@
package com.ccsens.carbasics.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.carbasics.bean.dto.QuestionnaireDto;
import com.ccsens.carbasics.bean.po.QuestionnaireDetail;
import com.ccsens.carbasics.bean.vo.QuestionnaireVo;
import com.ccsens.carbasics.persist.dao.OrganizationPositionDao;
import com.ccsens.carbasics.persist.dao.QuestionnaireDao;
import com.ccsens.carbasics.persist.dao.QuestionnaireDetailDao;
import com.ccsens.carbasics.util.Constant;
import com.ccsens.carbasics.util.DefaultCodeError;
import com.ccsens.util.PropUtil;
import com.ccsens.util.QrCodeUtil;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ScreeningService implements IScreeningService {
@Value("${question.screeningUrl}")
private String screeningUrl;
@Resource
private OrganizationPositionDao positionDao;
@Resource
private QuestionnaireDetailDao questionnaireDetailDao;
@Resource
private QuestionnaireDao questionnaireDao;
@Override
public void submitQuestionnaire(QuestionnaireDto.SubmitScreeningQuestionnaire param, Long userId) {
//根据问卷详情id查询问卷
QuestionnaireDetail detail = questionnaireDetailDao.selectByPrimaryKey(param.getDetailId());
if(ObjectUtil.isNull(detail)){
throw new BaseException(DefaultCodeError.QUESTIONNAIRE_DETAIL_ERROR);
}
//修改提交状态
QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
questionnaireDetail.setId(param.getDetailId());
questionnaireDetail.setSubmitStatus(Constant.SubmitStatus.submit.status);
questionnaireDetailDao.updateByPrimaryKeySelective(questionnaireDetail);
}
@Override
public QuestionnaireVo.ShareQuestionnaire shareQuestionnaire(QuestionnaireDto.ShareQuestionnaire param, Long userId) throws Exception {
//查找部门和成员名
QuestionnaireVo.ShareQuestionnaire shareQuestionnaire = positionDao.getHospitalNameAndDoctorName(param.getRoleId(),userId);
if(ObjectUtil.isNull(shareQuestionnaire)){
throw new BaseException(DefaultCodeError.NO_HOSPITAL);
}
if(param.getType() == 1){
String qrCode = screeningUrl + "?userId=" + userId;
String path = QrCodeUtil.getQrCodeWithUtf8(qrCode, PropUtil.path);
shareQuestionnaire.setQrCode(PropUtil.imgDomain + path);
}
return shareQuestionnaire;
}
@Override
public QuestionnaireVo.VillageWorkload villageWorkload(QuestionnaireDto.VillageWorkload param, Long userId) {
long now = System.currentTimeMillis();
//查找各等级的数量
QuestionnaireVo.VillageWorkload villageWorkload = questionnaireDao.villageWorkloadNum(userId,now);
//符合条件的提交问卷的患者列表
List<QuestionnaireVo.WorkloadList> workloadListList = questionnaireDao.villageGetWorkload(userId,now,param.getType(),param.getName());
//返回
villageWorkload.setWorkloadLists(workloadListList);
return villageWorkload;
}
@Override
public List<QuestionnaireVo.CenterWorkload> centerWorkload(QuestionnaireDto.CenterWorkload param, Long userId) {
//查看医生列表
List<Long> doctorIdList = questionnaireDao.queryDoctorIdByRoleId(param.getRoleId());
//查找每个医生的工作量
long now = System.currentTimeMillis();
List<QuestionnaireVo.CenterWorkload> centerWorkloadList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(doctorIdList)) {
centerWorkloadList = questionnaireDao.centerWorkload(now,doctorIdList);
}
return centerWorkloadList;
}
}

8
src/main/java/com/ccsens/carbasics/util/Constant.java

@ -753,4 +753,12 @@ public class Constant {
* 创建项目,机构项目
*/
public static final String DEPARTMENT_POSITION_KEY = "department_position_key";
public final static class Questionnaire {
/**
*
*/
public static final String HOSPITAL_LIST_KEY = "hospital_list_key";
}
}

1
src/main/resources/application-dev.yml

@ -53,3 +53,4 @@ wisdom:
time: 600000
question:
template: D:\wechat\WeChat Files\wxid_km0nxjweubc522\FileStorage\File\2021-10\暴风眼问卷导出表格模板.xlsx
screeningUrl: https://test.tall.wiki/carbasics-1/screen-survey

9
src/main/resources/application-pre.yml

@ -43,12 +43,13 @@ eureka:
ip-address: 127.0.0.1
file:
path: /home/carbiscs/uploads/
domain: https://dd.tall.wiki/gateway/carbasics/v4.0
imgDomain: https://dd.tall.wiki/gateway/carbasics/v4.0/uploads/
path: /home/carbiscs/server/uploads/
domain: http://101.201.226.163/gateway/carbasics/v4.0
imgDomain: http://101.201.226.163/gateway/carbasics/v4.0/uploads/
wisdom:
weight: 10000
time: 600000
question:
template: /home/carbasics/uploads/template/暴风眼问卷导出表格模板.xlsx
pdftemplate: /home/carbasics/uploads/template/卒中绿色通道时间节点控制表form版备用.pdf
pdftemplate: /home/carbasics/uploads/template/卒中绿色通道时间节点控制表form版备用.pdf
screeningUrl: https://test.tall.wiki/carbasics-1/screen-survey

3
src/main/resources/application-prod.yml

@ -41,4 +41,5 @@ wisdom:
weight: 10000
time: 600000
question:
template: /home/cloud/carbasics/uploads/template/暴风眼问卷导出表格模板.xlsx
template: /home/cloud/carbasics/uploads/template/暴风眼问卷导出表格模板.xlsx
screeningUrl: https://test.tall.wiki/carbasics-1/screen-survey

3
src/main/resources/application-test.yml

@ -51,4 +51,5 @@ wisdom:
time: 600000
question:
template: /home/cloud/carbasics/uploads/template/暴风眼问卷导出表格模板.xlsx
pdftemplate: /home/cloud/carbasics/uploads/template/卒中绿色通道时间节点控制表form版备用.pdf
pdftemplate: /home/cloud/carbasics/uploads/template/卒中绿色通道时间节点控制表form版备用.pdf
screeningUrl: https://test.tall.wiki/carbasics-1/screen-survey

4
src/main/resources/application.yml

@ -1,4 +1,4 @@
spring:
profiles:
active: prod
include: common, util-prod
active: pre
include: common, util-pre

21
src/main/resources/mapper_dao/OrganizationPositionDao.xml

@ -76,5 +76,26 @@
AND p.department_id = #{departmentId}
AND p.`name` = #{positionName}
</select>
<select id="getHospitalNameAndDoctorName"
resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$ShareQuestionnaire">
SELECT
d.`name` as hospitalName,
m.`name` as doctorName
FROM
t_organization_position p,
t_organization_member_position mp,
t_organization_member m,
t_organization_department d
WHERE
p.id = mp.position_id
and mp.member_id = m.id
and p.department_id = d.id
and p.rec_status = 0
and mp.rec_status = 0
and m.rec_status = 0
and d.rec_status = 0
and m.user_id = #{userId}
and p.id = #{roleId}
</select>
</mapper>

188
src/main/resources/mapper_dao/QuestionnaireDao.xml

@ -41,7 +41,7 @@
<result column="positionId" property="positionId"/>
</collection>
</resultMap>
<select id="queryNotWrite" resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$WriteStatus">
@ -162,6 +162,192 @@
AND type = 0
ORDER BY end_time DESC
</select>
<select id="villageWorkloadNum" resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$VillageWorkload">
SELECT
count(*) as totalNum,
count(if(a.type = 1,1,null)) as highNum,
count(if(a.type = 2,1,null)) as middleNum,
count(if(a.type = 3,1,null)) as lowNum
FROM
(
SELECT
q.id,
r.answer,
CASE 1
WHEN IF(LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) >= 2, 1, 0 ) THEN '1'
WHEN IF((FIND_IN_SET('09',r.answer) = 1) or (FIND_IN_SET('10',r.answer) = 1), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r.answer) = 1) or (FIND_IN_SET('03',r.answer) = 1) or (FIND_IN_SET('04',r.answer) = 1), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r.answer) = 1) or (FIND_IN_SET('05',r.answer) = 1) or (FIND_IN_SET('06',r.answer) = 1) or (FIND_IN_SET('07',r.answer) = 1) or (FIND_IN_SET('08',r.answer) = 1) , 1, 0) THEN '3'
ELSE '0'
END as type
FROM
(
SELECT
qd.id
FROM
t_qcp_questionnaire q,
t_qcp_questionnaire_detail qd
WHERE
q.id = qd.questionnaire_id
and q.type = 1
and q.start_time &lt; #{now}
and q.end_time > #{now}
and q.rec_status = 0
and qd.rec_status = 0
and qd.user_id = #{userId}
and qd.submit_status = 1
) q
LEFT JOIN t_qcp_questionnaire_record r
on q.id = r.questionnaire_detail_id and r.rec_status = 0
and r.question_code = 'SCWJ-ILLNESS'
)a
</select>
<select id="villageGetWorkload" resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$WorkloadList">
SELECT
a.id as detailId,
a.submitTime,
r1.answer as `name`,
r2.answer as phone,
r3.answer as illnessType
FROM
(
SELECT
q.id,
q.submitTime
FROM
(
SELECT
qd.id,
UNIX_TIMESTAMP(qd.updated_at) * 1000 as submitTime
FROM
t_qcp_questionnaire q,
t_qcp_questionnaire_detail qd
WHERE
q.id = qd.questionnaire_id
and q.type = 1
and q.start_time &lt; #{now}
and q.end_time > #{now}
and q.rec_status = 0
and qd.rec_status = 0
and qd.user_id = #{userId}
and qd.submit_status = 1
) q
LEFT JOIN t_qcp_questionnaire_record r
on q.id = r.questionnaire_detail_id and r.rec_status = 0
<where>
<if test="name != null and name != ''">
and r.question_code = 'SCWJ-NAME'
and r.answer like CONCAT('%',#{name},'%')
</if>
<if test="type == 1">
and r.question_code = 'SCWJ-ILLNESS'
and
(
LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) >= 2
or (FIND_IN_SET('09',r.answer) = 1)
or (FIND_IN_SET('10',r.answer) = 1)
)
</if>
<if test="type == 2">
and r.question_code = 'SCWJ-ILLNESS'
and LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) &lt; 2
and
(
(FIND_IN_SET('01',r.answer) = 1)
or (FIND_IN_SET('03',r.answer) = 1)
or (FIND_IN_SET('04',r.answer) = 1)
)
</if>
<if test="type == 3">
and r.question_code = 'SCWJ-ILLNESS'
and LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) &lt; 2
and
(
(FIND_IN_SET('02',r.answer) = 1)
or (FIND_IN_SET('05',r.answer) = 1)
or (FIND_IN_SET('06',r.answer) = 1)
or (FIND_IN_SET('07',r.answer) = 1)
or (FIND_IN_SET('08',r.answer) = 1)
)
</if>
</where>
GROUP BY q.id
)a
LEFT JOIN t_qcp_questionnaire_record r1 on a.id = r1.questionnaire_detail_id and r1.question_code = 'SCWJ-NAME' and r1.rec_status = 0
LEFT JOIN t_qcp_questionnaire_record r2 on a.id = r2.questionnaire_detail_id and r2.question_code = 'SCWJ-PHONE'and r2.rec_status = 0
LEFT JOIN t_qcp_questionnaire_record r3 on a.id = r3.questionnaire_detail_id and r3.question_code = 'SCWJ-ILLNESS'and r3.rec_status = 0
</select>
<select id="queryDoctorIdByRoleId" resultType="java.lang.Long">
SELECT
m.id
FROM
t_organization_position p1,
t_organization_department_parent dp,
t_organization_member_position mp,
t_organization_member m
WHERE
p1.department_id = dp.parent_id
and mp.department_id = dp.department_id
and m.id = mp.member_id
and p1.id = #{roleId}
and p1.rec_status = 0
and dp.rec_status = 0
and mp.rec_status = 0
and m.rec_status = 0
</select>
<select id="centerWorkload" resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$CenterWorkload">
SELECT
count(*) as totalNum,
count(if(a.type = 1,1,null)) as highNum,
count(if(a.type = 2,1,null)) as middleNum,
count(if(a.type = 3,1,null)) as lowNum,
a.memberId as doctorId,
a.memberName as doctorName
FROM
(
SELECT
q.id,
r.answer,
CASE 1
WHEN IF(LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) >= 2, 1, 0 ) THEN '1'
WHEN IF((FIND_IN_SET('09',r.answer) = 1) or (FIND_IN_SET('10',r.answer) = 1), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r.answer) = 1) or (FIND_IN_SET('03',r.answer) = 1) or (FIND_IN_SET('04',r.answer) = 1), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r.answer) = 1) or (FIND_IN_SET('05',r.answer) = 1) or (FIND_IN_SET('06',r.answer) = 1) or (FIND_IN_SET('07',r.answer) = 1) or (FIND_IN_SET('08',r.answer) = 1) , 1, 0) THEN '3'
ELSE '0'
END as type,
q.memberId,
q.memberName
FROM
(
SELECT
qd.id,
m.id as memberId,
m.`name` as memberName
FROM
t_qcp_questionnaire q,
t_qcp_questionnaire_detail qd,
t_organization_member m
WHERE
q.id = qd.questionnaire_id
and qd.user_id = m.user_id
and q.type = 1
and q.start_time &lt; #{now}
and q.end_time > #{now}
and q.rec_status = 0
and qd.rec_status = 0
and m.rec_status = 0
and m.id in
<foreach collection="doctorIdList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
and qd.submit_status = 1
) q
LEFT JOIN t_qcp_questionnaire_record r
on q.id = r.questionnaire_detail_id and r.rec_status = 0
and r.question_code = 'SCWJ-ILLNESS'
)a
GROUP BY a.memberId
</select>
</mapper>
Loading…
Cancel
Save