sinake
2025-09-25 32a6f0bcae6563f0c785b668dd5a4a907292e48c
新增满意度统计明细
已修改7个文件
123 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -360,4 +360,18 @@
        return success(serviceStatistics);
    }
    /**
     * 获取随访统计比例
     */
    @ApiOperation("获取随访满意度明细")
    @PostMapping("/getSfStatisticsJoydetails")
    public AjaxResult getSfStatisticsJoydetails(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
        if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size()==0&&
                serviceSubtaskCountReq.getDeptcodes().size()==0) {
            return error("科室或病区不能为空");
        }
        return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq));
    }
}
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java
@@ -32,10 +32,16 @@
    private Long count;
    @ApiModelProperty(value = "填写满意度数量")
    private Long joyCount;
    private Integer joyCount;
    @ApiModelProperty(value = "所有满意度数量")
    private Long joyAllCount;
    private Integer joyAllCount;
    @ApiModelProperty(value = "满意度比例")
    private String joyTotal;
    @ApiModelProperty(value = "满意度名称")
    private String joyName;
    public ServiceSubtaskCount(String month, Long serviceType, Long count) {
        this.serviceType = serviceType;
smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
@@ -181,8 +181,11 @@
    private String drname;
    @ApiModelProperty(value = "填写满意度数量")
    private Long joyCount;
    private Integer joyCount=0;
    @ApiModelProperty(value = "所有满意度数量")
    private Long joyAllCount;
    private Integer joyAllCount=0;
    @ApiModelProperty(value = "满意度比例")
    private String joyTotal="";
}
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -97,6 +97,8 @@
    public List<ServiceSubtaskCount> getSfStatisticsJoy(ServiceSubtaskCountReq serviceSubtaskCountReq);
    public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq);
    public List<PatMedRes> getDeptRanking(PatMedReq patMedReq);
    public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest serviceStatisticsRequest);
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -131,5 +131,7 @@
    public List<ServiceSubtaskStatistic> getSfStatisticsJoy(ServiceSubtaskCountReq serviceSubtaskCountReq);
    public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq);
    public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest request);
}
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -2316,7 +2316,10 @@
                continue;
            }
            ServiceSubtaskStatistic statistic = getStatisticJoy(serviceSubtaskList,joySubCount);
            if(statistic.getJoyCount()!=0&&statistic.getJoyAllCount()!=0) {
                Double joyTotal = Double.parseDouble(statistic.getJoyCount() + "") / Double.parseDouble(statistic.getJoyAllCount() + "") * 100;
                statistic.setJoyTotal(String.format("%.2f", joyTotal)+"%");
            }
            //及时率
            ServiceSubtask ss = new ServiceSubtask();
            ss.setOrgid(serviceSubtaskList.get(0).getOrgid());
@@ -2454,15 +2457,15 @@
        serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());
        //出院人次
        serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
        serviceSubtaskStatistic.setJoyCount(0L);
        serviceSubtaskStatistic.setJoyAllCount(0L);
        serviceSubtaskStatistic.setJoyCount(0);
        serviceSubtaskStatistic.setJoyAllCount(0);
        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
            //满意度
            List<ServiceSubtaskCount> joyCountTemp= joySubCount.stream().filter(r->r.getSubTaskId().equals(serviceSubtask.getId()))
                    .collect(Collectors.toList());
            if(joyCountTemp!=null&&joyCountTemp.size()>0){
                if(ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyCount()))
                serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount()+joyCountTemp.get(0).getJoyCount());
                    serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount()+joyCountTemp.get(0).getJoyCount());
                if(ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyAllCount()))
                    serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount()+joyCountTemp.get(0).getJoyAllCount());
            }
@@ -2660,4 +2663,8 @@
        int remainingCalls = (int) (remainingHours * phoneUpEveryHour);
        return remainingCalls;
    }
    public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq) {
       return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);
    }
}
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -92,6 +92,8 @@
        <result property="subTaskId" column="subTaskId"/>
        <result property="joyCount" column="joyCount"/>
        <result property="joyAllCount" column="joyAllCount"/>
        <result property="joyTotal" column="joyTotal"/>
        <result property="joyName" column="joyName"/>
    </resultMap>
@@ -1119,6 +1121,77 @@
        GROUP BY sub_id
    </select>
    <select id="getSfStatisticsJoydetails" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
            resultMap="ServiceSubtaskResult2">
        SELECT joyName,joyCount,joyAllCount,ROUND(joyCount/joyAllCount,2) joyTotal  FROM  (
        SELECT targetname joyName,
               (select COUNT(sub_id) FROM service_subtask_detail WHERE sub_id IN(SELECT id FROM service_subtask t
        <where>
            del_flag=0
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                AND leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="deptcodes != null and deptcodes.size() > 0">
                AND deptcode IN
                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                         close=")">
                    #{deptcode}
                </foreach>
            </if>
            <if test="serviceType != null and serviceType.size() > 0">
                AND service_type IN
                <foreach collection="serviceType" item="serviceType" open="(" separator=","
                         close=")">
                    #{serviceType}
                </foreach>
            </if>
            <if test="startTime != null and endTime!=null">
                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')
                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
            </if>
        </where>
        ) AND targetid=a.id) joyCount , (SELECT COUNT(*) from (select sub_id FROM service_subtask_detail
        WHERE sub_id IN(SELECT id FROM service_subtask t
        <where>
            del_flag=0
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">AND
            leavehospitaldistrictcode IN
            <foreach
                    collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                     close=")">
                #{leavehospitaldistrictcode}
            </foreach>
        </if>
        <if test="deptcodes != null and deptcodes.size() > 0">
            AND deptcode IN
            <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                     close=")">
                #{deptcode}
            </foreach>
        </if>
        <if test="serviceType != null and serviceType.size() > 0">
            AND service_type IN
            <foreach collection="serviceType" item="serviceType" open="(" separator=","
                     close=")">
                #{serviceType}
            </foreach>
        </if>
            <if test="startTime != null and endTime!=null">
                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')
                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
            </if>
    </where>
        GROUP BY sub_id ) ) ta ) joyAllCount
        FROM ivr_liba_target a
        WHERE assortid IN (SELECT config_value FROM sys_config WHERE config_key=
        'joyCount')
        )a1
    </select>
    <select id="getDataByTime" resultMap="ServiceSubtaskResult">
        select id,