ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -1,5 +1,6 @@ package com.ruoyi.web.controller.smartor; import com.alibaba.fastjson.JSON; import com.github.pagehelper.ISelect; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -91,6 +92,9 @@ @Value("${spring.profiles.active}") private String active; @Value("${isAdmin}") private List<Long> isAdmin; @Autowired private RedisCache redisCache; @@ -552,25 +556,25 @@ if(ObjectUtils.isNotEmpty(statisticaltype)){ SysUser user = getLoginUser().getUser(); if(statisticaltype==1){ if(CollectionUtils.isEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())){ //全部病区 String deptInfo = user.getDeptInfo(); Gson gson = new Gson(); // 3. 定义 List 类型(核心) TypeToken<List<String>> typeToken = new TypeToken<List<String>>() {}; List<String> leavehospitaldistrictcodes = gson.fromJson(deptInfo, typeToken.getType()); serviceSubtaskCountReq.setLeavehospitaldistrictcodes(leavehospitaldistrictcodes); } }else if(statisticaltype==2){ if(CollectionUtils.isEmpty(serviceSubtaskCountReq.getDeptcodes())){ //全部科室 String hospInfo = user.getHospInfo(); Gson gson = new Gson(); // 3. 定义 List 类型(核心) TypeToken<List<String>> typeToken = new TypeToken<List<String>>() {}; List<String> deptCodes = gson.fromJson(hospInfo, typeToken.getType()); serviceSubtaskCountReq.setDeptcodes(deptCodes); if(!isAdmin.contains(user.getUserId())){ if(statisticaltype==1){ if(CollectionUtils.isEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())){ //全部病区 String deptInfo = user.getDeptInfo(); List<String> leavehospitaldistrictcodes = JSON.parseArray(deptInfo) .stream() .map(item -> (String) ((List<?>) item).get(0)).collect(Collectors.toList()); serviceSubtaskCountReq.setLeavehospitaldistrictcodes(leavehospitaldistrictcodes); } }else if(statisticaltype==2){ if(CollectionUtils.isEmpty(serviceSubtaskCountReq.getDeptcodes())){ //全部科室 String hospInfo = user.getHospInfo(); List<String> deptCodes = JSON.parseArray(hospInfo) .stream() .map(item -> (String) ((List<?>) item).get(0)).collect(Collectors.toList()); serviceSubtaskCountReq.setDeptcodes(deptCodes); } } } } smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
@@ -266,6 +266,16 @@ @ApiModelProperty(value = "科室病区") private Integer statisticaltype; @ApiModelProperty(value = "任务ID", required = true) private Long taskId; @Excel(name = "任务名称") @ApiModelProperty(value = "任务名称") private String taskName; @ApiModelProperty(value = "疾病病种") private String diagType; @ApiModelProperty(value = "医生编码") private String drcode; smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -2557,7 +2557,7 @@ * @return */ @Override @Cacheable(value = "specialSfStatistics", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()") // @Cacheable(value = "specialSfStatistics", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()") public List<ServiceSubtaskStatistic> getSpecialSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) { log.info("getSpecialSfStatistics的入参为:{}", serviceSubtaskCountReq); String groupKey = "drcode"; smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -122,6 +122,9 @@ </resultMap> <resultMap type="com.smartor.domain.ServiceSubtaskStatistic" id="ServiceSubtaskStatisticResult"> <result property="taskName" column="task_name"/> <result property="drcode" column="drcode"/> <result property="drname" column="drname"/> <result property="dischargeCount" column="discharge_count"/> <result property="nonFollowUp" column="non_follow_up"/> <result property="filterCount" column="filter_count"/> @@ -1508,7 +1511,13 @@ <select id="getSpecialSfStatistics" parameterType="com.smartor.domain.ServiceSubtaskCountReq" resultMap="ServiceSubtaskStatisticResult"> select a.task_name, <if test="groupKey != null and groupKey == 'task_name'"> a.task_name, </if> <if test="groupKey != null and groupKey == 'drcode'"> b.drcode, b.drname, </if> COUNT(1) AS discharge_count, SUM(CASE WHEN b.sendstate = 4 THEN 1 ELSE 0 END) AS non_follow_up, SUM(CASE WHEN b.sendstate = 4 and b.task_situation = 6 THEN 1 ELSE 0 END) AS filter_count, @@ -1607,7 +1616,12 @@ <if test="visitCount != null and visitCount > 1"> AND b.visit_count > 1 </if> GROUP BY a.task_name <if test="groupKey != null and groupKey == 'task_name'"> GROUP BY a.task_name </if> <if test="groupKey != null and groupKey == 'drcode'"> GROUP BY b.drcode, b.drname </if> </select> <select id="getSfStatisticsGroupKey" parameterType="com.smartor.domain.ServiceSubtaskCountReq"