wlzboy
2025-11-08 99f528e235f11126fea44480c6e8888a9e463f2f
ruoyi-system/src/main/resources/mapper/system/HospDataMapper.xml
@@ -23,27 +23,34 @@
    </resultMap>
    <select id="searchHospitals" resultMap="HospDataResult">
        SELECT TOP 100
        SELECT TOP 1000
            HospID, HospName, HospCityID, HospShort, 
            HopsProvince, HopsCity, HopsArea, HospAddress, 
            HospTEL, HospUnitID, HospState, HospOAID, 
            HospIntroducerID, HospIntroducerDate, HospLevel
        FROM HospData
        WHERE 1=1
        <!-- 地域过滤:对HospProvince, HospCity, HospArea进行OR匹配 -->
        <if test="region != null and region != ''">
            AND (HopsProvince LIKE '%' + #{region} + '%'
                 OR HopsCity LIKE '%' + #{region} + '%'
                 OR HopsArea LIKE '%' + #{region} + '%')
        </if>
        <!-- 关键词过滤:对多个字段进行OR匹配 -->
        <!-- 有 keyword 就只用 keyword,不用 region -->
        <if test="keyword != null and keyword != ''">
            AND (HopsProvince LIKE '%' + #{keyword} + '%'
                 OR HopsCity LIKE '%' + #{keyword} + '%'
                 OR HopsArea LIKE '%' + #{keyword} + '%'
                 OR HospAddress LIKE '%' + #{keyword} + '%'
                 OR HospName LIKE '%' + #{keyword} + '%'
                 OR HospShort LIKE '%' + #{keyword} + '%')
        AND (
            HopsProvince LIKE '%' + #{keyword} + '%'
                OR HopsCity LIKE '%' + #{keyword} + '%'
                OR HopsArea LIKE '%' + #{keyword} + '%'
                OR HospAddress LIKE '%' + #{keyword} + '%'
                OR HospName LIKE '%' + #{keyword} + '%'
                OR HospShort LIKE '%' + #{keyword} + '%'
        )
        </if>
        <!-- 没有 keyword 时才用 region -->
        <if test="(keyword == null or keyword == '') and (region != null and region != '')">
        AND (
            HopsProvince LIKE '%' + #{region} + '%'
                OR HopsCity LIKE '%' + #{region} + '%'
                OR HopsArea LIKE '%' + #{region} + '%'
                OR HospAddress LIKE '%' + #{region} + '%'
                OR HospName LIKE '%' + #{region} + '%'
                OR HospShort LIKE '%' + #{region} + '%'
        )
        </if>
        AND (HospState IS NULL OR HospState = 1)
        ORDER BY HospName
@@ -58,4 +65,47 @@
        FROM HospData
        WHERE HospID = #{hospId}
    </select>
    <!-- 查询常用转出医院ID列表 -->
    <select id="selectFrequentOutHospitalIds" resultType="java.lang.Integer">
        select ServiceOrdPtOutHospID from (
            select    ServiceOrdPtOutHospID,count(1) as InCount  from ServiceOrder
            where ServiceOrdClass=#{serviceOrdClass} and ServiceOrdPtOutHospID>0
            group by ServiceOrdPtOutHospID
        ) as t
        order by InCount desc
    </select>
    <!-- 查询常用转入医院ID列表 -->
    <select id="selectFrequentInHospitalIds" resultType="java.lang.Integer">
        select ServiceOrdPtInHospID from (
            select    ServiceOrdPtInHospID,count(1) as InCount  from ServiceOrder
            where ServiceOrdClass=#{serviceOrdClass} and ServiceOrdPtInHospID>0
            group by ServiceOrdPtInHospID
        ) as t
        order by InCount desc
    </select>
    <!-- 根据医院ID列表查询医院信息 -->
    <select id="selectHospDataByIds" resultMap="HospDataResult">
        SELECT
            HospID, HospName, HospCityID, HospShort,
            HopsProvince, HopsCity, HopsArea, HospAddress,
            HospTEL, HospUnitID, HospState, HospOAID,
            HospIntroducerID, HospIntroducerDate, HospLevel
        FROM HospData
        WHERE HospID IN
        <foreach collection="hospIds" item="hospId" open="(" separator="," close=")">
            #{hospId}
        </foreach>
        <if test="region != null and region != ''">
        AND (
            HopsProvince LIKE '%' + #{region} + '%'
                OR HopsCity LIKE '%' + #{region} + '%'
                OR HopsArea LIKE '%' + #{region} + '%'
        )
        </if>
        AND (HospState IS NULL OR HospState = 1)
        ORDER BY HospName
    </select>
</mapper>