2024-12-19 19:44:47 +08:00
using DOAN.Model.MES.product ;
using DOAN.Service.MES.product.IService ;
using Infrastructure.Attribute ;
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
using DOAN.Service.MES.SmartScreen.Product.IService ;
using DOAN.Model.MES.SmartScreen.Product ;
2024-12-22 15:12:10 +08:00
using DOAN.Model.MES.SmartScreen ;
using Microsoft.Data.SqlClient ;
using DOAN.Model.MES.base_ ;
2024-12-23 15:55:39 +08:00
using MathNet.Numerics ;
2024-12-23 17:09:35 +08:00
using System.Data ;
2024-12-23 17:39:55 +08:00
using NPOI.SS.Formula.Atp ;
2024-12-19 19:44:47 +08:00
namespace DOAN.Service.MES.SmartScreen.Product
{
/// <summary>
/// 生产智慧屏
/// </summary>
[AppService(ServiceType = typeof(IProductSmartScreenService), ServiceLifetime = LifeTime.Transient)]
public class ProductSmartScreenService : BaseService < ProWorkorder > , IProductSmartScreenService
{
/// <summary>
/// 数字翻牌器
/// </summary>
/// <returns></returns>
public DigitalTurntableModel DigitalTurntable ( )
{
DigitalTurntableModel digital = new DigitalTurntableModel ( ) ;
digital . WorkorderQuantity = Context . Queryable < ProWorkorder > ( ) . Where ( it = > it . WorkorderDate = = DateTime . Today ) . Count ( ) ;
2024-12-27 09:21:26 +08:00
//digital.FinishedWorkorderQuantity=Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == DateTime.Today)
// .Where(it=>it.Status==2)
// .Count();
2024-12-19 19:44:47 +08:00
2024-12-27 09:21:26 +08:00
//digital.UnFinishedWorkorderQuantity = Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == DateTime.Today)
// .Where(it => it.Status <2)
// .Count();
2024-12-19 19:44:47 +08:00
digital . ProductionPlanQuantity = Context . Queryable < ProWorkorder > ( ) . Where ( it = > it . WorkorderDate = = DateTime . Today ) . Sum ( it = > it . PlanNum ? ? 0 ) ;
2024-12-27 09:21:26 +08:00
//digital.ProductionFinishQuantity = Context.Queryable<ProReportwork01>().Where(it => it.JobDateTime >= DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1))
// .Where(it => it.ProcessId == 90).Sum(it => it.FinishNum??0);
2024-12-19 19:44:47 +08:00
2024-12-27 09:21:26 +08:00
digital . MaterialRequisitionQuantity = Context . Queryable < ProReportwork01 > ( ) . Where ( it = > it . ProcessId = = 10 & & it . JobDateTime > = DateTime . Today & & it . JobDateTime < DateTime . Today . AddDays ( 1 ) ) . Sum ( it = > it . FinishNum ? ? 0 ) ;
digital . ShipmentQuantity = Context . Queryable < ProReportwork01 > ( ) . Where ( it = > it . ProcessId = = 90 & & it . JobDateTime > = DateTime . Today & & it . JobDateTime < DateTime . Today . AddDays ( 1 ) ) . Sum ( it = > it . FinishNum ? ? 0 ) ;
2024-12-19 19:44:47 +08:00
2024-12-23 17:39:55 +08:00
digital . GroupQuantity = Context . Queryable < ProWorkorder > ( ) . Where ( it = > it . WorkorderDate = = DateTime . Today ) . Select ( it = > it . GroupCode ) . Distinct ( ) . Count ( ) ;
2024-12-19 19:44:47 +08:00
return digital ;
}
2024-12-22 15:12:10 +08:00
public EchartsOptions BarProcessProductStatistic ( )
{
EchartsOptions echartsOptions = new EchartsOptions ( ) ;
echartsOptions . Title = new EchartsTitle ( "今日各工序产量统计" , "今日各工序产量统计" ) ;
EchartsXAxis xAxis = new EchartsXAxis ( ) ;
xAxis . Data = Context . Queryable < BaseRelWorkRouteProcesses > ( ) . LeftJoin < BaseWorkProcesses > ( ( r , p ) = > r . FkWorkProcesses = = p . Id )
2024-12-23 16:00:57 +08:00
. Where ( ( r , p ) = > p . Status = = 1 & & r . FkWorkRoute = = 32 )
2024-12-22 15:12:10 +08:00
. OrderBy ( ( r , p ) = > p . Id )
. Select ( ( r , p ) = > p . Name )
. ToList ( ) ;
echartsOptions . XAxis = xAxis ;
//获取各个工序今日累计报工值
EchartsSeries echartsSeries = new EchartsSeries ( ) ;
2024-12-23 15:55:39 +08:00
echartsSeries . Name = "今日各个工序累计报工数" ;
2024-12-22 15:12:10 +08:00
List < EchartsSeriesData > Data = Context . Queryable < ProReportwork01 > ( )
. LeftJoin < BaseWorkProcesses > ( ( it , w ) = > it . ProcessId = = w . Id )
2024-12-23 16:00:57 +08:00
. Where ( ( it , w ) = > w . Status = = 1 & & it . JobDateTime > = DateTime . Today & & it . JobDateTime < = DateTime . Today . AddDays ( 1 ) )
2024-12-22 15:12:10 +08:00
. GroupBy ( ( it , w ) = > new { it . ProcessId , w . Name } )
. Select ( ( it , w ) = > new EchartsSeriesData ( )
{
Name = w . Name ,
Value = SqlFunc . AggregateSum ( it . FinishNum ? ? 0 )
} ) . ToList ( ) ;
echartsSeries . Data = Data ;
echartsOptions . Series . Add ( echartsSeries ) ;
//获取各个工序今日累计计划值
EchartsSeries echartsSeries2 = new EchartsSeries ( ) ;
2024-12-23 15:55:39 +08:00
echartsSeries2 . Name = "今日各个工序累计计划数" ;
2024-12-22 15:12:10 +08:00
List < EchartsSeriesData > Data2 = Context . Queryable < ProReportwork01 > ( )
. LeftJoin < BaseWorkProcesses > ( ( it , w ) = > it . ProcessId = = w . Id )
2024-12-23 16:00:57 +08:00
. Where ( ( it , w ) = > w . Status = = 1 & & it . JobDateTime > = DateTime . Today & & it . JobDateTime < = DateTime . Today . AddDays ( 1 ) )
2024-12-22 15:12:10 +08:00
. GroupBy ( ( it , w ) = > new { it . ProcessId , w . Name } )
. Select ( ( it , w ) = > new EchartsSeriesData ( )
{
Name = w . Name ,
Value = SqlFunc . AggregateSum ( it . PlanNum ? ? 0 )
} ) . ToList ( ) ;
echartsSeries2 . Data = Data2 ;
echartsOptions . Series . Add ( echartsSeries2 ) ;
2024-12-23 15:55:39 +08:00
return echartsOptions ;
}
public EchartsOptions BarProcessProductStatisticWeek ( )
{
// 获取当前时间
DateTime now = DateTime . Now ;
// 计算到本周一需要减去的天数
int daysToSubtract = ( ( int ) now . DayOfWeek - ( int ) DayOfWeek . Monday + 7 ) % 7 ;
// 获取本周一的日期
DateTime mondayMorning = now . AddDays ( - daysToSubtract ) . Date ; // .Date将时间设置为00:00:00
// 获取本周日午夜(实际上是下周一开始时间)
DateTime sundayMidnight = mondayMorning . AddDays ( 7 ) ;
EchartsOptions echartsOptions = new EchartsOptions ( ) ;
echartsOptions . Title = new EchartsTitle ( "本周各工序产量统计" , "本周各工序产量统计" ) ;
EchartsXAxis xAxis = new EchartsXAxis ( ) ;
xAxis . Data = Context . Queryable < BaseRelWorkRouteProcesses > ( ) . LeftJoin < BaseWorkProcesses > ( ( r , p ) = > r . FkWorkProcesses = = p . Id )
. Where ( ( r , p ) = > r . FkWorkRoute = = 32 )
. OrderBy ( ( r , p ) = > p . Id )
. Select ( ( r , p ) = > p . Name )
. ToList ( ) ;
echartsOptions . XAxis = xAxis ;
//获取各个工序今日累计报工值
EchartsSeries echartsSeries = new EchartsSeries ( ) ;
echartsSeries . Name = "本周各个工序累计报工数" ;
List < EchartsSeriesData > Data = Context . Queryable < ProReportwork01 > ( )
. LeftJoin < BaseWorkProcesses > ( ( it , w ) = > it . ProcessId = = w . Id )
2024-12-23 17:09:35 +08:00
. Where ( ( it , w ) = > w . Status = = 1 & & it . JobDateTime > = mondayMorning & & it . JobDateTime < = sundayMidnight )
2024-12-23 15:55:39 +08:00
. GroupBy ( ( it , w ) = > new { it . ProcessId , w . Name } )
. Select ( ( it , w ) = > new EchartsSeriesData ( )
{
Name = w . Name ,
Value = SqlFunc . AggregateSum ( it . FinishNum ? ? 0 )
} ) . ToList ( ) ;
echartsSeries . Data = Data ;
echartsOptions . Series . Add ( echartsSeries ) ;
//获取各个工序今日累计计划值
EchartsSeries echartsSeries2 = new EchartsSeries ( ) ;
echartsSeries2 . Name = "本周各个工序累计计划数" ;
List < EchartsSeriesData > Data2 = Context . Queryable < ProReportwork01 > ( )
. LeftJoin < BaseWorkProcesses > ( ( it , w ) = > it . ProcessId = = w . Id )
2024-12-23 16:00:57 +08:00
. Where ( ( it , w ) = > w . Status = = 1 & & it . JobDateTime > = mondayMorning & & it . JobDateTime < = sundayMidnight )
2024-12-23 15:55:39 +08:00
. GroupBy ( ( it , w ) = > new { it . ProcessId , w . Name } )
. Select ( ( it , w ) = > new EchartsSeriesData ( )
{
Name = w . Name ,
Value = SqlFunc . AggregateSum ( it . PlanNum ? ? 0 )
} ) . ToList ( ) ;
echartsSeries2 . Data = Data2 ;
echartsOptions . Series . Add ( echartsSeries2 ) ;
return echartsOptions ;
}
public EchartsOptions BarProcessProductStatisticMonth ( )
{
// 获取当前日期时间
DateTime now = DateTime . Now ;
// 获取本月第一天的日期时间(凌晨)
DateTime firstDayOfMonth = new DateTime ( now . Year , now . Month , 1 , 0 , 0 , 0 ) ;
// 获取本月最后一天的日期时间(午夜)
int daysInMonth = DateTime . DaysInMonth ( now . Year , now . Month ) ;
DateTime lastDayOfMonth = new DateTime ( now . Year , now . Month , daysInMonth , 23 , 59 , 59 ) ;
EchartsOptions echartsOptions = new EchartsOptions ( ) ;
echartsOptions . Title = new EchartsTitle ( "本月各工序产量统计" , "本月各工序产量统计" ) ;
EchartsXAxis xAxis = new EchartsXAxis ( ) ;
xAxis . Data = Context . Queryable < BaseRelWorkRouteProcesses > ( ) . LeftJoin < BaseWorkProcesses > ( ( r , p ) = > r . FkWorkProcesses = = p . Id )
2024-12-23 16:00:57 +08:00
. Where ( ( r , p ) = > p . Status = = 1 & & r . FkWorkRoute = = 32 )
2024-12-23 15:55:39 +08:00
. OrderBy ( ( r , p ) = > p . Id )
. Select ( ( r , p ) = > p . Name )
. ToList ( ) ;
echartsOptions . XAxis = xAxis ;
//获取各个工序今日累计报工值
EchartsSeries echartsSeries = new EchartsSeries ( ) ;
echartsSeries . Name = "本月各个工序今日累计报工数" ;
List < EchartsSeriesData > Data = Context . Queryable < ProReportwork01 > ( )
. LeftJoin < BaseWorkProcesses > ( ( it , w ) = > it . ProcessId = = w . Id )
2024-12-23 16:00:57 +08:00
. Where ( ( it , w ) = > w . Status = = 1 & & it . JobDateTime > = firstDayOfMonth & & it . JobDateTime < = lastDayOfMonth )
2024-12-23 15:55:39 +08:00
. GroupBy ( ( it , w ) = > new { it . ProcessId , w . Name } )
. Select ( ( it , w ) = > new EchartsSeriesData ( )
{
Name = w . Name ,
Value = SqlFunc . AggregateSum ( it . FinishNum ? ? 0 )
} ) . ToList ( ) ;
echartsSeries . Data = Data ;
echartsOptions . Series . Add ( echartsSeries ) ;
//获取各个工序今日累计计划值
EchartsSeries echartsSeries2 = new EchartsSeries ( ) ;
echartsSeries2 . Name = "本月各个工序今日累计计划数" ;
List < EchartsSeriesData > Data2 = Context . Queryable < ProReportwork01 > ( )
. LeftJoin < BaseWorkProcesses > ( ( it , w ) = > it . ProcessId = = w . Id )
2024-12-23 16:00:57 +08:00
. Where ( ( it , w ) = > w . Status = = 1 & & it . JobDateTime > = firstDayOfMonth & & it . JobDateTime < = lastDayOfMonth )
2024-12-23 15:55:39 +08:00
. GroupBy ( ( it , w ) = > new { it . ProcessId , w . Name } )
. Select ( ( it , w ) = > new EchartsSeriesData ( )
{
Name = w . Name ,
Value = SqlFunc . AggregateSum ( it . PlanNum ? ? 0 )
} ) . ToList ( ) ;
echartsSeries2 . Data = Data2 ;
echartsOptions . Series . Add ( echartsSeries2 ) ;
2024-12-22 15:12:10 +08:00
return echartsOptions ;
}
/// <summary>
/// 本月每天产量
/// </summary>
/// <returns></returns>
public EchartsOptions OutputOfCurrentmonth ( )
{ // 获取当前日期
DateTime today = DateTime . Today ;
// 获取当前月的第一天
DateTime firstDayOfMonth = new DateTime ( today . Year , today . Month , 1 ) ;
// 获取当前月的最后一天
DateTime lastDayOfMonth =
new DateTime ( today . Year , today . Month , DateTime . DaysInMonth ( today . Year , today . Month ) ) ;
EchartsOptions echartsOptions = new EchartsOptions ( ) ;
EchartsTitle Title = new EchartsTitle ( "本月每天产量" , "本月每天产量" ) ;
echartsOptions . Title = Title ;
// 横坐标
EchartsXAxis xAxis = new EchartsXAxis ( ) ;
List < string > xData = new List < string > ( ) ;
DateTime index = firstDayOfMonth ;
do
{
xData . Add ( index . ToString ( "MM-dd" ) ) ;
index = index . AddDays ( 1 ) ;
} while ( index < lastDayOfMonth . AddDays ( 1 ) ) ;
xAxis . Data = xData ;
echartsOptions . XAxis = xAxis ;
//折线系列
EchartsSeries LineSeries = new EchartsSeries ( ) ;
LineSeries . Name = "本月每天产量" ;
LineSeries . Type = "line" ;
var result = Context . Queryable < ProWorkorder > ( )
. LeftJoin < ProReportwork01 > ( ( w , r ) = > w . Workorder = = r . Workorder )
2024-12-23 16:00:57 +08:00
. Where ( ( w , r ) = > w . Status = = 1 & & w . WorkorderDate > = firstDayOfMonth & & w . WorkorderDate < = lastDayOfMonth )
2024-12-22 15:12:10 +08:00
. GroupBy ( ( w , r ) = > w . WorkorderDate )
. Select ( ( w , r ) = > new EchartsSeriesData ( )
{
Name = w . WorkorderDate . Value . ToString ( "MM-dd" ) ,
Value = SqlFunc . AggregateSum ( r . FinishNum ? ? 0 )
} ) . ToList ( ) ;
List < EchartsSeriesData > LineSeriesData = new List < EchartsSeriesData > ( ) ;
foreach ( var item in xData )
{
LineSeriesData . Add ( new EchartsSeriesData ( )
{
Name = item ,
Value = result . Where ( it = > it . Name = = item ) . Select ( it = > it . Value ) . FirstOrDefault ( ) ,
} ) ;
}
LineSeries . Data = LineSeriesData ;
echartsOptions . Series = new List < EchartsSeries > ( ) { LineSeries } ;
// 各个组的产量系列
string [ ] groupArray = Context . Queryable < BaseGroup > ( ) . Where ( it = > it . Status = = 1 ) . OrderBy ( it = > it . Id ) . Select ( it = > it . GroupCode )
. ToArray ( ) ;
if ( groupArray . Length > 0 )
{
var GroupresultList = Context . Queryable < ProWorkorder > ( )
2024-12-23 15:20:47 +08:00
. LeftJoin < ProReportwork01 > ( ( w , r ) = > w . Workorder = = r . Workorder )
2024-12-22 15:12:10 +08:00
. Where ( ( w , r ) = > groupArray . Contains ( w . GroupCode ) )
2024-12-23 16:00:57 +08:00
. Where ( ( w , r ) = > w . Status = = 1 & & w . WorkorderDate > = firstDayOfMonth & & w . WorkorderDate < = lastDayOfMonth )
2024-12-22 15:12:10 +08:00
. GroupBy ( ( w , r ) = > new { w . GroupCode , w . WorkorderDate } )
. Select ( ( w , r ) = > new
{
groupCode = w . GroupCode ,
Name = w . WorkorderDate . Value . ToString ( "MM-dd" ) ,
2024-12-23 15:20:47 +08:00
Value = SqlFunc . AggregateSum ( r . FinishNum ? ? 0 )
2024-12-22 15:12:10 +08:00
} ) . ToList ( ) ;
foreach ( var group in groupArray )
{
EchartsSeries groupSeries = new EchartsSeries ( ) ;
groupSeries . Name = group + "组" ;
groupSeries . Type = "bar" ;
List < EchartsSeriesData > LineSeriesData01 = new List < EchartsSeriesData > ( ) ;
foreach ( var item in xData )
{
LineSeriesData01 . Add ( new EchartsSeriesData ( )
{
Name = item ,
Value = GroupresultList . Where ( it = > it . Name = = item ) . Where ( it = > it . groupCode = = group ) . Select ( it = > it . Value ) . FirstOrDefault ( ) ,
} ) ;
}
groupSeries . Data = LineSeriesData01 ;
echartsOptions . Series . Add ( groupSeries ) ;
}
}
2024-12-23 17:09:35 +08:00
return echartsOptions ;
}
public EchartsOptions AccumulatedReport ( )
{
EchartsOptions echartsOptions = new EchartsOptions ( ) ;
echartsOptions . Title = new EchartsTitle ( "今日各工序实时累计完工数折线图" , "今日各工序实时累计完工数折线图" ) ;
//1.查询各个工序
int [ ] processArray = Context . Queryable < ProReportwork01 > ( )
. Where ( it = > it . JobDateTime > DateTime . Today & & it . JobDateTime < DateTime . Today . AddDays ( 1 ) )
2024-12-23 18:02:55 +08:00
. OrderBy ( it = > it . ProcessId )
. Select ( it = > it . ProcessId )
2024-12-23 17:09:35 +08:00
. Distinct ( )
. ToArray ( ) ;
2024-12-23 17:39:55 +08:00
//1 X轴
List < DateTime > DateTimeArray = new List < DateTime > ( ) ;
2024-12-27 09:21:26 +08:00
2024-12-23 17:39:55 +08:00
// 定义起始时间和结束时间
2024-12-27 09:22:51 +08:00
DateTime startTime = new DateTime ( DateTime . Today . Year , DateTime . Today . Month , DateTime . Today . Day , 8 , 0 , 0 ) ;
// DateTime startTime = DateTime.Today;
2024-12-27 09:21:26 +08:00
DateTime endTime = DateTime . Today . AddDays ( 1 ) ; // 8 AM + 12 hours = 8 PM
2024-12-23 17:39:55 +08:00
// 使用循环生成每10分钟的时间戳
for ( DateTime currentTime = startTime ; currentTime < = endTime ; currentTime = currentTime . AddMinutes ( 10 ) )
{
DateTimeArray . Add ( currentTime ) ;
}
List < string > DateTimeArrayString = DateTimeArray . Select ( it = > it . ToString ( "HH:mm" ) ) . ToList ( ) ;
echartsOptions . XAxis = new EchartsXAxis ( ) { Data = DateTimeArrayString } ;
2024-12-23 17:09:35 +08:00
//2 系列值-这组 今日实时累计完成数( 每10分钟)
2024-12-23 17:39:55 +08:00
for ( int i = 0 ; i < processArray . Length ; i + + )
2024-12-23 17:09:35 +08:00
{
string ProcessName = Context . Queryable < BaseWorkProcesses > ( ) . Where ( it = > it . Id = = processArray [ i ] ) . Select ( it = > it . Name ) . First ( ) ;
EchartsSeries echartsSeries = new EchartsSeries ( ) ;
2024-12-23 18:16:33 +08:00
//echartsSeries.Name = ProcessName + "工序今日实时累计完成数( 每10分钟) ";
echartsSeries . Name = ProcessName ;
2024-12-23 17:09:35 +08:00
echartsSeries . Type = "line" ;
List < EchartsSeriesData > echartsSeriesDatas = new List < EchartsSeriesData > ( ) ;
string sql = "SELECT" +
2024-12-27 09:21:26 +08:00
" FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP(job_datetime) / 600 ) * 600 ) AS time_period," +
2024-12-23 17:12:53 +08:00
" SUM( finish_num ) AS count " +
" FROM" +
" pro_reportwork " +
" WHERE" +
" DATE(job_datetime) = CURDATE() AND @process_id=process_id " +
" GROUP BY" +
" FLOOR( UNIX_TIMESTAMP( job_datetime ) / 600 )" +
" ORDER BY" +
" time_period" ;
2024-12-27 09:21:26 +08:00
string sql2 = "SELECT time_period, SUM(finish_num) AS count\r\nFROM (\r\n SELECT FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( job_datetime ) / 600 ) * 600 ) AS time_period,\r\n finish_num\r\n FROM pro_reportwork\r\n WHERE DATE(job_datetime) = CURDATE() AND @process_id=process_id\r\n) AS subquery\r\nGROUP BY time_period\r\nORDER BY time_period" ;
2024-12-23 17:09:35 +08:00
2024-12-27 09:21:26 +08:00
DataTable result = Context . Ado . GetDataTable ( sql2 , new { process_id = processArray [ i ] , } ) ;
2024-12-23 17:09:35 +08:00
int sum = 0 ;
foreach ( DataRow row in result . Rows )
{
// DateTime value =(DateTime)row["time_period"];
DateTime value = row [ "time_period" ] ! = DBNull . Value ? Convert . ToDateTime ( row [ "time_period" ] ) : DateTime . MinValue ;
int count = Convert . ToInt32 ( row [ "count" ] ) ;
sum = sum + count ;
EchartsSeriesData echartsSeriesData = new EchartsSeriesData ( )
{
Name = value . ToString ( "HH:mm" ) ,
Value = sum
} ;
echartsSeriesDatas . Add ( echartsSeriesData ) ;
}
2024-12-23 17:39:55 +08:00
// 和X轴一 一对应
2024-12-23 18:02:55 +08:00
int currentNum = Array . IndexOf ( DateTimeArrayString . ToArray ( ) , echartsSeriesDatas . Select ( it = > it . Name ) . LastOrDefault ( ) ) ;
for ( int j = 0 ; j < currentNum ; j + + )
2024-12-23 17:39:55 +08:00
{
int point = 0 ;
foreach ( var item in echartsSeriesDatas )
{
if ( item . Name = = DateTimeArrayString [ j ] )
{
continue ;
}
point + + ;
}
if ( point = = echartsSeriesDatas . Count ( ) )
{
// 获取前一个时间段产量
decimal productNum = 0 ;
if ( j > = 1 )
{
productNum = echartsSeriesDatas . Where ( it = > it . Name = = DateTimeArrayString [ j - 1 ] ) . Select ( it = > it . Value ) . FirstOrDefault ( ) ;
}
else
{
productNum = 0 ;
}
echartsSeriesDatas . Add ( new EchartsSeriesData ( ) { Name = DateTimeArrayString [ j ] , Value = productNum } ) ;
}
}
echartsSeries . Data = echartsSeriesDatas . OrderBy ( it = > it . Name ) . ToList ( ) ;
echartsOptions . Series . Add ( echartsSeries ) ;
2024-12-23 17:09:35 +08:00
}
2024-12-22 15:12:10 +08:00
return echartsOptions ;
}
2024-12-19 19:44:47 +08:00
}
}