在各種Erp管理系統中,經常統計某一時間段內的客戶銷售訂單分佈圖,效果如下:
開發步驟如下:
1、開啟“擴充套件功能定義”,
2、開啟新建的擴充套件功能“訂單客戶統計分析”,如圖所示:
填寫服務端程式碼,客戶端程式碼和UI程式碼,關鍵程式碼如下所示:
(1)服務端程式碼:
async Task Retrieve(RichErpDbContext dbContext, RichErpEntityForInfo inInfo, RichErpEntityForInfo returnInfo)
{
returnInfo.Q = new Comm_QueryCondition();
var chartInfo = new Comm_chartInfo();
chartInfo.Width = 800;
chartInfo.ChartOption = await GetOrderWeightFenbu(dbContext, inInfo);
returnInfo.Q.Items["result1"] = RichErpNewtonJson.SerializeObject(chartInfo);
}
服務端程式碼主要作用是獲取資料,生成Comm_chartInfo,然後傳送到客戶端,由客戶端生成報表。
(2)客戶端關鍵程式碼:
async void RichUc_NavBase_Run(object sender, RoutedEventArgs e)
{
try
{
var info = new RichErpEntityForInfo();
info.Action = "exeCode";
info.Q = ucNull.RichUc_NavBase.QueryCondition;
info.Q.Items["codeId"] = codeExt.comm_code.id;
info.Q.Items["action"] = "cx";
if (!ucNull.OpenCommHttpClient(true)) return;
try
{
var returnInfo = await ucNull.PostData(info);
if (returnInfo == null) return;
var ls_chartInfoJson1 = returnInfo.Q.Items["result1"];
await cefWebView1.ExecuteScriptAsync("comm_chartApplyInfo('" + ls_chartInfoJson1 + "');");
var ls_chartInfoJson2 = returnInfo.Q.Items["result2"];
await cefWebView2.ExecuteScriptAsync("comm_chartApplyInfo('" + ls_chartInfoJson2 + "');");
}
finally
{
ucNull.CloseBackWorker();
}
}
catch (Exception ex)
{
ucNull.ShowMessageBox(ex);
}
}
主要作用是根據使用者選擇的日期範圍或其他條件,從服務端獲取資料,然後把服務端返回的資料顯示在Chart控制元件中。
(3)UI關鍵程式碼:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="300"/>
<RowDefinition/>
</Grid.RowDefinitions>
<nsUIComm:Comm_uc_CefWebView x:Name="cefWebView1" Margin="3,3,3,0" Grid.Row="0"/>
</Grid>
主要作用是在介面中開啟WebView,顯示出Chart圖表。
擴充套件功能及前後端程式碼做好以後,就可以掛接到RichErp系統中去了,步驟如下:
2、設定許可權
3、最後退出系統,重新登入,就可以看到您的傑作了。