From c2bdcb0544f107e6f5e7a4cfa47f009a9a191e10 Mon Sep 17 00:00:00 2001
From: WX <wx036@qq.com>
Date: 星期六, 25 十一月 2023 18:59:20 +0800
Subject: [PATCH] 主营分析图表接口

---
 GasolineBlend/Controllers/RcyController.cs   |   13 ++++++++++++-
 RiskControl.NewService/Service/RcyService.cs |   47 +++++++++++++++++++++++++++++++++++++++++++----
 2 files changed, 55 insertions(+), 5 deletions(-)

diff --git a/GasolineBlend/Controllers/RcyController.cs b/GasolineBlend/Controllers/RcyController.cs
index dfbb4e0..a117590 100644
--- a/GasolineBlend/Controllers/RcyController.cs
+++ b/GasolineBlend/Controllers/RcyController.cs
@@ -101,7 +101,18 @@
         [HttpPost]
         public async Task<ActionResult> GetChainIncomeCostPage(int pageIndex, int pageSize, string[] exchangeCodes)
         {
-            var res = await _rcyService.GetChainIncomeCostPage(pageIndex,pageSize, exchangeCodes);
+            var res = await _rcyService.GetChainIncomeCostPage(pageIndex, pageSize, exchangeCodes);
+            return SuccessNoShow(data: res);
+        }
+        /// <summary>
+        /// 涓昏惀鍒嗘瀽鍥捐〃鎺ュ彛
+        /// </summary>
+        /// <param name="type">income,cost,grossmargin</param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<ActionResult> GetChainIncomeCostChart(string type)
+        {
+            var res = await _rcyService.GetChainIncomeCostChart(type);
             return SuccessNoShow(data: res);
         }
     }
diff --git a/RiskControl.NewService/Service/RcyService.cs b/RiskControl.NewService/Service/RcyService.cs
index 07df17d..2ad4ce7 100644
--- a/RiskControl.NewService/Service/RcyService.cs
+++ b/RiskControl.NewService/Service/RcyService.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 浠佷骇鐮�
     /// </summary>
-    public class RcyService :DbContext
+    public class RcyService : DbContext
     {
         /// <summary>
         /// 鏅皵鐭╅樀
@@ -29,6 +29,7 @@
                 .ToPageAsync(pageIndex, pageSize);
             return res;
         }
+
         /// <summary>
         /// 鏅皵鐭╅樀
         /// </summary>
@@ -39,6 +40,7 @@
                 .ToListAsync();
             return res;
         }
+
         /// <summary>
         /// 涓婂競鍦颁綅
         /// </summary>
@@ -56,6 +58,7 @@
                 .ToPageAsync(pageIndex, pageSize);
             return res;
         }
+
         /// <summary>
         /// 涓婂競鍦颁綅
         /// </summary>
@@ -66,6 +69,7 @@
                 .ToListAsync();
             return res;
         }
+
         /// <summary>
         /// 鍏徃璇︽儏
         /// </summary>
@@ -83,6 +87,7 @@
                 .ToPageAsync(pageIndex, pageSize);
             return res;
         }
+
         /// <summary>
         /// 鍏徃璇︽儏
         /// </summary>
@@ -93,6 +98,7 @@
                 .ToListAsync();
             return res;
         }
+
         /// <summary>
         /// 浜т笟鍦板浘
         /// </summary>
@@ -101,19 +107,52 @@
         {
             var res = await RiskControlRRDb.Queryable<RcyGsxq>()
                 .GroupBy(a => a.Sf)
-                .Select(a => new { Name = a.Sf, Value = SqlFunc.AggregateCount(a.Sf) })
+                .Select(a => new {Name = a.Sf, Value = SqlFunc.AggregateCount(a.Sf)})
                 .ToListAsync();
             return res;
         }
 
-        public async Task<Page<ChainIncomeCost>> GetChainIncomeCostPage(int pageIndex,int pageSize,string[] exchangeCodes)
+        public async Task<Page<ChainIncomeCost>> GetChainIncomeCostPage(int pageIndex, int pageSize,
+            string[] exchangeCodes)
         {
             var res = await RiskControlRRDb.Queryable<ChainIncomeCost>()
-                .WhereIF(exchangeCodes.Length>0,a=>exchangeCodes.Contains(a.ExchangeCode))
+                .WhereIF(exchangeCodes.Length > 0, a => exchangeCodes.Contains(a.ExchangeCode))
                 .ToPageAsync(pageIndex, pageSize);
 
             return res;
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="type">income,cost,grossmargin</param>
+        /// <returns></returns>
+        public async Task<object> GetChainIncomeCostChart(string type)
+        {
+            var data = await RiskControlRRDb.Queryable<ChainIncomeCost>()
+                .Where(a => a.CompanyName == "鎬昏")
+                .FirstAsync();
+            var props = typeof(ChainIncomeCost).GetProperties();
+            var dict = new SortedDictionary<int, double>();
+            foreach (var p in props.Where(a=>a.Name.ToLower().StartsWith(type.ToLower())))
+            {
+                var year =int.Parse(p.Name.ToLower().Replace(type.ToLower(), ""));
+                var val = (double?) p.GetValue(data);
+                if(val != null)
+                    dict.Add(year,(double)val);
+            }
+
+            var res = new List<object>();
+            var index = 0;
+            foreach (var kv in dict)
+            {
+                var obj = new {year = kv.Key, value = kv.Value, rate = index == 0 ? (double?)null : (kv.Value - dict[kv.Key-1])/ dict[kv.Key - 1] *100};
+                res.Add(obj);
+                index++;
+            }
+
+            return res;
+        }
+
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0