WX
2023-11-22 1649a3fca34a0d8b550ee547569b36bc4b43bd6b
主营分析列表接口调整
3个文件已修改
81 ■■■■ 已修改文件
GasolineBlend/Controllers/RcyController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/Entity/RCY/ChainIncomeCost.cs 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/Service/RcyService.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend/Controllers/RcyController.cs
@@ -99,9 +99,9 @@
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public async Task<ActionResult> GetChainIncomeCostPage(int pageIndex, int pageSize, string exchangeCode)
        public async Task<ActionResult> GetChainIncomeCostPage(int pageIndex, int pageSize, string[] exchangeCodes)
        {
            var res = await _rcyService.GetChainIncomeCostPage(pageIndex,pageSize, exchangeCode);
            var res = await _rcyService.GetChainIncomeCostPage(pageIndex,pageSize, exchangeCodes);
            return SuccessNoShow(data: res);
        }
    }
RiskControl.NewService/Entity/RCY/ChainIncomeCost.cs
@@ -28,25 +28,23 @@
        ///</summary>
        [SugarColumn(ColumnName = "ExchangeName")]
        public string ExchangeName { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "Income")]
        public decimal? Income { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "Cost")]
        public decimal? Cost { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "GrossMargin")]
        public decimal? GrossMargin { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "ReportType")]
        public string ReportType { get; set; }
        public double? Income2020 { get; set; }
        public double? Cost2020 { get; set; }
        public double? GrossMargin2020 { get; set; }
        public double? Income2021 { get; set; }
        public double? Cost2021 { get; set; }
        public double? GrossMargin2021 { get; set; }
        public double? Income2022 { get; set; }
        public double? Cost2022 { get; set; }
        public double? GrossMargin2022 { get; set; }
        public double? Income2023 { get; set; }
        public double? Cost2023 { get; set; }
        public double? GrossMargin2023 { get; set; }
        public double? Income2024 { get; set; }
        public double? Cost2024 { get; set; }
        public double? GrossMargin2024 { get; set; }
        public double? Income2025 { get; set; }
        public double? Cost2025 { get; set; }
        public double? GrossMargin2025 { get; set; }
    }
}
RiskControl.NewService/Service/RcyService.cs
@@ -106,45 +106,12 @@
            return res;
        }
        public async Task<Page<object>> GetChainIncomeCostPage(int pageIndex,int pageSize,string exchangeCode)
        public async Task<Page<ChainIncomeCost>> GetChainIncomeCostPage(int pageIndex,int pageSize,string[] exchangeCodes)
        {
            var pageCompany = await RiskControlRRDb.Queryable<ChainIncomeCost>()
                .Select(a => a.CompanyName)
                .Distinct()
            var res = await RiskControlRRDb.Queryable<ChainIncomeCost>()
                .WhereIF(exchangeCodes.Length>0,a=>exchangeCodes.Contains(a.ExchangeCode))
                .ToPageAsync(pageIndex, pageSize);
            var reportTypes = await RiskControlRRDb.Queryable<ChainIncomeCost>()
                .Select(a => a.ReportType)
                .Distinct()
                .ToListAsync();
            var colSql = string.Empty;
            foreach (var reportType in reportTypes.OrderByDescending(a=>a))
            {
                colSql += $@"
    MAX(CASE WHEN ReportType = '{reportType}' THEN Income ELSE 0 END)  AS Income{reportType},
    MAX(CASE WHEN ReportType = '{reportType}' THEN Cost ELSE 0 END) AS Cost{reportType},
    MAX(CASE WHEN ReportType = '{reportType}' THEN GrossMargin ELSE 0 END) AS GrossMargin{reportType},";
            }
            var sql = $@"SELECT
    CompanyName,
    ExchangeCode,
    ExchangeName,{colSql.TrimEnd(',')}
FROM ChainIncomeCost
Where CompanyName in ('{string.Join("','", pageCompany.Items)}')
{(string.IsNullOrWhiteSpace(exchangeCode)?"": $"And ExchangeCode='{exchangeCode}'")}
GROUP BY CompanyName, ExchangeCode, ExchangeName;";
            var data =  RiskControlRRDb.Ado.SqlQuery<object>(sql);
            var res = new Page<object>()
            {
                CurrentPage = pageCompany.CurrentPage,
                PageSize = pageCompany.PageSize,
                TotalItems = pageCompany.TotalItems,
                Items = data
            };
            return res;
        }