Browse Source

20221114增加后台查看问卷详情接口

bfyMa
zhangye 3 years ago
parent
commit
aa0feb328e
  1. 43
      src/main/java/com/ccsens/carbasics/api/manage/ManageQuestionnaireController.java
  2. 47
      src/main/java/com/ccsens/carbasics/api/manage/ManageStatisticalController.java
  3. 35
      src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java
  4. 1
      src/main/java/com/ccsens/carbasics/bean/vo/QuestionnaireVo.java
  5. 7
      src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireRecordDao.java
  6. 3
      src/main/java/com/ccsens/carbasics/service/AccountManageService.java
  7. 17
      src/main/java/com/ccsens/carbasics/service/IManageQuestionnaireService.java
  8. 74
      src/main/java/com/ccsens/carbasics/service/ManageQuestionnaireService.java
  9. 6
      src/main/resources/application-test.yml
  10. 4
      src/main/resources/application.yml
  11. 63
      src/main/resources/mapper_dao/QuestionnaireRecordDao.xml

43
src/main/java/com/ccsens/carbasics/api/manage/ManageQuestionnaireController.java

@ -0,0 +1,43 @@
package com.ccsens.carbasics.api.manage;
import com.ccsens.carbasics.bean.dto.QuestionnaireDto;
import com.ccsens.carbasics.service.IManageQuestionnaireService;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import com.github.pagehelper.PageInfo;
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;
import java.util.Map;
@Api(tags = "问查调卷相关接口" , description = "")
@RestController
@RequestMapping("/manage/questionnaire")
@Slf4j
public class ManageQuestionnaireController {
@Resource
private IManageQuestionnaireService manageQuestionnaireService;
@MustLogin
@ApiOperation(value = "后台查看问卷填写记录", notes = "")
@RequestMapping(value = "/list", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PageInfo<Map<String, String>>> queryQuestionnaireDetail(@ApiParam @Validated @RequestBody QueryDto<QuestionnaireDto.BackQueryQuestionnaire> params) throws Exception{
log.info("后台查看问卷填写记录{}", params);
// 未添加时间条件
PageInfo<Map<String, String>> o = manageQuestionnaireService.queryQuestionnaireDetail(params.getParam(), params.getUserId());
return JsonResponse.newInstance().ok(o);
}
}

47
src/main/java/com/ccsens/carbasics/api/manage/ManageStatisticalController.java

@ -0,0 +1,47 @@
package com.ccsens.carbasics.api.manage;
import com.ccsens.carbasics.bean.dto.StatisticalDto;
import com.ccsens.carbasics.bean.vo.StatisticalVo;
import com.ccsens.carbasics.service.IStatisticalService;
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;
/**
* @description: 统计查询
* @author: whj
* @time: 2021/7/28 8:54
*/
@Api(tags = "统计查询")
@RestController
@RequestMapping("/manage/statistical")
@Slf4j
public class ManageStatisticalController {
@Resource
private IStatisticalService statisticalService;
@MustLogin
@ApiOperation(value = "跑道图", notes = "跑道图")
@RequestMapping(value = "/runway", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticalVo.Common> runway(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.Time> params) {
log.info("跑道图:{}", params);
StatisticalVo.Common common = statisticalService.runway(params.getParam(), params.getUserId());
log.info("跑道图结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
}

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

@ -205,4 +205,39 @@ public class QuestionnaireDto {
private Byte healthTracking;
}
@Data
@ApiModel("后台查找问卷填写信息列表-返回")
public static class BackQueryQuestionnaire {
@ApiModelProperty("地区信息 市/县")
private String county;
@ApiModelProperty("医院名称")
private String hospitalName;
@ApiModelProperty("医院等级")
private String hospitalLevel;
@ApiModelProperty("联系人")
private String contacts;
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("是否为脑防委高级卒中中心")
private String cuzhong;
@ApiModelProperty("是否为脑防委卒中防治中心")
private String fangzhi;
@ApiModelProperty("是否为山西省溶栓2.0版地图医院")
private String hosMap;
@ApiModelProperty("是否开展血管内治疗")
private String xgzl;
@ApiModelProperty("提交时间开始")
private Long submitTimeStart;
@ApiModelProperty("提交时间结束")
private Long submitTimeEnd;
@ApiModelProperty("第几页")
@Min(value = 1)
private int pageNum = 1;
@ApiModelProperty("每页多少条")
@Min(value = 1)
@Max(value=100)
private int pageSize = 10;
}
}

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

@ -2,7 +2,6 @@ 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;

7
src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireRecordDao.java

@ -47,4 +47,11 @@ public interface QuestionnaireRecordDao extends QuestionnaireRecordMapper {
* @return 医院列表
*/
List<QuestionnaireVo.HospitalName> queryHospitalList(@Param("param") QuestionnaireDto.QueryHospitalList param);
/**
* 后台查看问卷提交记录
* @param codes
* @return
*/
List<Map<String, String>> backQueryRecordList(@Param("param")QuestionnaireDto.BackQueryQuestionnaire param, @Param("codes") List<CodeVo.Basic> codes);
}

3
src/main/java/com/ccsens/carbasics/service/AccountManageService.java

@ -108,7 +108,8 @@ public class AccountManageService implements IAccountManageService {
}
//查询职位id
Long positionId = positionDao.queryByCode(accountManageInfo.getPositionCode(),accountManageInfo.getHospitalName());
// Long positionId = positionDao.queryByCode(accountManageInfo.getPositionCode(),accountManageInfo.getHospitalName());
Long positionId = null;
questionnaireService.createOrganization(accountManageInfo.getHospitalName(),accountManageInfo.getDepartmentName(),accountManageInfo.getSubmitterUserId(),
accountManageInfo.getSubmitter(),accountManageInfo.getSubmitterPhone(),positionId,accountManageInfo.getPositionName(),accountManageInfo.getPositionCode(),accountManageInfo.getDepartmentCode());
// questionnaireService.createHospitalAndProject(accountManageInfo.getSubmitterPhone(),accountManageInfo.getSubmitterUserId(),"",

17
src/main/java/com/ccsens/carbasics/service/IManageQuestionnaireService.java

@ -0,0 +1,17 @@
package com.ccsens.carbasics.service;
import com.ccsens.carbasics.bean.dto.QuestionnaireDto;
import com.github.pagehelper.PageInfo;
import java.util.List;
import java.util.Map;
public interface IManageQuestionnaireService {
/**
* 后台查找问卷列表
* @param param
* @param userId
*/
PageInfo<Map<String, String>> queryQuestionnaireDetail(QuestionnaireDto.BackQueryQuestionnaire param, Long userId);
}

74
src/main/java/com/ccsens/carbasics/service/ManageQuestionnaireService.java

@ -0,0 +1,74 @@
package com.ccsens.carbasics.service;
import cn.hutool.core.util.StrUtil;
import com.ccsens.carbasics.bean.dto.QuestionnaireDto;
import com.ccsens.carbasics.bean.vo.CodeVo;
import com.ccsens.carbasics.bean.vo.QuestionnaireVo;
import com.ccsens.carbasics.persist.dao.AreaDao;
import com.ccsens.carbasics.persist.dao.CodeDictionariesDao;
import com.ccsens.carbasics.persist.dao.QuestionnaireRecordDao;
import com.ccsens.carbasics.util.Constant;
import com.ccsens.util.PoiUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
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.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ManageQuestionnaireService implements IManageQuestionnaireService {
@Resource
private CodeDictionariesDao codeDictionariesDao;
@Resource
private QuestionnaireRecordDao questionnaireRecordDao;
@Resource
private AreaDao areaDao;
@Override
public PageInfo<Map<String, String>> queryQuestionnaireDetail(QuestionnaireDto.BackQueryQuestionnaire param, Long userId) {
String areaCode = "CITY-COUNTY";
List<String> parentCodes = new ArrayList<>();
parentCodes.add("QXXWJ");
parentCodes.add("XGZL");
List<CodeVo.Basic> codes = codeDictionariesDao.query(parentCodes);
log.info("code数量:{}", codes.size());
PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<Map<String, String>> records = questionnaireRecordDao.backQueryRecordList(param,codes);
log.info("记录结束");
records.forEach(record ->{
String s = record.get(areaCode);
if (StrUtil.isNotBlank(s)) {
String[] split = s.split(Constant.STRING_REGEX);
List<Long> areaIds = new ArrayList<>();
for(String id: split) {
areaIds.add(Long.parseLong(id));
}
List<QuestionnaireVo.AreaBasic> areaBasics = areaDao.queryByIdArr(areaIds);
StringBuilder area = new StringBuilder();
for (QuestionnaireVo.AreaBasic areaBasic : areaBasics) {
area.append(areaBasic.getName());
}
record.put(areaCode,area.toString());
}
});
return new PageInfo<>(records);
}
}

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

@ -40,12 +40,12 @@ mybatisCache:
timeout: 1000
eureka:
instance:
ip-address: 127.0.0.1
ip-address: 101.201.226.163
file:
path: /home/cloud/carbasics/uploads/
domain: https://sd.tall.wiki/gateway/carbasics/v4.0
imgDomain: https://sd.tall.wiki/gateway/carbasics/v4.0/uploads/
domain: https://test.tall.wiki/gateway/carbasics/v4.0
imgDomain: https://test.tall.wiki/gateway/carbasics/v4.0/uploads/
wisdom:
weight: 10000
time: 600000

4
src/main/resources/application.yml

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

63
src/main/resources/mapper_dao/QuestionnaireRecordDao.xml

@ -87,5 +87,68 @@
</if>
</select>
<select id="backQueryRecordList" resultType="java.util.Map">
SELECT
*
FROM
(
select t1.id,
if(t1.submit_status=0,'保存','提交') as submitStatus,
DATE_FORMAT(t1.updated_at, '%Y-%m-%d %H:%i:%s') as updateTime,
<foreach collection="codes" item="code" separator="," close=",">
<if test="code.questionCode != 'HOS-TEL'">
(select t2.answer from
(select d.id, r.answer from t_qcp_questionnaire_detail d, t_qcp_questionnaire_record r where d.id =
r.questionnaire_detail_id and r.question_code = #{code.questionCode} and d.rec_status = 0 and
r.rec_status = 0 group by d.id) t2 where t2.id = t1.id) as #{code.questionCode}
</if>
</foreach>
(select t2.identifier from
(select d.id, a.identifier from t_qcp_questionnaire_detail d, tall3.t_sys_auth a where d.user_id = a.user_id and
a.identify_type = 1 and d.rec_status = 0 and a.rec_status = 0 group by d.id) t2 where t1.id = t2.id) as
'HOS-TEL'
from
(select d.id, d.submit_status, d.updated_at from t_qcp_questionnaire_detail d, t_qcp_questionnaire_record
r,t_qcp_questionnaire AS q where d.id = r.questionnaire_detail_id and d.rec_status = 0 and r.rec_status = 0 AND
q.rec_status = 0
) t1
group by t1.id
ORDER BY updateTime
) r
<where>
<if test="param.county != null and param.county != ''">
and r.`CITY-COUNTY` = #{param.county}
</if>
<if test="param.hospitalName != null and param.hospitalName != ''">
and r.`HOS-NAME` like concat('%',#{param.hospitalName},'%')
</if>
<if test="param.hospitalLevel != null and param.hospitalLevel != ''">
and r.`HOS-LEVEL` = #{param.hospitalLevel}
</if>
<if test="param.contacts != null and param.contacts != ''">
and r.`HOS-MAN` like concat('%',#{param.contacts},'%')
</if>
<if test="param.phone != null and param.phone != ''">
and r.`HOS-TEL` = #{param.phone}
</if>
<if test="param.cuzhong != null and param.cuzhong != ''">
and r.`HOS-CUZHONG` = #{param.cuzhong}
</if>
<if test="param.fangzhi != null and param.fangzhi != ''">
and r.`HOS-FANGZHI` = #{param.fangzhi}
</if>
<if test="param.hosMap != null and param.hosMap != ''">
and r.`HOS-MAP` = #{param.hosMap}
</if>
<if test="param.xgzl != null and param.xgzl != ''">
and r.`XGZL` = #{param.xgzl}
</if>
<if test="param.submitTimeStart != null and param.submitTimeEnd != null">
and UNIX_TIMESTAMP(r.`updateTime`)*1000 >= #{param.submitTimeStart}
and UNIX_TIMESTAMP(r.`updateTime`)*1000 &lt;= #{param.submitTimeEnd}
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save