mitao
2025-04-07 18891c60ab1c06a4acc85d0ec54dee50d1b1a19f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?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.finance.system.mapper.TbDataScreenScoreMapper">
 
  <!-- 通用查询映射结果 -->
  <resultMap id="BaseResultMap" type="com.finance.system.domain.TbDataScreenScore">
    <id column="id" property="id"/>
    <result column="dept_area_code" property="deptAreaCode"/>
    <result column="basic_data_id" property="basicDataId"/>
    <result column="data_screen_config_id" property="dataScreenConfigId"/>
    <result column="score" property="score"/>
    <result column="score_rate" property="scoreRate"/>
    <result column="create_time" property="createTime"/>
  </resultMap>
 
  <!-- 通用查询结果列 -->
  <sql id="Base_Column_List">
    id, dept_area_code, basic_data_id, data_screen_config_id, score, score_rate, create_time
  </sql>
  <select id="queryScore4Map" resultType="com.finance.system.vo.RiskMapVO">
    SELECT tdss.score, su.area_code, su.area_name
    FROM tb_data_screen_score tdss
           LEFT JOIN tb_data_screen_config tbsc ON tbsc.id = tdss.data_screen_config_id
           LEFT JOIN tb_basic_data tbd ON tbd.id = tdss.basic_data_id
           LEFT JOIN sys_user su ON su.area_code = tbd.dept_area_code
    WHERE 1 = 1
      AND tbd.quarter = #{nowQuarter}
      AND tbsc.id = #{dataScreenConfigId}
  </select>
  <select id="queryRiskRanking" resultType="com.finance.system.vo.RiskRankingVO">
    SELECT tdss.score, su.area_code, su.area_name
    FROM tb_data_screen_score tdss
           LEFT JOIN tb_data_screen_config tbsc ON tbsc.id = tdss.data_screen_config_id
           LEFT JOIN tb_basic_data tbd ON tbd.id = tdss.basic_data_id
           LEFT JOIN sys_user su ON su.area_code = tbd.dept_area_code
    WHERE 1 = 1
      AND tbd.quarter = #{nowQuarter}
      AND tbsc.id = #{dataScreenConfigId}
      AND su.area_level = 'com.finance.common.enums.AreaLevelEnum@COUNTY.getCode()'
    ORDER BY tdss.score DESC
  </select>
  <select id="selectRiskByQuarter" resultType="com.finance.system.domain.TbDataScreenScore">
    SELECT tdss.*
    FROM tb_data_screen_score tdss
    LEFT JOIN tb_data_screen_config tbsc ON tbsc.id = tdss.data_screen_config_id
    LEFT JOIN tb_basic_data tbd ON tbd.id = tdss.basic_data_id
    WHERE 1 = 1
    AND tbd.quarter = #{nowQuarter}
    AND tbsc.id = #{dataScreenConfigId}
    <if test="areaCode !=null and areaCode !=''">
      AND tbd.dept_area_code = #{areaCode}
    </if>
  </select>
  <select id="queryScoreByAreaAndYear"
    resultType="com.finance.system.vo.DataScreenScoreVO">
    SELECT tdss.*,tbsc.sub_type
    FROM tb_data_screen_score tdss
    LEFT JOIN tb_data_screen_config tbsc ON tbsc.id = tdss.data_screen_config_id
    LEFT JOIN tb_basic_data tbd ON tbd.id = tdss.basic_data_id
    WHERE 1 = 1
    AND tbd.dept_area_code = #{areaCode}
    AND tbsc.id = #{dataScreenConfigId}
    <if test="yearType==1">
      AND YEAR(tbd.reporting_time) = SUBSTRING(tbd.quarter, 1, 4)
    </if>
    <if test="yearType==2">
      AND YEAR(tbd.reporting_time) = SUBSTRING(tbd.quarter, 1, 4)-1
    </if>
  </select>
  <select id="selectIndicators"
    resultType="com.finance.system.vo.DataScreenScoreVO">
    SELECT tdss.*,tbsc.sub_type,tbsc.max_score
    FROM tb_data_screen_score tdss
    LEFT JOIN tb_data_screen_config tbsc ON tbsc.id = tdss.data_screen_config_id
    LEFT JOIN tb_basic_data tbd ON tbd.id = tdss.basic_data_id
    WHERE 1 = 1
    AND tbd.dept_area_code = #{areaCode}
    AND tbsc.type = #{dataScreenConfigEnum}
    <if test="yearType!=null and yearType==1">
      AND YEAR(tbd.reporting_time) = SUBSTRING(#{nowQuarter}, 1, 4)
    </if>
    <if test="yearType!=null and yearType==2">
      AND YEAR(tbd.reporting_time) = SUBSTRING(#{nowQuarter}, 1, 4) -1
    </if>
    <if test="nowQuarter!=null and nowQuarter != ''">
      AND tbd.quarter = #{nowQuarter}
    </if>
  </select>
  <select id="getRankByScore" resultType="java.lang.Integer">
    SET @rank = 0;
 
    SELECT `rank`,
           score,
           dept_area_code
    FROM (SELECT tdss.score, tdss.dept_area_code, (@rank := @rank + 1) AS `rank`
          FROM tb_data_screen_score tdss
                 LEFT JOIN tb_data_screen_config tbsc ON tbsc.id = tdss.data_screen_config_id
                 LEFT JOIN tb_basic_data tbd ON tbd.id = tdss.basic_data_id
          WHERE 1 = 1
            AND tbsc.type = #{dataScreenConfigEnum}
            AND tbsc.sub_type = #{subType}
            AND tbd.quarter = #{nowQuarter}
          ORDER BY tdss.score DESC) AS rank_data
    WHERE dept_area_code = #{areaCode}
      AND score = #{score}
  </select>
 
</mapper>