<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.manage.mapper.SurveyAnswerItemMapper">
    <!--
      模块：问卷-答卷明细
      说明：
        - 选项统计仅适用于选择题；文本答案单独查询。
    -->

    <resultMap id="AnsItemResult" type="com.ruoyi.manage.domain.SurveyAnswerItem">
        <result property="id" column="id"/>
        <result property="answerId" column="answer_id"/>
        <result property="itemId" column="item_id"/>
        <result property="valueText" column="value_text"/>
        <result property="valueOptionIds" column="value_option_ids"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
    </resultMap>

    <select id="selectByAnswerId" resultMap="AnsItemResult">
        select *
        from tb_survey_answer_item
        where answer_id = #{answerId}
          and del_flag = '0'
    </select>

    <insert id="insert" parameterType="com.ruoyi.manage.domain.SurveyAnswerItem" useGeneratedKeys="true"
            keyProperty="id">
        insert into tb_survey_answer_item (answer_id, item_id, value_text, value_option_ids,
                                           create_by, create_time, update_by, update_time, del_flag)
        values (#{answerId}, #{itemId}, #{valueText}, #{valueOptionIds},
                #{createBy}, #{createTime}, #{updateBy}, #{updateTime}, '0')
    </insert>

    <delete id="deleteByAnswerId">
        delete
        from tb_survey_answer_item
        where answer_id = #{answerId}
    </delete>

    <!-- 统计：每个选项被选择的次数（仅针对选择题答案 value_option_ids） -->
    <select id="countOptionVotes" resultType="java.util.HashMap">
        SELECT o.id AS optionId, COUNT(*) AS cnt
        FROM tb_survey_answer_item ai
                 JOIN tb_survey_item i ON i.id = ai.item_id
                 JOIN tb_survey_option o ON o.item_id = i.id
        WHERE i.survey_id = #{surveyId}
          AND ai.del_flag = '0'
          AND o.del_flag = '0'
          AND ai.value_option_ids IS NOT NULL
          AND JSON_CONTAINS(ai.value_option_ids, CAST(o.id AS JSON))
        GROUP BY o.id
    </select>

    <!-- 文本题答案明细（用于 AI 汇总示例抽样） -->
    <select id="selectTextAnswersBySurveyId" resultType="java.util.HashMap">
        select i.id   as itemId,
               i.title as itemTitle,
               ai.value_text as valueText
        from tb_survey_answer_item ai
                 join tb_survey_item i on i.id = ai.item_id
        where i.survey_id = #{surveyId}
          and ai.del_flag = '0'
          and i.del_flag = '0'
          and ai.value_text is not null
          and ai.value_text &lt;&gt; ''
        order by ai.create_time asc
    </select>

</mapper>
