陈昶聿
5 天以前 2ef2f0039bbabcebab2099cd9ee2ffb0147bef54
【市一】随访满意度明细调整
已修改1个文件
已添加1个文件
228 ■■■■■ 文件已修改
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCategoryCount.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCategoryCount.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.smartor.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å„科室完成量统计结果
 *
 * @author ruoyi
 * @date 2024-02-02
 */
@ApiModel(value = "ServiceSubtaskCount", description = "各科室完成量统计结果")
@Data
public class ServiceSubtaskCategoryCount {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "子任务ID")
    private Long subTaskId;
    @ApiModelProperty(value = "服务类型")
    private Long serviceType;
    @ApiModelProperty(value = "年月")
    private String month;
    @ApiModelProperty(value = "数量")
    private Long count;
    @ApiModelProperty(value = "填写数量")
    private Integer completedCount;
    @ApiModelProperty(value = "所有数量")
    private Integer allCount;
    @ApiModelProperty(value = "填写比例")
    private String completedPercent;
    @ApiModelProperty(value = "名称")
    private String name;
    public ServiceSubtaskCategoryCount(String month, Long serviceType, Long count) {
        this.serviceType = serviceType;
        this.month = month;
        this.count = count;
    }
}
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -100,6 +100,16 @@
    </resultMap>
    <resultMap type="com.smartor.domain.ServiceSubtaskCategoryCount" id="ServiceSubtaskCategoryCountResult">
        <result property="month" column="month"/>
        <result property="serviceType" column="service_type"/>
        <result property="subTaskId" column="subTaskId"/>
        <result property="completedCount" column="completed_count"/>
        <result property="allCount" column="all_count"/>
        <result property="completedPercent" column="completed_percent"/>
        <result property="name" column="name"/>
    </resultMap>
    <sql id="selectServiceSubtaskVo">
        select id,
               hosp_type,
@@ -1285,6 +1295,177 @@
        )a1
    </select>
    <select id="getSfStatisticsCategory" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
            resultMap="ServiceSubtaskResult2">
        SELECT a.sub_id as subTaskId,
        <if test="configValue != null and configValue != ''">
            SUM(CASE WHEN a.categoryid IN(${configValue})
            THEN 1 ELSE 0 END) AS joyAllCount,
        </if>
        COUNT(sub_id) joyCount
        FROM service_subtask_detail a
        INNER JOIN service_subtask t ON a.sub_id = t.id
        <where>
            a.del_flag=0
            AND t.del_flag=0
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                AND t.leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="deptcodes != null and deptcodes.size() > 0">
                AND t.deptcode IN
                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                         close=")">
                    #{deptcode}
                </foreach>
            </if>
            <if test="serviceType != null and serviceType.size() > 0">
                AND t.service_type IN
                <foreach collection="serviceType" item="serviceType" open="(" separator=","
                         close=")">
                    #{serviceType}
                </foreach>
            </if>
            <if test="startTime != null and endTime!=null">
                AND date_format(t.visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')
                AND date_format(t.visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
            </if>
            <if test="visitDeptCode != null">
                and t.visit_dept_code = #{visitDeptCode}
            </if>
            <if test="visitDeptName != null">
                and t.visit_dept_name = #{visitDeptName}
            </if>
            <if test="isabnormal != null">
                and t.isabnormal = #{isabnormal}
            </if>
            <!-- ç›®å‰åªç»Ÿè®¡è¯­éŸ³å’Œé—®å· -->
            <if test="type != null">
                and t.type = #{type}
            </if>
        </where>
        GROUP BY a.sub_id
    </select>
    <select id="getSfStatisticsScriptDetails" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
            resultMap="ServiceSubtaskScriptCountResult">
        SELECT
        a.id as scriptid,
        a.script_content,
        b.completed_quantity,
        b.all_quantity,
        ROUND(b.completed_quantity/b.all_quantity,2) as completed_percentage
        FROM
        <if test="type == 1">
            ivr_task_template_script a
        </if>
        <if test="type == 2">
            svy_task_template_script a
        </if>
        INNER JOIN(
        SELECT
        ssd.scriptid AS scriptid,
        SUM(CASE WHEN IFNULL(ssd.matchedtext,ssd.asrtext) IS NOT NULL
        AND IFNULL(ssd.matchedtext,ssd.asrtext) != '' THEN 1
        ELSE 0 END) AS completed_quantity,
        COUNT(*) AS all_quantity
        FROM
        service_subtask_detail ssd
        INNER JOIN service_subtask ss ON ssd.sub_id = ss.id
        WHERE
        ss.del_flag=0
        AND ssd.del_flag = 0
        <if test="orgid != null and orgid != ''">
            AND ss.orgid = #{orgid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND ss.leavehospitaldistrictcode IN
            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                     close=")">
                #{leavehospitaldistrictcode}
            </foreach>
        </if>
        <if test="deptcodes != null and deptcodes.size() > 0">
            AND ss.deptcode IN
            <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                     close=")">
                #{deptcode}
            </foreach>
        </if>
        <if test="serviceType != null and serviceType.size() > 0">
            AND ss.service_type IN
            <foreach collection="serviceType" item="serviceType" open="(" separator=","
                     close=")">
                #{serviceType}
            </foreach>
        </if>
        <if test="startTime != null and endTime!=null">
            AND date_format(ss.visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')
            AND date_format(ss.visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
        </if>
        <!-- ç›®å‰åªç»Ÿè®¡è¯­éŸ³å’Œé—®å· -->
        <if test="type != null">
            and ss.type = #{type}
        </if>
        <if test="configValue != null and configValue != ''">
            AND ssd.categoryid IN (${configValue})
        </if>
        group by ssd.scriptid) b
        ON a.id = b.scriptid
    </select>
    <select id="getSfStatisticsScriptItemDetails" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
            resultMap="ServiceSubtaskScriptCountResult">
        SELECT
        ssd.scriptid,
        IFNULL(ssd.matchedtext,ssd.asrtext) AS option_text,
        COUNT(*) AS chosen_quantity
        FROM
        service_subtask_detail ssd
        INNER JOIN service_subtask ss ON ssd.sub_id = ss.id
        <where>
            ss.del_flag=0
            AND IFNULL(ssd.matchedtext,ssd.asrtext) IS NOT NULL
            AND IFNULL(ssd.matchedtext,ssd.asrtext) != ''
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                AND ss.leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="deptcodes != null and deptcodes.size() > 0">
                AND ss.deptcode IN
                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                         close=")">
                    #{deptcode}
                </foreach>
            </if>
            <if test="serviceType != null and serviceType.size() > 0">
                AND ss.service_type IN
                <foreach collection="serviceType" item="serviceType" open="(" separator=","
                         close=")">
                    #{serviceType}
                </foreach>
            </if>
            <if test="startTime != null and endTime!=null">
                AND date_format(ss.visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')
                AND date_format(ss.visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
            </if>
            <!-- ç›®å‰åªç»Ÿè®¡è¯­éŸ³å’Œé—®å· -->
            <if test="type != null">
                and ss.type = #{type}
            </if>
            <if test="configValue != null and configValue != ''">
                AND ssd.categoryid IN (${configValue})
            </if>
        </where>
        group by ssd.scriptid, IFNULL(ssd.matchedtext,ssd.asrtext)
    </select>
    <select id="getDataByTime" resultMap="ServiceSubtaskResult">
        select id,