提交 e12113f9 authored 作者: 谭富强's avatar 谭富强

添加获取标准报表数据插入到Detailreports表

上级 ec481330
......@@ -281,7 +281,15 @@ namespace LQKJ.K3.CZXT.Pluglus
receBillTableS.Columns.Add("FSTOCKOUTQTY", typeof(decimal));//出库数量
receBillTableS.Columns.Add("FSTOCKJCQTY", typeof(decimal));//结存数量
receBillTableS.BeginInit();
string tmpRpt1 = "";
DataTable dataTable = GetReportData(Context, "STK_StockDetailRpt", "STK_StockDetailFilter", schemeId, F_LQKJ_OrgId, F_LQKJ_StartDate, F_LQKJ_EndDate, 0);
IMoveReport moveReport = GetReportLSData(Context, "STK_StockDetailRpt", "STK_StockDetailFilter", schemeId, F_LQKJ_OrgId, F_LQKJ_StartDate, F_LQKJ_EndDate, 0);
if (moveReport.DataSource != null)
{
tmpRpt1 = moveReport.DataSource.TableName;
}
// 创建一个HashSet来存储唯一的记录标识符,用于判断重复项
HashSet<string> existingRecords = new HashSet<string>();
int sequenceNumber = 1; // 序号从1开始,或者根据你的需求设置
......@@ -1079,6 +1087,105 @@ UPDATE SET
return dt;
}
/// <summary>
/// 获取分页账表数据
/// </summary>
/// <param name="ctx"></param>
/// <param name="rptFormId">账表FormId</param>
/// <param name="rptFilterFormId">账表过滤方案FormId</param>
/// <param name="schemeId">过滤方案内码</param>
/// <param name="currentPosition">分页账表当前位置</param>
/// <returns></returns>
private IMoveReport GetReportLSData(Context ctx, string rptFormId, string rptFilterFormId, string schemeId, string F_LQKJ_OrgId, string F_LQKJ_StartDate,string F_LQKJ_EndDate, int currentPosition)
{
//删除物料收发明细表临时表
DBServiceHelper.DropTable(Context, new HashSet<string>() { tmpTableName });
string sql = "";
ISysReportService sysReporSservice = ServiceFactory.GetSysReportService(ctx);
var filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(ctx);//加载字段比较条件元数据。
var reportMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, rptFormId);//加载存货收发存汇总表元数据。标准成本 最新成本:采购订单最新不含税单价
var reportFilterMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, rptFilterFormId);//加载存货收发存汇总表过滤条件元数据。
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();
//过滤方案的主键值,可通过该SQL语句查询得到:SELECT * FROM T_BAS_FILTERSCHEME
var entity = model.Load(schemeId);
var dyn = DeserializeCustomFilter(reportFilterMetadata.BusinessInfo, entity.CustomFilterSetting);
model.DataObject = dyn;
var filter = model.GetFilterParameter();
DynamicObject filterObj = filter.CustomFilter;
filterObj["StockOrgId"] = F_LQKJ_OrgId;
if (!string.IsNullOrWhiteSpace(F_LQKJ_StartDate))
{
filterObj["BeginDate"] = Convert.ToDateTime(F_LQKJ_StartDate);
}
if (!string.IsNullOrWhiteSpace(F_LQKJ_EndDate))
{
filterObj["EndDate"] = Convert.ToDateTime(F_LQKJ_EndDate);
}
IRptParams rptParam = new RptParams();
rptParam.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id;
rptParam.CurrentPosition = currentPosition;//分页账表当前位置
rptParam.StartRow = 1;
rptParam.EndRow = int.MaxValue;//StartRow和EndRow是报表数据分页的起始行数和截至行数,一般取所有数据,所以EndRow取int最大值。
rptParam.FilterParameter = filter;
rptParam.FilterFieldInfo = model.FilterFieldInfo;
// var dic = new Dictionary<string, object>();
var openParameter = new Dictionary<string, object>();
var parameterDataFormId = reportMetadata.BusinessInfo.GetForm().ParameterObjectId;
var parameterDataMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, parameterDataFormId);
var parameterData = UserParamterServiceHelper.Load(ctx, parameterDataMetadata.BusinessInfo, ctx.UserId, rptFormId, KeyConst.USERPARAMETER_KEY);
foreach (var itemProp in parameterData.DynamicObjectType.Properties)
{
openParameter[itemProp.Name] = parameterData[itemProp.Name];
}
rptParam.CustomParams.Add(KeyConst.OPENPARAMETER_KEY, openParameter);
rptParam.ParameterData = parameterData;
MoveReportServiceParameter param = new MoveReportServiceParameter(ctx, reportMetadata.BusinessInfo, Guid.NewGuid().ToString(), rptParam);
using (DataTable dt = sysReporSservice.GetListAndReportData(param).DataSource)
{
if (dt == null || dt.Rows.Count == 0)
{
string SQLcj = @"/*dialect*/CREATE TABLE Detailreports (
FDate DATE, -- 日期
FSTOCKORGID INT, -- 库存组织ID
FSTOCKID INT, -- 库存ID
FMATERIALID INT, -- 物料ID
FSTOCKUNITID INT, -- 库存单位ID
FOWNERTYPENAME NVARCHAR(100), -- 所有者类型名称
FSTOCKQCQTY DECIMAL(18, 2), -- 库存合格数量
FSTOCKINQTY DECIMAL(18, 2), -- 入库数量
FSTOCKOUTQTY DECIMAL(18, 2), -- 出库数量
FSTOCKJCQTY DECIMAL(18, 2) -- 库存借出数量
);";
DBUtils.ExecuteDynamicObject(this.Context, SQLcj);
}
else
{
if (!checkTableIsExist(this.Context))
{
tmpTableName = createTmpTable(dt, this.Context);
}
else
{
dt.TableName = "Detailreports";
}
//向表插入数据
using (KDTransactionScope scope = new KDTransactionScope(TransactionScopeOption.Required))
{
DBUtils.BulkInserts(this.Context, dt);
scope.Complete();
}
}
}
return sysReporSservice.GetListAndReportData(param);
}
#region 新增表注释
//private void CreateTmpTable(string tmpTableName)
//{
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论