提交 c47f74c8 authored 作者: Administrator's avatar Administrator

设置进度条

上级 fe87a22c
......@@ -18,7 +18,6 @@ using Kingdee.BOS.Core.List.PlugIn.Args;
using Kingdee.BOS.Core;
using Kingdee.BOS.Log;
using System.Threading;
using Kingdee.BOS.KDThread;
namespace LQKJ_OFLCostReport
......@@ -26,22 +25,32 @@ namespace LQKJ_OFLCostReport
[Description("获取销售订单明细报表数据"), HotUpdate]
public class CostReportPlugin : AbstractListPlugIn
{
//public override void OnInitialize(InitializeEventArgs e)
//{
// base.OnInitialize(e);
// ShowProgressBar(false);
//}
private bool isLoading = false;
public override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Logger.Info("获取销售订单明细报表数据", "开始:"+ DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
if (isLoading) return;
this.View.Session["ProcessRateValue"] = 0;
ShowProgressBar(false);
}
private void ShowProgressBar(bool userTruePro)
{
this.View.ShowProcessForm(formResult => { }, userTruePro, "正在执行加载数据");
// 启动线程执行耗时操作,同时更新执行进度
MainWorker.QuequeTask(this.View.Context, () =>
{
try
{
string sql = $@"IF EXISTS (SELECT * FROM sys.tables WHERE name = 'cbmxCursor')
BEGIN
delete cbmxCursor where FUserID ={this.Context.UserId}
END";
DBServiceHelper.Execute(this.Context, sql);
this.View.Session["ProcessRateValue"] = 10;
DataTable dataTable = GetSaleDetailData();
string tmpTableName = createTmpTable(dataTable);
//向表插入数据
......@@ -51,34 +60,10 @@ END";
scope.Complete();
}
CreateView();
}
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
Logger.Info("获取销售订单明细报表数据", "数据加载完成后,停止进度条:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
//数据加载完成后,停止进度条
this.View.Session["ProcessRateValue"] = 100;
}
isLoading = true;
this.View.Refresh();
private void ShowProgressBar(bool userTruePro)
{
this.View.ShowProcessForm(formResult => { }, userTruePro, "正在执行加载数据");
// 启动线程执行耗时操作,同时更新执行进度
MainWorker.QuequeTask(this.View.Context, () =>
{
try
{
var counter = 100;
for (var x = 1; x < counter; ++x)
{
if ( Convert.ToInt32(this.View.Session["ProcessRateValue"]) == 100) return;
// TODO
Thread.Sleep(1000);
// 报告下执行进度
var rate = Convert.ToInt32(x * 100 / counter);
this.View.Session["ProcessRateValue"] = rate;
}
}
catch (Exception ex)
{
......@@ -86,9 +71,6 @@ END";
}
finally
{
Logger.Info("获取进度条", "错误:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
// 此句必不可少,进度值100时进度条自动关闭
this.View.Session["ProcessRateValue"] = 100;
this.View.SendDynamicFormAction(this.View);
}
}, null);
......@@ -112,7 +94,7 @@ END";
// 获取销售明细简单账表数据
public DataTable GetSaleDetailData()
{
Logger.Info("获取销售订单明细报表数据", "获取销售明细简单账表数据:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
this.View.Session["ProcessRateValue"] = 20;
ISysReportService sysReporSservice = ServiceFactory.GetSysReportService(this.Context);
IPermissionService permissionService = ServiceFactory.GetPermissionService(this.Context);
try
......@@ -156,6 +138,7 @@ END";
}
} finally
{
this.View.Session["ProcessRateValue"] = 50;
ServiceFactory.CloseService(sysReporSservice);
ServiceFactory.CloseService(permissionService);
}
......@@ -163,7 +146,7 @@ END";
}
public string createTmpTable(DataTable data)
{
Logger.Info("获取销售订单明细报表数据", "创建临时表:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
this.View.Session["ProcessRateValue"] = 60;
string fieldColumnSql = GetCreateTmpTableNameSql(data.Columns);
string tmpTableName = "cbmxCursor";
data.TableName = tmpTableName;
......@@ -191,6 +174,7 @@ END
";
DBServiceHelper.Execute(this.Context, createTmpTableSql);
this.View.Session["ProcessRateValue"] = 70;
return tmpTableName;
}
......@@ -209,7 +193,7 @@ END
}
private void CreateView()
{
Logger.Info("获取销售订单明细报表数据", "创建视图开始:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
this.View.Session["ProcessRateValue"] = 80;
string sql = $@"/*dialect*/IF OBJECT_ID('T_BAS_PREBDTWO', 'V') IS NULL
BEGIN
EXEC('CREATE VIEW T_BAS_PREBDTWO AS
......@@ -288,7 +272,7 @@ from cbmxCursor t1
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where t2L.FNAME = ''工资''
group by t1.FBillNo, t1.FBillSeq) ckzjrg
on t1.FBillNo = ckzjcl.FBillNo and t1.FBillSeq = ckzjcl.FBillSeq
on t1.FBillNo = ckzjrg.FBillNo and t1.FBillSeq = ckzjrg.FBillSeq
left join (SELECT t1.FBillNo, t1.FBillSeq, SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutManufacturingCost--制造费用
FROM cbmxCursor t1
left join
......@@ -298,7 +282,7 @@ from cbmxCursor t1
and t2L.FNAME <> ''工资''
and FNAME not like ''%折旧%''
group by t1.FBillNo, t1.FBillSeq) ckzzfy
on t1.FBillNo = ckzjcl.FBillNo and t1.FBillSeq = ckzjcl.FBillSeq
on t1.FBillNo = ckzzfy.FBillNo and t1.FBillSeq = ckzzfy.FBillSeq
left join (SELECT t1.FBillNo, t1.FBillSeq, SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutAddDepreciation--累计折旧
FROM cbmxCursor t1
left join
......@@ -306,7 +290,7 @@ from cbmxCursor t1
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where FNAME like ''%折旧%''
group by t1.FBillNo, t1.FBillSeq) ckljzj
on t1.FBillNo = ckzjcl.FBillNo and t1.FBillSeq = ckzjcl.FBillSeq
on t1.FBillNo = ckljzj.FBillNo and t1.FBillSeq = ckljzj.FBillSeq
where t1.FEXPENSENAME <> ''小计''
group by t1.FBillDate,
t1.FBillNo,
......@@ -331,11 +315,13 @@ group by t1.FBillDate,
ckzjrg.FOutDirectLabor,
ckzzfy.FOutManufacturingCost,
ckljzj.FOutAddDepreciation;
')
END
";
DBServiceHelper.Execute(this.Context, sql);
Logger.Info("获取销售订单明细报表数据", "创建视图结束:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
this.View.Session["ProcessRateValue"] = 90;
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论