liusheng
4 小时以前 a11465387cb67853ef9252a679c43ef2ff75d718
提交
已修改8个文件
已添加1个文件
164 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/VO/HeLibraryCountVO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -23,6 +23,7 @@
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserDeptService;
import com.smartor.domain.*;
import com.smartor.domain.VO.HeLibraryCountVO;
import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
import com.smartor.domain.VO.ServiceSubtaskVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
@@ -242,13 +243,12 @@
    //@PreAuthorize("@ss.hasPermi('system:taskcall:list')")
    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
    @PostMapping("/patItemByCondition")
    public TableDataInfo patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
    public Map<String, Object> patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
        List<ServiceSubtask> serviceSubtaskList = null;
        ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
        serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
        if (serviceSubtaskEntity != null) {
            PageUtils.startPageByPost(serviceSubtaskEntity.getPageNum(), serviceSubtaskEntity.getPageSize());
            serviceSubtaskEntity.setPageNum(PageUtils.getOffset(serviceSubtaskEntity.getPageNum(), serviceSubtaskEntity.getPageSize()));
            serviceSubtaskList = serviceSubtaskService.patItem2(serviceSubtaskEntity);
        }
        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
@@ -273,7 +273,7 @@
                serviceSubtaskService.patItem2(serviceSubtaskEntity);
            }
        });
        return getDataTable2(total, list);
        return getDataTable3(total, list);
    }
    /**
@@ -730,4 +730,11 @@
        return map;
    }
    @ApiOperation("获取当前用户宣教数量统计")
    @PostMapping("/gethelibraryCount")
    public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO) {
        log.info("获取当前用户宣教数量统计的入参为:{}", heLibraryCountVO);
        return serviceSubtaskService.getHeLibraryCount(heLibraryCountVO);
    }
}
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
@@ -446,7 +446,7 @@
     * å°±è¯Šç±»åž‹ï¼ˆ1门诊  2出院)
     */
    @Excel(name = "  å°±è¯Šç±»åž‹ï¼ˆ1门诊  2出院)")
    @ApiModelProperty(value = "就诊类型(1门诊  2出院 3.专病 4.外部导入 5急诊、5住院、7体检)")
    @ApiModelProperty(value = "就诊类型(1门诊  2出院 3.专病 4.外部导入 5急诊、6住院、7体检)")
    private String hospType;
smartor/src/main/java/com/smartor/domain/VO/HeLibraryCountVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.smartor.domain.VO;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
@ApiModel("宣教统计查询请求对象")
public class HeLibraryCountVO {
    @ApiModelProperty(value = "病区Code集合")
    private List<String> hospitaldistrictcodes;
    @ApiModelProperty(value = "科室Code集合")
    private List<String> deptcodes;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "出院时间")
    private Date endtime;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "入院时间")
    private Date starttime;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "宣教发送时间")
    private Date visittime;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "宣教完成时间")
    private Date finishtime;
    @ApiModelProperty(value = "就诊类型(1门诊  2出院 3.专病 4.外部导入 5急诊、6住院、7体检)")
    private String hospType;
}
smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
@@ -105,6 +105,7 @@
     */
    @ApiModelProperty(value = "几天及时率")
    private Integer rateDay;
    /**
     * æ€§åˆ«
     */
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -2,6 +2,7 @@
import com.smartor.domain.*;
import com.smartor.domain.VO.PatSatisfactionReqVO;
import com.smartor.domain.VO.HeLibraryCountVO;
import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.domain.entity.ServiceSubtaskSatisfactionEntity;
@@ -211,4 +212,12 @@
     */
    List<Map<String, Object>> getContinueNurseCountByDept(ServiceSubtaskCotinueCountVO vo);
    /**
     * å®£æ•™ç»Ÿè®¡ï¼šæŒ‰ç—…区或科室分组统计发送成功率和已读率
     *
     * @param heLibraryCountVO æŸ¥è¯¢æ¡ä»¶
     * @return æ¯ç»„的统计结果(groupName, sendSuccessCount, totalCount, readCount)
     */
    List<Map<String, Object>> getHeLibraryCount(HeLibraryCountVO heLibraryCountVO);
}
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -3,6 +3,7 @@
import com.ruoyi.common.core.domain.AjaxResult;
import com.smartor.domain.*;
import com.smartor.domain.ServiceSubtask;
import com.smartor.domain.VO.HeLibraryCountVO;
import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import org.springframework.web.bind.annotation.RequestBody;
@@ -169,4 +170,6 @@
     * @return
     */
    public void setFailSubTaskDefalutVal(Long failDay);
    public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO);
}
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -264,10 +264,7 @@
            // å¤„理用户与部门的关系
            List businessDepts = (List<?>) dataItem.get("businessDepts");
            if (CollectionUtils.isEmpty(businessDepts)) {
                continue;
            }
            if (CollectionUtils.isNotEmpty(businessDepts)) {
            List<List<String>> deptInfoList = new ArrayList<>();
            List<List<String>> hospInfoList = new ArrayList<>();
            log.info("------businessDepts是否有值:{}", businessDepts.size());
@@ -275,7 +272,6 @@
                if (businessDept instanceof Map) {
                    Map<String, Object> businessDeptMap = (Map<String, Object>) businessDept;
                    log.info("------businessDeptMap是否有值:{}", businessDeptMap);
//                    Long hisDeptId = (Long) personnelDeptMap.get("deptId");
                    String hisDeptId = getStringValue(businessDeptMap, "deptId");
                    log.info("------hisDeptId是否有值:{}, reqVO.getOrgId()的值为:{}", hisDeptId, reqVO.getCampusId());
                    //在这里,hisDeptId就是deptCode
@@ -318,16 +314,17 @@
            sysUser.setHospInfo(gson.toJson(hospInfoList));
            sysUser.setDeptInfo(gson.toJson(deptInfoList));
            sysUser2Mapper.updateUser(sysUser);
            }
            //设置一个默认角色(医生角色)
            List<SysUserRole> userRoleList = new ArrayList();
            SysUserRole sur = new SysUserRole();
            sur.setUserId(sysUser.getUserId());
            sur.setRoleId(3L);
            sur.setRoleId(4L);
            sur.setOrgid(sysUser.getOrgid());
            //先查询一下,是否存在
            SysUserRole sysUserRole = sysUserRoleMapper.selectUserRoleByRoleIdAndUserId(3L, sysUser.getUserId());
            SysUserRole sysUserRole = sysUserRoleMapper.selectUserRoleByRoleIdAndUserId(4L, sysUser.getUserId());
            if (ObjectUtils.isNotEmpty(sysUserRole)) continue;
            userRoleList.add(sur);
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -16,6 +16,7 @@
import com.smartor.config.PhoneUtils;
import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
import com.smartor.domain.*;
import com.smartor.domain.VO.HeLibraryCountVO;
import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
@@ -31,6 +32,7 @@
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -3589,7 +3591,8 @@
        map.put("content", sendMagParam.getContent());
        String result = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(map));
        redisCache.setCacheObject(subTaskId + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
        if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) serviceSubtask.setRemark("电话发送拒接,短信补偿发送成功");
        if (StringUtils.isNotEmpty(serviceSubtask.getRemark()))
            serviceSubtask.setRemark("电话发送拒接,短信补偿发送成功");
        else serviceSubtask.setRemark("短信补偿发送成功");
        serviceSubtask.setSendstate(3L);
        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
@@ -4172,6 +4175,38 @@
        }
    }
    @Override
    public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO) {
        if (ObjectUtils.isEmpty(heLibraryCountVO)) {
            return new HashMap<>();
        }
        // 1. æŸ¥è¯¢åˆ†ç»„统计(发送总量、发送成功量、已读量)
        List<Map<String, Object>> groupStats = serviceSubtaskMapper.getHeLibraryCount(heLibraryCountVO);
        // 2. è®¡ç®—各组的发送成功率和已读率
        List<Map<String, Object>> result = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(groupStats)) {
            for (Map<String, Object> row : groupStats) {
                long totalCount = row.get("totalCount") != null ? ((Number) row.get("totalCount")).longValue() : 0L;
                long sendSuccessCount = row.get("sendSuccessCount") != null ? ((Number) row.get("sendSuccessCount")).longValue() : 0L;
                long readCount = row.get("readCount") != null ? ((Number) row.get("readCount")).longValue() : 0L;
                // å‘送成功率
                double sendSuccessRate = totalCount > 0 ? (double) sendSuccessCount / totalCount : 0.0;
                // å·²è¯»çŽ‡ï¼ˆåŸºäºŽå‘é€æˆåŠŸçš„æ•°é‡è®¡ç®—ï¼‰
                double readRate = sendSuccessCount > 0 ? (double) readCount / sendSuccessCount : 0.0;
                row.put("sendSuccessRate", sendSuccessRate);
                row.put("readRate", readRate);
                result.add(row);
            }
        }
        Map<String, Object> resultMap = new HashMap<>();
        resultMap.put("list", result);
        resultMap.put("total", result.size());
        return resultMap;
    }
    private Boolean saveServiceSubtaskDetail(ServiceSubtask serviceSubtask) {
        Boolean result = true;
        //3.4 å¦‚æžœ3.1或3.2为true的话,根据type判断什么类型
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -2495,4 +2495,50 @@
        ORDER BY groupCode
    </select>
    <!-- å®£æ•™ç»Ÿè®¡ï¼šæŒ‰ç—…区或科室分组,统计发送总量、发送成功量(sendstate=6)、已读量(finishtime不为空) -->
    <select id="getHeLibraryCount" parameterType="com.smartor.domain.VO.HeLibraryCountVO" resultType="map">
        SELECT
        <choose>
            <when test="hospitaldistrictcodes != null and hospitaldistrictcodes.size() > 0">
                leavehospitaldistrictcode AS groupCode,
                leavehospitaldistrictname AS groupName,
            </when>
            <otherwise>
                deptcode AS groupCode,
                deptname AS groupName,
            </otherwise>
        </choose>
        COUNT(*) AS totalCount,
        SUM(CASE WHEN sendstate = 6 THEN 1 ELSE 0 END) AS sendSuccessCount,
        SUM(CASE WHEN finishtime IS NOT NULL THEN 1 ELSE 0 END) AS readCount
        FROM service_subtask
        WHERE del_flag = 0
        AND service_type = 4
        <if test="starttime != null">AND starttime &gt;= #{starttime}</if>
        <if test="endtime != null">AND endtime &lt;= #{endtime}</if>
        <if test="visittime != null">AND DATE(visit_time) = DATE(#{visittime})</if>
        <if test="finishtime != null">AND DATE(finishtime) = DATE(#{finishtime})</if>
        <if test="hospType != null and hospType != ''">AND hosp_type = #{hospType}</if>
        <choose>
            <when test="hospitaldistrictcodes != null and hospitaldistrictcodes.size() > 0">
                AND leavehospitaldistrictcode IN
                <foreach collection="hospitaldistrictcodes" item="code" open="(" separator="," close=")">
                    #{code}
                </foreach>
                GROUP BY leavehospitaldistrictcode, leavehospitaldistrictname
                ORDER BY groupCode
            </when>
            <otherwise>
                <if test="deptcodes != null and deptcodes.size() > 0">
                    AND deptcode IN
                    <foreach collection="deptcodes" item="code" open="(" separator="," close=")">
                        #{code}
                    </foreach>
                </if>
                GROUP BY deptcode, deptname
                ORDER BY groupCode
            </otherwise>
        </choose>
    </select>
</mapper>