|
@@ -0,0 +1,346 @@
|
|
|
+package com.nokia.financeapi.dao.house;
|
|
|
+
|
|
|
+import com.nokia.financeapi.pojo.dto.GetHouseAbnormalDataDto;
|
|
|
+import com.nokia.financeapi.pojo.vo.GetBuildingAreaDiffVo;
|
|
|
+import com.nokia.financeapi.pojo.vo.GetHouseAbnormalDataVo;
|
|
|
+import org.apache.ibatis.annotations.Mapper;
|
|
|
+import org.apache.ibatis.annotations.Param;
|
|
|
+import org.apache.ibatis.annotations.Select;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Mapper
|
|
|
+public interface HouseDataCheckMapper {
|
|
|
+ /**
|
|
|
+ * 全省建筑面积变化
|
|
|
+ */
|
|
|
+ @Select("""
|
|
|
+with
|
|
|
+t101 as (
|
|
|
+select
|
|
|
+ sum(building_area) as building_area_sum_last,
|
|
|
+ sum(building_area_self_use) as building_area_self_use_sum_last,
|
|
|
+ sum(building_area_idle) as building_area_idle_sum_last
|
|
|
+from
|
|
|
+ house.building_month
|
|
|
+where
|
|
|
+ year_month = (
|
|
|
+ select
|
|
|
+ max(year_month)
|
|
|
+ from
|
|
|
+ house.building_month
|
|
|
+ where
|
|
|
+ year_no = 2023
|
|
|
+ )
|
|
|
+),
|
|
|
+t102 as (
|
|
|
+select
|
|
|
+ sum(building_area) as building_area_sum_now,
|
|
|
+ sum(building_area_self_use) as building_area_self_use_sum_now,
|
|
|
+ sum(building_area_idle) as building_area_idle_sum_now
|
|
|
+from
|
|
|
+ house.building_month
|
|
|
+where
|
|
|
+ year_month = (
|
|
|
+ select
|
|
|
+ max(year_month)
|
|
|
+ from
|
|
|
+ house.building_month
|
|
|
+ where
|
|
|
+ year_no = 2024
|
|
|
+ )
|
|
|
+),
|
|
|
+t103 as (
|
|
|
+select
|
|
|
+ '全省' as unit_name,
|
|
|
+ round(t101.building_area_sum_last, 2) as building_area_sum_last,
|
|
|
+ round(t101.building_area_self_use_sum_last, 2) as building_area_self_use_sum_last,
|
|
|
+ round(t101.building_area_idle_sum_last, 2) as building_area_idle_sum_last,
|
|
|
+ round(t102.building_area_sum_now, 2) as building_area_sum_now,
|
|
|
+ round(t102.building_area_self_use_sum_now, 2) as building_area_self_use_sum_now,
|
|
|
+ round(t102.building_area_idle_sum_now, 2) as building_area_idle_sum_now,
|
|
|
+ case
|
|
|
+ when t101.building_area_sum_last = 0 then null
|
|
|
+ else round((t102.building_area_sum_now - t101.building_area_sum_last) / t101.building_area_sum_last * 100, 2)
|
|
|
+ end as building_area_diff,
|
|
|
+ case
|
|
|
+ when t101.building_area_self_use_sum_last = 0 then null
|
|
|
+ else round((t102.building_area_self_use_sum_now - t101.building_area_self_use_sum_last) / t101.building_area_self_use_sum_last * 100, 2)
|
|
|
+ end as building_area_self_use_diff,
|
|
|
+ case
|
|
|
+ when t101.building_area_idle_sum_last = 0 then null
|
|
|
+ else round((t102.building_area_idle_sum_now - t101.building_area_idle_sum_last) / t101.building_area_idle_sum_last * 100, 2)
|
|
|
+ end as building_area_idle_diff
|
|
|
+from
|
|
|
+ t101
|
|
|
+cross join t102
|
|
|
+)
|
|
|
+select
|
|
|
+ *
|
|
|
+from
|
|
|
+ t103
|
|
|
+""")
|
|
|
+ GetBuildingAreaDiffVo getFirstUnitBuildingAreaDiff();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 二级单位建筑面积变化
|
|
|
+ */
|
|
|
+ @Select("""
|
|
|
+with
|
|
|
+t201 as (
|
|
|
+select
|
|
|
+ area_name,
|
|
|
+ sum(building_area) as building_area_sum_last,
|
|
|
+ sum(building_area_self_use) as building_area_self_use_sum_last,
|
|
|
+ sum(building_area_idle) as building_area_idle_sum_last
|
|
|
+from
|
|
|
+ house.building_month
|
|
|
+where
|
|
|
+ year_month = (
|
|
|
+ select
|
|
|
+ max(year_month)
|
|
|
+ from
|
|
|
+ house.building_month
|
|
|
+ where
|
|
|
+ year_no = 2023
|
|
|
+ )
|
|
|
+group by
|
|
|
+ area_name
|
|
|
+),
|
|
|
+t202 as (
|
|
|
+select
|
|
|
+ area_name,
|
|
|
+ sum(building_area) as building_area_sum_now,
|
|
|
+ sum(building_area_self_use) as building_area_self_use_sum_now,
|
|
|
+ sum(building_area_idle) as building_area_idle_sum_now
|
|
|
+from
|
|
|
+ house.building_month
|
|
|
+where
|
|
|
+ year_month = (
|
|
|
+ select
|
|
|
+ max(year_month)
|
|
|
+ from
|
|
|
+ house.building_month
|
|
|
+ where
|
|
|
+ year_no = 2024
|
|
|
+ )
|
|
|
+group by
|
|
|
+ area_name
|
|
|
+),
|
|
|
+t203 as (
|
|
|
+select
|
|
|
+ coalesce(t201.area_name,
|
|
|
+ t202.area_name) as unit_name,
|
|
|
+ coalesce(t201.area_name,
|
|
|
+ t202.area_name) as area_name,
|
|
|
+ round(t201.building_area_sum_last,
|
|
|
+ 2) as building_area_sum_last,
|
|
|
+ round(t201.building_area_self_use_sum_last,
|
|
|
+ 2) as building_area_self_use_sum_last,
|
|
|
+ round(t201.building_area_idle_sum_last,
|
|
|
+ 2) as building_area_idle_sum_last,
|
|
|
+ round(t202.building_area_sum_now,
|
|
|
+ 2) as building_area_sum_now,
|
|
|
+ round(t202.building_area_self_use_sum_now,
|
|
|
+ 2) as building_area_self_use_sum_now,
|
|
|
+ round(t202.building_area_idle_sum_now,
|
|
|
+ 2) as building_area_idle_sum_now,
|
|
|
+ case
|
|
|
+ when t201.building_area_sum_last = 0 then null
|
|
|
+ else round((t202.building_area_sum_now - t201.building_area_sum_last) / t201.building_area_sum_last * 100,
|
|
|
+ 2)
|
|
|
+ end as building_area_diff,
|
|
|
+ case
|
|
|
+ when t201.building_area_self_use_sum_last = 0 then null
|
|
|
+ else round((t202.building_area_self_use_sum_now - t201.building_area_self_use_sum_last) / t201.building_area_self_use_sum_last * 100,
|
|
|
+ 2)
|
|
|
+ end as building_area_self_use_diff,
|
|
|
+ case
|
|
|
+ when t201.building_area_idle_sum_last = 0 then null
|
|
|
+ else round((t202.building_area_idle_sum_now - t201.building_area_idle_sum_last) / t201.building_area_idle_sum_last * 100,
|
|
|
+ 2)
|
|
|
+ end as building_area_idle_diff
|
|
|
+from
|
|
|
+ t201
|
|
|
+full join t202 on
|
|
|
+ t201.area_name = t202.area_name
|
|
|
+),
|
|
|
+t204 as (
|
|
|
+select
|
|
|
+ *
|
|
|
+from
|
|
|
+ t203
|
|
|
+left join house.second_unit_sort on
|
|
|
+ t203.area_name = house.second_unit_sort.second_unit
|
|
|
+order by
|
|
|
+ house.second_unit_sort.sort desc
|
|
|
+)
|
|
|
+select
|
|
|
+ *
|
|
|
+from
|
|
|
+ t204
|
|
|
+""")
|
|
|
+ List<GetBuildingAreaDiffVo> getSecondUnitBuildingAreaDiff();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 三级单位建筑面积变化
|
|
|
+ */
|
|
|
+ @Select("""
|
|
|
+with
|
|
|
+t301 as (
|
|
|
+select
|
|
|
+ area_name,
|
|
|
+ city_name,
|
|
|
+ sum(building_area) as building_area_sum_last,
|
|
|
+ sum(building_area_self_use) as building_area_self_use_sum_last,
|
|
|
+ sum(building_area_idle) as building_area_idle_sum_last
|
|
|
+from
|
|
|
+ house.building_month
|
|
|
+where
|
|
|
+ year_month = (
|
|
|
+ select
|
|
|
+ max(year_month)
|
|
|
+ from
|
|
|
+ house.building_month
|
|
|
+ where
|
|
|
+ year_no = 2023
|
|
|
+ )
|
|
|
+group by
|
|
|
+ area_name,
|
|
|
+ city_name
|
|
|
+),
|
|
|
+t302 as (
|
|
|
+select
|
|
|
+ area_name,
|
|
|
+ city_name,
|
|
|
+ sum(building_area) as building_area_sum_now,
|
|
|
+ sum(building_area_self_use) as building_area_self_use_sum_now,
|
|
|
+ sum(building_area_idle) as building_area_idle_sum_now
|
|
|
+from
|
|
|
+ house.building_month
|
|
|
+where
|
|
|
+ year_month = (
|
|
|
+ select
|
|
|
+ max(year_month)
|
|
|
+ from
|
|
|
+ house.building_month
|
|
|
+ where
|
|
|
+ year_no = 2024
|
|
|
+ )
|
|
|
+group by
|
|
|
+ area_name,
|
|
|
+ city_name
|
|
|
+),
|
|
|
+t303 as (
|
|
|
+select
|
|
|
+ coalesce(t301.city_name, t302.city_name) as unit_name,
|
|
|
+ coalesce(t301.area_name, t302.area_name) as area_name,
|
|
|
+ coalesce(t301.city_name, t302.city_name) as city_name,
|
|
|
+ round(t301.building_area_sum_last, 2) as building_area_sum_last,
|
|
|
+ round(t301.building_area_self_use_sum_last, 2) as building_area_self_use_sum_last,
|
|
|
+ round(t301.building_area_idle_sum_last, 2) as building_area_idle_sum_last,
|
|
|
+ round(t302.building_area_sum_now, 2) as building_area_sum_now,
|
|
|
+ round(t302.building_area_self_use_sum_now, 2) as building_area_self_use_sum_now,
|
|
|
+ round(t302.building_area_idle_sum_now, 2) as building_area_idle_sum_now,
|
|
|
+ case
|
|
|
+ when t301.building_area_sum_last = 0 then null
|
|
|
+ else round((t302.building_area_sum_now - t301.building_area_sum_last) / t301.building_area_sum_last * 100, 2)
|
|
|
+ end as building_area_diff,
|
|
|
+ case
|
|
|
+ when t301.building_area_self_use_sum_last = 0 then null
|
|
|
+ else round((t302.building_area_self_use_sum_now - t301.building_area_self_use_sum_last) / t301.building_area_self_use_sum_last * 100, 2)
|
|
|
+ end as building_area_self_use_diff,
|
|
|
+ case
|
|
|
+ when t301.building_area_idle_sum_last = 0 then null
|
|
|
+ else round((t302.building_area_idle_sum_now - t301.building_area_idle_sum_last) / t301.building_area_idle_sum_last * 100, 2)
|
|
|
+ end as building_area_idle_diff
|
|
|
+from
|
|
|
+ t301
|
|
|
+full join t302 on t301.area_name = t302.area_name and t301.city_name = t302.city_name
|
|
|
+)
|
|
|
+select
|
|
|
+ *
|
|
|
+from
|
|
|
+ t303
|
|
|
+order by area_name, city_name
|
|
|
+""")
|
|
|
+ List<GetBuildingAreaDiffVo> getThirdUnitBuildingAreaDiff();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取不动产异常数据稽核最新的日期
|
|
|
+ */
|
|
|
+ @Select("""
|
|
|
+select max(year_month) from house.abnormal_data
|
|
|
+""")
|
|
|
+ Integer getAbnormalDataMaxDate();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 全省不动产异常数据稽核
|
|
|
+ */
|
|
|
+ @Select("""
|
|
|
+select
|
|
|
+ '全省' as unit_name,
|
|
|
+ sum(wei_guan_lian_ju_zhi) as wei_guan_lian_ju_zhi_sum,
|
|
|
+ sum(xian_zhi_jian_zhu_mian_ji) as xian_zhi_jian_zhu_mian_ji_sum
|
|
|
+from
|
|
|
+ house.abnormal_data
|
|
|
+where
|
|
|
+ year_month = #{dto.endDate}
|
|
|
+""")
|
|
|
+ GetHouseAbnormalDataVo getFirstUnitAbnormalData(@Param("dto") GetHouseAbnormalDataDto dto);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 二级单位不动产异常数据稽核
|
|
|
+ */
|
|
|
+ @Select("""
|
|
|
+with
|
|
|
+t101 as (
|
|
|
+select
|
|
|
+ second_unit as unit_name,
|
|
|
+ second_unit,
|
|
|
+ sum(wei_guan_lian_ju_zhi) as wei_guan_lian_ju_zhi_sum,
|
|
|
+ sum(xian_zhi_jian_zhu_mian_ji) as xian_zhi_jian_zhu_mian_ji_sum
|
|
|
+from
|
|
|
+ house.abnormal_data
|
|
|
+where
|
|
|
+ year_month = #{dto.endDate}
|
|
|
+group by
|
|
|
+ second_unit
|
|
|
+),
|
|
|
+t102 as (
|
|
|
+select
|
|
|
+ *
|
|
|
+from
|
|
|
+ t101
|
|
|
+left join house.second_unit_sort on
|
|
|
+ t101.second_unit = house.second_unit_sort.second_unit
|
|
|
+order by
|
|
|
+ house.second_unit_sort.sort desc
|
|
|
+)
|
|
|
+select
|
|
|
+ *
|
|
|
+from
|
|
|
+ t102
|
|
|
+""")
|
|
|
+ List<GetHouseAbnormalDataVo> getSecondUnitAbnormalData(@Param("dto") GetHouseAbnormalDataDto dto);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 三级单位不动产异常数据稽核
|
|
|
+ */
|
|
|
+ @Select("""
|
|
|
+select
|
|
|
+ third_unit as unit_name,
|
|
|
+ second_unit,
|
|
|
+ third_unit,
|
|
|
+ wei_guan_lian_ju_zhi as wei_guan_lian_ju_zhi_sum,
|
|
|
+ xian_zhi_jian_zhu_mian_ji as xian_zhi_jian_zhu_mian_ji_sum
|
|
|
+from
|
|
|
+ house.abnormal_data
|
|
|
+where
|
|
|
+ year_month = #{dto.endDate}
|
|
|
+order by
|
|
|
+ second_unit,
|
|
|
+ third_unit
|
|
|
+""")
|
|
|
+ List<GetHouseAbnormalDataVo> getThirdUnitAbnormalData(@Param("dto") GetHouseAbnormalDataDto dto);
|
|
|
+}
|