feiyu02
2026-01-21 fe031e01cc1737c2f05a133fde7c36c7a2a7b4b4
src/main/resources/mapper/UserSettingMapper.xml
@@ -26,6 +26,12 @@
    <result column="ledger_deadline" property="ledgerDeadline" jdbcType="INTEGER" />
    <result column="self_patrol_promise" property="selfPatrolPromise" jdbcType="BIT" />
  </resultMap>
  <resultMap id="ResultMapWithBLOBs" type="cn.flightfeather.supervision.domain.entity.UserSetting" extends="BaseResultMap" >
    <!--
      WARNING - @mbg.generated
    -->
    <result column="sp_promise_content" property="spPromiseContent" jdbcType="LONGVARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    <!--
      WARNING - @mbg.generated
@@ -35,4 +41,67 @@
    Area, Management_Company_Id, Management_Company, scene_type_id, ledger_deadline, 
    self_patrol_promise
  </sql>
  <sql id="Blob_Column_List" >
    <!--
      WARNING - @mbg.generated
    -->
    sp_promise_content
  </sql>
  <!-- 行政区划最匹配查询条件 -->
  <select id="selectBestConfig" resultMap="ResultMapWithBLOBs">
    select
    <include refid="Base_Column_List" />, <include refid="Blob_Column_List" />
    FROM sm_t_setting
    <where>
      <if test="userTypeId != null">
        AND User_Type_Id = #{userTypeId}
      </if>
      <if test="sceneTypeId != null">
        AND (scene_type_id = #{sceneTypeId} OR scene_type_id IS NULL)
      </if>
      <if test="provinceName != null">
        AND (Province_Name = #{provinceName} OR Province_Name IS NULL)
      </if>
      <if test="cityName != null">
        AND (City_Name = #{cityName} OR City_Name IS NULL)
      </if>
      <if test="districtName != null">
        AND (District_Name = #{districtName} OR District_Name IS NULL)
      </if>
      <if test="townName != null">
        AND (Town_Name = #{townName} OR Town_Name IS NULL)
      </if>
      <if test="area != null">
        AND (Area = #{area} OR Area IS NULL)
      </if>
      <if test="managementCompany != null">
        AND (Management_Company = #{managementCompany} OR Management_Company IS NULL)
      </if>
    </where>
    ORDER BY
      CASE
        WHEN Province_Name = #{provinceName} AND City_Name = #{cityName}
          AND District_Name = #{districtName} AND Town_Name = #{townName} THEN 1
        WHEN Province_Name = #{provinceName} AND City_Name = #{cityName}
          AND District_Name = #{districtName} AND Town_Name IS NULL THEN 2
        WHEN Province_Name = #{provinceName} AND City_Name = #{cityName}
          AND District_Name IS NULL AND Town_Name IS NULL THEN 3
        WHEN Province_Name = #{provinceName} AND City_Name IS NULL
          AND District_Name IS NULL AND Town_Name IS NULL THEN 4
      END,
      CASE
        WHEN Area = #{area} THEN 1
        WHEN Area IS NULL THEN 2
      END,
      CASE
        WHEN Management_Company = #{managementCompany} THEN 1
        WHEN Management_Company IS NULL THEN 2
      END,
      CASE
        WHEN scene_type_id = #{sceneTypeId} THEN 1
        WHEN scene_type_id IS NULL THEN 2
      END
    LIMIT 1;
  </select>
</mapper>