8 小时以前 55d694aaae4e421b5e55cd941500e08f85cb5d4d
src/main/resources/mapper/device/DeviceLedgerMapper.xml
@@ -28,9 +28,15 @@
        dl.update_time ,
        su.nick_name AS createUser,
        dl.update_user,
        dl.tenant_id
        dl.tenant_id,
        dl.is_depr,
        dl.annual_depreciation_amount,
        dl.type,
        dl.area_id,
        da.name AS area_name
        FROM device_ledger dl
        left join sys_user su on dl.create_user = su.user_id
        left join device_area da on dl.area_id = da.id
        <where>
            <!-- 设备名称 -->
            <if test="deviceLedger.deviceName != null and deviceLedger.deviceName != ''">
@@ -73,9 +79,53 @@
            <if test="deviceLedger.tenantId != null">
                AND tenant_id = #{deviceLedger.tenantId}
            </if>
            <!-- 区域ID:含该区域及其所有子级(通过祖级路径匹配) -->
            <if test="deviceLedger.areaId != null">
                AND (
                    dl.area_id = #{deviceLedger.areaId}
                    OR EXISTS (
                        SELECT 1 FROM device_area da2
                        WHERE da2.id = dl.area_id
                          AND (da2.ancestors = #{deviceLedger.areaId}
                               OR da2.ancestors LIKE CONCAT(#{deviceLedger.areaId}, ',%')
                               OR da2.ancestors LIKE CONCAT('%,', #{deviceLedger.areaId}, ',%')
                               OR da2.ancestors LIKE CONCAT('%,', #{deviceLedger.areaId}))
                    )
                )
            </if>
        </where>
        ORDER BY create_time DESC
    </select>
    <select id="selectDeviceOptions" resultType="com.ruoyi.device.dto.DeviceLedgerDto">
        SELECT
        dl.id,
        dl.device_name,
        dl.device_model,
        dl.device_brand,
        dl.type,
        dl.area_id,
        da.name AS area_name
        FROM device_ledger dl
        left join device_area da on dl.area_id = da.id
        <where>
            <if test="areaId != null">
                AND (
                    dl.area_id = #{areaId}
                    OR EXISTS (
                        SELECT 1 FROM device_area da2
                        WHERE da2.id = dl.area_id
                          AND (da2.ancestors = #{areaId}
                               OR da2.ancestors LIKE CONCAT(#{areaId}, ',%')
                               OR da2.ancestors LIKE CONCAT('%,', #{areaId}, ',%')
                               OR da2.ancestors LIKE CONCAT('%,', #{areaId}))
                    )
                )
            </if>
        </where>
        ORDER BY dl.create_time DESC
    </select>
    <select id="deviceLedgerExportList" resultType="com.ruoyi.device.execl.DeviceLedgerExeclDto">
    </select>
@@ -84,5 +134,18 @@
        from device_ledger
        where id = #{id}
    </select>
    <select id="getDeviceTypeDistributionByYear"
            resultType="com.ruoyi.account.bean.dto.DeviceTypeDetail"
            parameterType="java.lang.Integer">
        SELECT
            `type`,
            SUM(`number`) AS `count`,
            SUM(tax_including_price_unit) AS amount
        FROM device_ledger
        WHERE YEAR(create_time) = #{year}
          AND type IS NOT NULL
        GROUP BY type
    </select>
</mapper>