Browse Source

更新基础内容。

Cashgift Li 5 months ago
parent
commit
d9b47306c2

+ 9 - 3
DBScript/李庚谱/010-DQL.sql

@@ -18,6 +18,7 @@ select onmaster.RISK_EXPOSURE_LEV01_CODE, onmaster.RISK_EXPOSURE_LEV01_CODE_NAME
 from rwa_apm_bus_rs_onbusinessrwa_master onmaster
 where onmaster.CALCINDEX = (SELECT CALCINDEX FROM RWA_CALC_RS_TASK_MASTER A WHERE A.TERM = (getLastTerm()))
 group by onmaster.RISK_EXPOSURE_LEV01_CODE, onmaster.RISK_EXPOSURE_LEV01_CODE_NAME
+order by onmaster.RISK_EXPOSURE_LEV01_CODE
 ;
 -- 表外
 -- 表外业务风险暴露(一级)风险加权资产占比
@@ -25,6 +26,7 @@ SELECT RISK_EXPOSURE_LEV01_CODE, RISK_EXPOSURE_LEV01_CODE_NAME, sum(RWA) as rwas
 FROM rwa_apm_bus_rs_offbusinessrwa_master offmaster
 where offmaster.CALCINDEX = (SELECT CALCINDEX FROM RWA_CALC_RS_TASK_MASTER A WHERE A.TERM = (getLastTerm()))
 group by offmaster.RISK_EXPOSURE_LEV01_CODE, offmaster.RISK_EXPOSURE_LEV01_CODE_NAME
+order by offmaster.RISK_EXPOSURE_LEV01_CODE
 ;
 
 -- 机构
@@ -59,6 +61,7 @@ FROM rwa_apm_bus_rs_offbusinessrwa_master offmaster
 where offmaster.CALCINDEX = (SELECT CALCINDEX FROM RWA_CALC_RS_TASK_MASTER A WHERE A.TERM = (getLastTerm()))
 group by offmaster.RISK_EXPOSURE_LEV01_CODE, offmaster.RISK_EXPOSURE_LEV01_CODE_NAME
 ) allrwa group by allrwa.RISK_EXPOSURE_LEV01_CODE, allrwa.RISK_EXPOSURE_LEV01_CODE_NAME
+order by allrwa.RISK_EXPOSURE_LEV01_CODE
 ;
 
 -- -- 风险暴露(一级)缓释前风险暴露占比
@@ -73,6 +76,7 @@ FROM rwa_apm_bus_rs_offbusinessrwa_master offmaster
 where offmaster.CALCINDEX = (SELECT CALCINDEX FROM RWA_CALC_RS_TASK_MASTER A WHERE A.TERM = (getLastTerm()))
 group by offmaster.RISK_EXPOSURE_LEV01_CODE, offmaster.RISK_EXPOSURE_LEV01_CODE_NAME
 ) allrwa group by allrwa.RISK_EXPOSURE_LEV01_CODE, allrwa.RISK_EXPOSURE_LEV01_CODE_NAME
+order by allrwa.RISK_EXPOSURE_LEV01_CODE
 ;
 
 
@@ -82,23 +86,25 @@ select reg.QUALFIED_CREDIT_TOOL_TYPE ,reg.QUALFIED_CREDIT_TOOL_TYPE_NAME , sum(r
 from rwa_apm_bus_rs_regularrcs_master reg
 where reg.CALCINDEX = (SELECT CALCINDEX FROM RWA_CALC_RS_TASK_MASTER A WHERE A.TERM = (getLastTerm()))
 group by reg.QUALFIED_CREDIT_TOOL_TYPE, reg.QUALFIED_CREDIT_TOOL_TYPE_NAME
+order by reg.QUALFIED_CREDIT_TOOL_TYPE
 ;
 
 
 -- RWA 缓释
 -- --风险暴露分类(一级)当期缓释情况
-select allrwa.RISK_EXPOSURE_LEV01_CODE, allrwa.RISK_EXPOSURE_LEV01_CODE_NAME ,sum(sumead) as allsumead, sum(ALLSUM_COVERAGE_RISK) as sumALLSUM_COVERAGE_RISK from (
+select allrwa.RISK_EXPOSURE_LEV01_CODE, allrwa.RISK_EXPOSURE_LEV01_CODE_NAME ,sum(sumead) as allsumead, sum(ALLSUM_COVERAGE_RISK) as sumALLSUM_COVERAGE_RISK , sum(ALLUNFINISH_EAD) as SUMALLUNFINISH_EAD from (
 select onmaster.RISK_EXPOSURE_LEV01_CODE, onmaster.RISK_EXPOSURE_LEV01_CODE_NAME
-     , sum(EAD) as sumead, sum(SUM_COVERAGE_RISK) as ALLSUM_COVERAGE_RISK
+     , sum(EAD) as sumead, sum(SUM_COVERAGE_RISK) as ALLSUM_COVERAGE_RISK ,sum(UNFINISH_EAD) as ALLUNFINISH_EAD
 from rwa_apm_bus_rs_onbusinessrwa_master onmaster
 where onmaster.CALCINDEX = (SELECT CALCINDEX FROM RWA_CALC_RS_TASK_MASTER A WHERE A.TERM = (getLastTerm()))
 group by onmaster.RISK_EXPOSURE_LEV01_CODE, onmaster.RISK_EXPOSURE_LEV01_CODE_NAME
 union all
 SELECT RISK_EXPOSURE_LEV01_CODE, RISK_EXPOSURE_LEV01_CODE_NAME
-     , sum(EAD) as sumead, sum(SUM_COVERAGE_RISK) as ALLSUM_COVERAGE_RISK
+     , sum(EAD) as sumead, sum(SUM_COVERAGE_RISK) as ALLSUM_COVERAGE_RISK ,sum(UNFINISH_EAD) as ALLUNFINISH_EAD
 FROM rwa_apm_bus_rs_offbusinessrwa_master offmaster
 where offmaster.CALCINDEX = (SELECT CALCINDEX FROM RWA_CALC_RS_TASK_MASTER A WHERE A.TERM = (getLastTerm()))
 group by offmaster.RISK_EXPOSURE_LEV01_CODE, offmaster.RISK_EXPOSURE_LEV01_CODE_NAME
 ) allrwa group by allrwa.RISK_EXPOSURE_LEV01_CODE, allrwa.RISK_EXPOSURE_LEV01_CODE_NAME
+order by allrwa.RISK_EXPOSURE_LEV01_CODE
 ;
 

+ 62 - 0
Procedure/backend/project/src/main/java/com/sundata/product/echarts/model/ChartsData.java

@@ -0,0 +1,62 @@
+package com.sundata.product.echarts.model;
+
+import java.math.BigDecimal;
+
+public class ChartsData {
+    private String xLabel;
+    private String yLabel;
+    private String zLabel;
+    private BigDecimal xData;
+    private BigDecimal yData;
+    private BigDecimal zData;
+
+
+    public String getxLabel() {
+        return xLabel;
+    }
+
+    public void setxLabel(String xLabel) {
+        this.xLabel = xLabel;
+    }
+
+    public String getyLabel() {
+        return yLabel;
+    }
+
+    public void setyLabel(String yLabel) {
+        this.yLabel = yLabel;
+    }
+
+    public String getzLabel() {
+        return zLabel;
+    }
+
+    public void setzLabel(String zLabel) {
+        this.zLabel = zLabel;
+    }
+
+    public BigDecimal getxData() {
+        return xData;
+    }
+
+    public void setxData(BigDecimal xData) {
+        this.xData = xData;
+    }
+
+    public BigDecimal getyData() {
+        return yData;
+    }
+
+    public void setyData(BigDecimal yData) {
+        this.yData = yData;
+    }
+
+    public BigDecimal getzData() {
+        return zData;
+    }
+
+    public void setzData(BigDecimal zData) {
+        this.zData = zData;
+    }
+
+}

+ 125 - 0
Procedure/backend/project/src/main/java/com/sundata/product/echarts/model/ChartsDataShow.java

@@ -0,0 +1,125 @@
+package com.sundata.product.echarts.model;
+
+import java.math.BigDecimal;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * 为图形提供的数据对象,用于前端使用并定制化处理
+ */
+public class ChartsDataShow {
+    private List<String> xLabels;
+    private List<String> yLabels;
+    private List<String> zLabels;
+    private List<BigDecimal> xData;
+    private List<BigDecimal> yData;
+    private List<BigDecimal> zData;
+    private List<PieData> pieData;
+    private List<List<BigDecimal>> data;
+
+    public ChartsDataShow() {
+    }
+
+    public List<String> getxLabels() {
+        return xLabels;
+    }
+
+    public void setxLabels(List<String> xLabels) {
+        this.xLabels = xLabels;
+    }
+
+    public List<String> getyLabels() {
+        return yLabels;
+    }
+
+    public void setyLabels(List<String> yLabels) {
+        this.yLabels = yLabels;
+    }
+
+    public List<String> getzLabels() {
+        return zLabels;
+    }
+
+    public void setzLabels(List<String> zLabels) {
+        this.zLabels = zLabels;
+    }
+
+    public List<BigDecimal> getxData() {
+        return xData;
+    }
+
+    public void setxData(List<BigDecimal> xData) {
+        this.xData = xData;
+    }
+
+    public List<BigDecimal> getyData() {
+        return yData;
+    }
+
+    public void setyData(List<BigDecimal> yData) {
+        this.yData = yData;
+    }
+
+    public List<BigDecimal> getzData() {
+        return zData;
+    }
+
+    public void setzData(List<BigDecimal> zData) {
+        this.zData = zData;
+    }
+
+
+    public List<PieData> getPieData() {
+        return pieData;
+    }
+
+    public void setPieData(List<PieData> pieData) {
+        this.pieData = pieData;
+    }
+
+
+
+    public List<List<BigDecimal>> getData() {
+        return data;
+    }
+
+    public void setData(List<List<BigDecimal>> data) {
+        this.data = data;
+    }
+
+
+    public static ChartsDataShow coverNormalData(List<ChartsData> chartsData){
+        ChartsDataShow chartsDataShow = new ChartsDataShow();
+        LinkedList<String> xLabels = new LinkedList<>();
+        LinkedList<String> yLabels = new LinkedList<>();
+        LinkedList<String> zLabels = new LinkedList<>();
+        LinkedList<BigDecimal> xData = new LinkedList<>();
+        LinkedList<BigDecimal> yData = new LinkedList<>();
+        LinkedList<BigDecimal> zData = new LinkedList<>();
+        LinkedList<PieData> pieData = new LinkedList<>();
+        for (ChartsData cd : chartsData) {
+            xLabels.add(cd.getxLabel());
+            yLabels.add(cd.getyLabel());
+            zLabels.add(cd.getzLabel());
+            xData.add(cd.getxData());
+            yData.add(cd.getyData());
+            zData.add(cd.getzData());
+            pieData.add(new PieData(cd.getxLabel(),cd.getxData()));
+        }
+        chartsDataShow.setxLabels(xLabels);
+        chartsDataShow.setyLabels(yLabels);
+        chartsDataShow.setzLabels(zLabels);
+        chartsDataShow.setxData(xData);
+        chartsDataShow.setyData(yData);
+        chartsDataShow.setzData(zData);
+        chartsDataShow.setPieData(pieData);
+        return chartsDataShow;
+    }
+
+    public static ChartsDataShow createMoreCharts(List<String> titles,List<List<BigDecimal>> data){
+        ChartsDataShow chartsDataShow = new ChartsDataShow();
+        chartsDataShow.setData(data);
+        chartsDataShow.setxLabels(titles);
+        return chartsDataShow;
+    }
+}

+ 36 - 0
Procedure/backend/project/src/main/java/com/sundata/product/echarts/model/PieData.java

@@ -0,0 +1,36 @@
+package com.sundata.product.echarts.model;
+
+/**
+ * data: [
+         {value: 1048, name: 'Search Engine'},
+         {value: 735, name: 'Direct'},
+         {value: 580, name: 'Email'},
+         {value: 484, name: 'Union Ads'},
+         {value: 300, name: 'Video Ads'}
+     ]
+ */
+public class PieData {
+    private String name;
+    private Number value;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Number getValue() {
+        return value;
+    }
+
+    public void setValue(Number value) {
+        this.value = value;
+    }
+
+    public PieData(String name, Number value) {
+        this.name = name;
+        this.value = value;
+    }
+}

+ 9 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/welcome/controller/RWAWelcomeController.java

@@ -0,0 +1,9 @@
+package com.sundata.product.rwa.welcome.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller("rwa/welcome")
+public class RWAWelcomeController {
+
+
+}

+ 0 - 16
Procedure/backend/project/src/main/java/com/sundata/product/rwa/welcome/controller/WelcomeController.java

@@ -1,16 +0,0 @@
-package com.sundata.product.rwa.welcome.controller;
-
-import cn.hutool.db.Db;
-import com.zaxxer.hikari.HikariDataSource;
-import org.apache.commons.dbutils.QueryRunner;
-import org.apache.commons.dbutils.handlers.MapHandler;
-import org.springframework.stereotype.Controller;
-
-import java.sql.SQLException;
-import java.util.Map;
-
-@Controller("rwa/welcome")
-public class WelcomeController {
-
-
-}

+ 4 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/welcome/mapper/RWAWelcomeMapper.java

@@ -0,0 +1,4 @@
+package com.sundata.product.rwa.welcome.mapper;
+
+public interface RWAWelcomeMapper {
+}

+ 146 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/welcome/mix-line-bar.html

@@ -0,0 +1,146 @@
+<!--
+	此示例下载自 https://echarts.apache.org/examples/zh/editor.html?c=mix-line-bar&lang=js&code=PYBwLglsB2AEC8sDeAoWszGAG0iAXMmuhgE4QDmFApqYQOQCGAHhAM70A0x6L7ACsAjQwtQqhIkwATxDUGAY1LA2HbpPRKVbAMozs8ohpIKcwOrHoBiAJx36PEgF9HL9E_UYs2AEbBm4o4AZtSMYACupIYSGgAmYYwAahDUAO7isGwAFsDpZOHUnLBRjLEA8tDY0oRBjNhs1LAejugAtowUEAoAKrLRmTl5YKQFRTJyhADa9NjC1FyWPoyk9AC6TZ6SUWyYURnZuYTDBRstmYwAbtQAgmwAku00-4NHI41uzsTN6AY00LGBSTxMCMKb0ACiF0YIHMYSg0AW9H4UQUEBAEBBkBgiO61FaclIYUi81WX08zGurDYU0cMUk40M9AUYWoFHM0i4Z2BoNg0wAstiivRugVEQB1aixHFZcKIgBi5EROjCSvCCNWmxIfDYgmEogsdI0DIY2VKuQcxg-7mIGuI0kp7BpkkN6GNlih2FFmvQ0EYrUZyOoqPRmPhnOMrWEhAADN7YO0ArAAEwAVljZz1tA9hDTce1ABlGD5qNhAcZYEFzO0wPqGEgPQUnPHsBaNFbTs6zm76A35nHff6GLj8bQiVFwxpI9AY3GE4RU3HM6Rs7AU3mqYXi6WjOXK6Rq7XLPW6o3YAAGgDCrck7Y-tvQDXI1GpvNpZwHjMh0NhWIRce7SwrP-3h4GWxi9nKVZhIeQRqgov6wAAFL2ACUO7lsU1ARKQcC9rAADUljNvQADcZzWpacY7IwCgANYMJgIItnG3JOuWSYAHSxrAAAsHE2EUADsXFFEmADMHFJqJKYcQAbEJskcYJRQAIxiTJ8mwCpsmcVJsBiZxmlJtGImwIpPFFBJYlnKSN6ai6sAfgwgbBhicKCl2fQMIBE70iBaJgRoEFQTWYgVnBCHISe1BoQ5WxYZEuHRQRRGtC2ZEYe27hUSCdEMcATG-SQrGvhhhlFDJAmwDYplJuZokABxKUJJnKVpgkaapDW6UUPFNW1KlNQ1RSKdxnHWcYtnOPZ75-oyw4EmOfaeRMlizNAy3GPaVJ3P81CJipwE4KB6FBdFkH7tBYWwdA8HwkhqGncYUTYUlnqNIR9DnleGXlllHZxAkUycWNkmWRxYm9Rxa5mRDqkmXpxlw8mEkWSjpnadDqkgyNklTRRsCkk4JFAA
+	⚠ 请注意,该图表不是 Apache ECharts 官方示例,而是由用户代码生成的。请注意鉴别其内容。
+-->
+<!DOCTYPE html>
+<html lang="en" style="height: 100%">
+<head>
+    <meta charset="utf-8">
+</head>
+<body style="height: 100%; margin: 0">
+<div id="container" style="height: 100%"></div>
+
+
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.5.1/files/dist/echarts.min.js"></script>
+
+<!-- Uncomment this line if you want to dataTool extension
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.5.1/files/dist/extension/dataTool.min.js"></script>
+-->
+<!-- Uncomment this line if you want to use gl extension
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts-gl/2/files/dist/echarts-gl.min.js"></script>
+-->
+<!-- Uncomment this line if you want to echarts-stat extension
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts-stat/latest/files/dist/ecStat.min.js"></script>
+-->
+<!-- Uncomment this line if you want to echarts-graph-modularity extension
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts-graph-modularity/2/files/dist/echarts-graph-modularity.min.js"></script>
+-->
+<!-- Uncomment this line if you want to use map
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts/4.9.0/files/map/js/world.js"></script>
+-->
+<!-- Uncomment these two lines if you want to use bmap extension
+<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_API_KEY"></script>
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.5.1/files/dist/extension/bmap.min.js"></script>
+-->
+
+<script type="text/javascript">
+    var dom = document.getElementById('container');
+    var myChart = echarts.init(dom, null, {
+        renderer: 'canvas',
+        useDirtyRect: false
+    });
+    var app = {};
+
+    var option;
+
+    option = {
+        tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+                type: 'cross',
+                crossStyle: {
+                    color: '#999'
+                }
+            }
+        },
+        toolbox: {
+            feature: {
+                dataView: {show: true, readOnly: false},
+                magicType: {show: true, type: ['line', 'bar']},
+                restore: {show: true},
+                saveAsImage: {show: true}
+            }
+        },
+        legend: {
+            data: ['Evaporation', 'Precipitation', 'Temperature']
+        },
+        xAxis: [
+            {
+                type: 'category',
+                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+                axisPointer: {
+                    type: 'shadow'
+                }
+            }
+        ],
+        yAxis: [
+            {
+                type: 'value',
+                name: 'Precipitation',
+                min: 0,
+                max: 250,
+                interval: 50,
+                axisLabel: {
+                    formatter: '{value} ml'
+                }
+            },
+            {
+                type: 'value',
+                name: 'Temperature',
+                min: 0,
+                max: 25,
+                interval: 5,
+                axisLabel: {
+                    formatter: '{value} °C'
+                }
+            }
+        ],
+        series: [
+            {
+                name: 'Evaporation',
+                type: 'bar',
+                tooltip: {
+                    valueFormatter: function (value) {
+                        return value + ' ml';
+                    }
+                },
+                stack: 'total',
+                data: [
+                    2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3
+                ]
+            },
+            {
+                name: 'Precipitation',
+                type: 'bar',
+                tooltip: {
+                    valueFormatter: function (value) {
+                        return value + ' ml';
+                    }
+                },
+                stack: 'total',
+                data: [
+                    2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
+                ]
+            },
+            {
+                name: 'Temperature',
+                type: 'line',
+                yAxisIndex: 1,
+                tooltip: {
+                    valueFormatter: function (value) {
+                        return value + ' °C';
+                    }
+                },
+                data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
+            }
+        ]
+    };
+
+    if (option && typeof option === 'object') {
+        myChart.setOption(option);
+    }
+
+    window.addEventListener('resize', myChart.resize);
+</script>
+</body>
+</html>

+ 28 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/welcome/mybatis/RWAWelcomeMapper.xml

@@ -0,0 +1,28 @@
+<?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.sundata.product.rwa.welcome.mapper.RWAWelcomeMapper">
+
+    <select id="queryONRISKRWAPie01" resultType="com.sundata.product.echarts.model.ChartsData">
+
+    </select>
+    <select id="queryOFFRISKRWAPie02" resultType="com.sundata.product.echarts.model.ChartsData">
+
+    </select>
+    <select id="queryRISKRWATOP10ByOrg03" resultType="com.sundata.product.echarts.model.ChartsData">
+
+    </select>
+    <select id="queryLV1RWAPie04" resultType="com.sundata.product.echarts.model.ChartsData">
+
+    </select>
+    <select id="queryRISKLV1EADPie05" resultType="com.sundata.product.echarts.model.ChartsData">
+
+    </select>
+    <select id="querySlowRelPie06" resultType="com.sundata.product.echarts.model.ChartsData">
+
+    </select>
+    <select id="querySlowRelLV107" resultType="com.sundata.product.echarts.model.ChartsData">
+
+    </select>
+</mapper>

+ 91 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/welcome/pie-doughnut.html

@@ -0,0 +1,91 @@
+<!--
+	此示例下载自 https://echarts.apache.org/examples/zh/editor.html?c=pie-doughnut
+-->
+<!DOCTYPE html>
+<html lang="en" style="height: 100%">
+<head>
+    <meta charset="utf-8">
+</head>
+<body style="height: 100%; margin: 0">
+<div id="container" style="height: 100%"></div>
+
+
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.5.1/files/dist/echarts.min.js"></script>
+
+<!-- Uncomment this line if you want to dataTool extension
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.5.1/files/dist/extension/dataTool.min.js"></script>
+-->
+<!-- Uncomment this line if you want to use gl extension
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts-gl/2/files/dist/echarts-gl.min.js"></script>
+-->
+<!-- Uncomment this line if you want to echarts-stat extension
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts-stat/latest/files/dist/ecStat.min.js"></script>
+-->
+<!-- Uncomment this line if you want to echarts-graph-modularity extension
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts-graph-modularity/2/files/dist/echarts-graph-modularity.min.js"></script>
+-->
+<!-- Uncomment this line if you want to use map
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts/4.9.0/files/map/js/world.js"></script>
+-->
+<!-- Uncomment these two lines if you want to use bmap extension
+<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_API_KEY"></script>
+<script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.5.1/files/dist/extension/bmap.min.js"></script>
+-->
+
+<script type="text/javascript">
+    var dom = document.getElementById('container');
+    var myChart = echarts.init(dom, null, {
+        renderer: 'canvas',
+        useDirtyRect: false
+    });
+    var app = {};
+
+    var option;
+
+    option = {
+        tooltip: {
+            trigger: 'item'
+        },
+        legend: {
+            top: '5%',
+            left: 'center'
+        },
+        series: [
+            {
+                name: 'Access From',
+                type: 'pie',
+                radius: ['40%', '70%'],
+                avoidLabelOverlap: false,
+                label: {
+                    show: false,
+                    position: 'center'
+                },
+                emphasis: {
+                    label: {
+                        show: true,
+                        fontSize: 40,
+                        fontWeight: 'bold'
+                    }
+                },
+                labelLine: {
+                    show: false
+                },
+                data: [
+                    {value: 1048, name: 'Search Engine'},
+                    {value: 735, name: 'Direct'},
+                    {value: 580, name: 'Email'},
+                    {value: 484, name: 'Union Ads'},
+                    {value: 300, name: 'Video Ads'}
+                ]
+            }
+        ]
+    };
+
+    if (option && typeof option === 'object') {
+        myChart.setOption(option);
+    }
+
+    window.addEventListener('resize', myChart.resize);
+</script>
+</body>
+</html>

+ 135 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/welcome/service/RWAWelcomeService.java

@@ -0,0 +1,135 @@
+package com.sundata.product.rwa.welcome.service;
+
+import cn.hutool.db.DbUtil;
+import cn.hutool.db.Entity;
+import com.sundata.product.echarts.model.ChartsDataShow;
+import com.sundata.product.echarts.model.PieData;
+import org.apache.commons.collections4.SetUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.sql.DataSource;
+import java.math.BigDecimal;
+import java.sql.SQLException;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * 领导驾驶舱数据查询
+ */
+@Service
+public class RWAWelcomeService {
+
+
+    @Autowired
+    DataSource dataSource;
+
+    /**
+     * 表内业务风险暴露(一级)风险加权资产占比
+     * <p>
+     * 按风险暴露分类(一级)统计各表内业务RWA合计,以饼状图展示,展示各风险暴露分类的占比。
+     * </p>
+     *
+     * @return xLabels xData
+     */
+    public ChartsDataShow queryONRISKRWAPie01() throws SQLException {
+        ChartsDataShow chartsDataShow = new ChartsDataShow();
+        List<Entity> entities = DbUtil.use(dataSource).query("""
+                select onmaster.RISK_EXPOSURE_LEV01_CODE, onmaster.RISK_EXPOSURE_LEV01_CODE_NAME, sum(RWA) as rwasum
+                from rwa_apm_bus_rs_onbusinessrwa_master onmaster
+                where onmaster.CALCINDEX = (SELECT CALCINDEX FROM RWA_CALC_RS_TASK_MASTER A WHERE A.TERM = (getLastTerm()))
+                group by onmaster.RISK_EXPOSURE_LEV01_CODE, onmaster.RISK_EXPOSURE_LEV01_CODE_NAME
+                """);
+        LinkedList<PieData> pieDataList = new LinkedList<>();
+        for (Entity entity : entities) {
+            String RISK_EXPOSURE_LEV01_CODE_NAME = entity.getFieldNames().iterator().next();
+            String rwasum = entity.getFieldNames().iterator().next();
+            String title = entity.getStr(RISK_EXPOSURE_LEV01_CODE_NAME);
+            BigDecimal value = entity.getBigDecimal(rwasum);
+            pieDataList.add(new PieData(title, value));
+        }
+        chartsDataShow.setPieData(pieDataList);
+        return chartsDataShow;
+    }
+
+    /**
+     * 表外业务风险暴露(一级)风险加权资产占比
+     * <p>
+     * 按风险暴露分类(一级)统计各表外业务RWA合计,以饼状图展示,展示各风险暴露分类的占比。
+     * </p>
+     *
+     * @return
+     */
+    public ChartsDataShow queryOFFRISKRWAPie02() {
+        ChartsDataShow chartsDataShow = new ChartsDataShow();
+        return chartsDataShow;
+    }
+
+    /**
+     * 前十大机构信用风险加权资产合计
+     * <p>
+     * 按支行(经营机构)汇总,统计各支行信用风险RWA的合计。根据RWA合计降序排列。
+     * <br/>柱状图:展示前十家机构的RWA合计。
+     * <br/>折线图:展示前十家机构的RWA占全行RWA的比例。
+     * </p>
+     *
+     * @return
+     */
+    public ChartsDataShow queryRISKRWATOP10ByOrg03() {
+        ChartsDataShow chartsDataShow = new ChartsDataShow();
+        return chartsDataShow;
+    }
+
+    /**
+     * 风险暴露(一级)风险加权资产占比
+     * <p>
+     * 按风险暴露分类(一级)统计各债项RWA合计,以饼状图展示,展示各风险暴露分类的占比。
+     * </p>
+     *
+     * @return
+     */
+    public ChartsDataShow queryLV1RWAPie04() {
+        ChartsDataShow chartsDataShow = new ChartsDataShow();
+        return chartsDataShow;
+    }
+
+    /**
+     * 风险暴露(一级)缓释前风险暴露占比
+     * <p>
+     * 按风险暴露分类(一级)统计各债项缓释前风险暴露合计,以饼状图展示,展示各风险暴露分类的占比。
+     * </p>
+     */
+    public ChartsDataShow queryRISKLV1EADPie05() {
+        ChartsDataShow chartsDataShow = new ChartsDataShow();
+        return chartsDataShow;
+    }
+
+    /**
+     * 信用风险缓释工具当期缓释覆盖金额占比
+     * <p>
+     * 按合格信用风险缓释工具类型统计各债项缓释覆盖部分风险暴露合计,以饼状图展示,展示各类合格缓释工具的占比。
+     * </p>
+     *
+     * @return
+     */
+    public ChartsDataShow querySlowRelPie06() {
+        ChartsDataShow chartsDataShow = new ChartsDataShow();
+        return chartsDataShow;
+    }
+
+    /**
+     * 风险暴露分类(一级)当期缓释情况
+     * <p>
+     * 按风险暴露分类(一级)统计各债项的缓释覆盖部分风险暴露和未缓释风险暴露合计。
+     * <br/>柱状图:展示各类风险暴露分类的缓释金额和未缓释金额
+     * <br/>折线图:展示各类风险暴露分类的缓释比例。缓释比例=sum(缓释覆盖部分风险暴露)*100%/sum(缓释前风险暴露)
+     * </p>
+     *
+     * @return
+     */
+    public ChartsDataShow querySlowRelLV107() {
+        ChartsDataShow chartsDataShow = new ChartsDataShow();
+        return chartsDataShow;
+    }
+
+}

+ 3 - 3
Procedure/backend/project/src/main/resources/application.yml

@@ -27,9 +27,9 @@ spring:
   #  username: testdb
   #  password: testdb
   datasource:
-    jdbcUrl: jdbc:mysql://192.168.24.220:3306/rwa_test
-    username: test
-    password: test
+    jdbcUrl: jdbc:mysql://localhost:3306/rwa_dev
+    username: rwa_dev
+    password: rwa_dev
 
     encrypted: false # 是否使用加密后的数据库密码
     #hikari 链接池配置

+ 5 - 5
Procedure/frontend/projectb/src/app.tsx

@@ -59,7 +59,7 @@ export async function getInitialState(): Promise<(InitData & {layoutSettings?: P
 export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => {
   const loginPath = '/user/login';
 
-  
+
 
   //layout: 'mix',//纵向菜单
   //layout: 'top',//横向菜单,无左侧菜单栏
@@ -69,7 +69,7 @@ export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) =
   }else if(layoutType === 'mix'){
     import('./styles/less/mix.less');
   }
-  
+
   // const color = initialState?.color||'#13C2C2';
   //增加全局css样式变量
   document.body.style.setProperty('--ant-primary-color', baseStyle.getColorProps(initialState?.color||'').primary);//主题色
@@ -380,10 +380,10 @@ export const getCustomTabs = () => {
     },
     [location.pathname]
   );
-  
+
     return (
       <div className="rumtime-keep-alive-tabs-layout" hidden={!isKeep} style={ {height:'40px'} }>
-        <Tabs 
+        <Tabs
           hideAdd
           onChange={(key: string) => {
             navigate(key);
@@ -410,7 +410,7 @@ export const getCustomTabs = () => {
                   tab={
                     <Dropdown
                       menu={ {items,onClick: selectAction } }
-                      trigger={["contextMenu"]} 
+                      trigger={["contextMenu"]}
                       onOpenChange={()=>{navigate(pathname+search);}}
                     >
                       <div>

+ 114 - 2
Procedure/frontend/projectb/src/pages/product/rwa/Rwa_Welcome.tsx

@@ -1,9 +1,121 @@
 import React from 'react';
 
 import { SDPage } from '@sundata/ui-frame';
+// import ECharts from '@/pages/example/components/ECharts';
+// import echarts from 'echarts/types/dist/echarts';
 
 type welcomeProps = {};
+
+
+
 const Rwa_welcome: React.FC<welcomeProps> = (prop: welcomeProps) => {
-  return <SDPage></SDPage>;
-};
+
+// type EChartsOption = echarts.EChartsOption;
+//
+// var chartDom = document.getElementById('main')!;
+// var myChart = echarts.init(chartDom);
+// var option: EChartsOption;
+//
+// option = {
+//   tooltip: {
+//     trigger: 'axis',
+//     axisPointer: {
+//       type: 'cross',
+//       crossStyle: {
+//         color: '#999'
+//       }
+//     }
+//   },
+//   toolbox: {
+//     feature: {
+//       dataView: { show: true, readOnly: true },
+//       magicType: { show: true, type: ['line', 'bar'] },
+//       restore: { show: true },
+//       saveAsImage: { show: true }
+//     }
+//   },
+//   legend: {
+//     data: ['A', 'Precipitation', 'Temperature']
+//   },
+//   xAxis: [
+//     {
+//       type: 'category',
+//       data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+//       axisPointer: {
+//         type: 'shadow'
+//       }
+//     }
+//   ],
+//   yAxis: [
+//     {
+//       type: 'value',
+//       name: 'Precipitation',
+//       min: 0,
+//       max: 250,
+//       interval: 50,
+//       axisLabel: {
+//         formatter: '{value} ml'
+//       }
+//     },
+//     {
+//       type: 'value',
+//       name: 'Temperature',
+//       min: 0,
+//       max: 25,
+//       interval: 5,
+//       axisLabel: {
+//         formatter: '{value} °C'
+//       }
+//     }
+//   ],
+//   series: [
+//     {
+//       name: 'A',
+//       type: 'bar',
+//       tooltip: {
+//         valueFormatter: function (value) {
+//           return (value as number) + ' 万元';
+//         }
+//       },
+//       stack: 'total',
+//       data: [
+//         2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3
+//       ]
+//     },
+//     {
+//       name: 'Precipitation',
+//       type: 'bar',
+//       tooltip: {
+//         valueFormatter: function (value) {
+//           return (value as number) + ' 万元';
+//         }
+//       },
+//       stack: 'total',
+//       data: [
+//         2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
+//       ]
+//     },
+//     {
+//       name: 'Temperature',
+//       type: 'line',
+//       yAxisIndex: 1,
+//       tooltip: {
+//         valueFormatter: function (value) {
+//           return (value as number) + ' %';
+//         }
+//       },
+//       data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
+//     }
+//   ]
+// };
+//
+// option && myChart.setOption(option);
+
+  return <SDPage>
+    {/*<ECharts*/}
+    {/* elementId={"id1"} height={'100px'} option={} width={'100px'}></ECharts>*/}
+  </SDPage>
+}
+
+
 export default Rwa_welcome;