#region 获取存货明细数据
public void getStockDetailData(Context ctx, String year, String endYear, String period, String endPeriod, String currency, String ACCTGSYSTEMID, String ACCTGORGID, String ACCTPOLICYID, DataTable data)
{
try
{
ISysReportService sysReporSservice = ServiceFactory.GetSysReportService(ctx);
IPermissionService permissionService = ServiceFactory.GetPermissionService(ctx);
var filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(ctx);
var reportMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, "HS_NoDimInOutStockDetailRpt");
var reportFilterMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, "HS_NoDimInOutStockDetailFilter");
//获取报表过滤方案的构建基础,便于后续模型构建
var reportFilterServiceProvider = reportFilterMetadata.BusinessInfo.GetForm().GetFormServiceProvider();
var model = new SysReportFilterModel();
model.SetContext(ctx, reportFilterMetadata.BusinessInfo, reportFilterServiceProvider);
model.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id;
model.FilterObject.FilterMetaData = filterMetadata;
model.InitFieldList(reportMetadata, reportFilterMetadata);
model.GetSchemeList();
//获取过滤方案,可以通过LoadScheme("Id"),查询报表默认存在的一些过滤方案
model.LoadDefaultScheme();
var filter = model.GetFilterParameter();
var det = reportFilterMetadata.BusinessInfo.GetDynamicObjectType();
//这里填写普通过滤方案,填充实体信息
DynamicObject filterObj = filter.CustomFilter;
filterObj["ACCTGSYSTEMID"] = getDynamicObject("Org_AccountSystem", ACCTGSYSTEMID, ctx);//默认会计核算体系
//filterObj["STARTDATE"] = null;
//filterObj["EndDate"] = null;
filterObj["ACCTGSYSTEMID_Id"] = ACCTGSYSTEMID;
filterObj["ACCTGORGID_Id"] = ACCTGORGID;
filterObj["ACCTGORGID"] = getDynamicObject("ORG_Organizations", ACCTGORGID, ctx);
filterObj["ACCTPOLICYID_Id"] = ACCTPOLICYID;
filterObj["ACCTPOLICYID"] = getDynamicObject("BD_ACCTPOLICY", ACCTPOLICYID, ctx);
//filterObj["FCURRENCYID_Id"] = currency;
//filterObj["FCURRENCYID"] = getDynamicObject("BD_Currency", currency, ctx);
filterObj["Year"] = year;
filterObj["Period"] = period;
filterObj["EndYear"] = endYear;
filterObj["EndPeriod"] = endPeriod;
// filterObj["FDimType"] ="1";
//filter.FilterString.JoinFilterString(" FMaterialId IN ({0})", string.Join(",", materialSeq.Keys.Distinct().ToArray()));
//报表参数
IRptParams p = new RptParams();
p.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id;
p.StartRow = 1;
p.EndRow = int.MaxValue;
p.FilterParameter = filter;
p.FilterFieldInfo = model.FilterFieldInfo;
p.CustomParams = new Dictionary<string, object>();
p.CustomParams.Add("OpenParameter", "");
//报表服务参数,用于查询。
var reportServiceParam = new ReportServiceParameter();
reportServiceParam.RptFilterParams = p;
reportServiceParam.Context = ctx;
reportServiceParam.PageId = Guid.NewGuid().ToString();
reportServiceParam.BusinessInfo = reportMetadata.BusinessInfo;
//调用服务、查询报表,resutl.DataSource就是我们需要的DatTable了
var result = sysReporSservice.GetData(ctx, reportMetadata.BusinessInfo, p);
;
SerializerProxy serialHelper = new SerializerProxy(MessageFormats.Json, UTF8Encoding.UTF8, false, "", true);
//1、添加列
using (DataTable resultDataTable = result)
{
List<String> productList = new List<string>();
List<DataRow> productRowList = new List<DataRow>();
String productID = "";
DataRow newRow = data.NewRow();
foreach (DataRow dr in resultDataTable.Rows)
{
newRow = data.NewRow();
if (("标准销售出库单").Equals(dr["FBUSINESSTYPE"]) || ("标准销售退货单").Equals(dr["FBUSINESSTYPE"]))
{
productID = dr["FBILLNO"].ToString();
newRow["FBillno"] = productID;
newRow["FMaterialNumber"] = dr["FMaterialNumber"] == null ? "" : dr["FMaterialNumber"].ToString();
newRow["FSENDPRICE"] = dr["FSENDPRICE"] == null ? 0.0 : Convert.ToDouble(dr["FSENDPRICE"]);
data.Rows.Add(newRow);
}
}
}
}
catch (Exception e)
{
string errormessage = e.Message;
}
}
大批量插入数据
DBServiceHelper.BulkInserts(this.Context, string.Empty, string.Empty, data);
推荐阅读