打印开发流程及规范

时间:2023-05-20 12:30:06 来源:网友投稿

下面是小编为大家整理的打印开发流程及规范,供大家参考。

打印开发流程及规范

打印开发流程及规范

步骤:

新建解决方案—>分析项目组、分析项目

新建报表(命名规则:实体名+Print)

建立数据源、数据查询信息,选择打印的实体,布局要打印的信息,包括表头、表体等信息。

执行打印预览,确定无误后,发布打印模型,按照向导建立打印发布路径,在根目录下的AM下建立相应的文件夹,确定发布路径(主要是注名实体Key,格式如:UFIDA.U9.Cust.TY.AM.Chop.ChopCarryScheme)建议用实体全名以保证唯一。此内容是对应打印参照的分类标识。

新建打印模型容器

创建打印参照。模型源数据管理—>连接到打印元数据库,选择发布的报表,创建打印参照。

导出打印参照元数据,将导出的数据将文件拷贝的 U9Data 视图特定位置:

ApplicationServer\Libs\SqlScript\ReportMetaData\Print

目录下

建立与UI 的关联。在UI界面的Action中的Extend的打印事件加入代码,如下所示:

  private void PrintClick_Extend(object sender, UIActionEventArgs e)

{

IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();

settings.PrintTemplateCatalogType = "UFIDA.U9.Cust.TY.AM.Chop.ChopCarryScheme";

settings.UserDataCallBack = new DataCallBackHandle(this.GetPrintData);

e.Tag = settings;

//调用模版定义的默认实现方法.如需扩展,请直接在此编程.

this.PrintClick_DefaultImpl(sender,e);

}

/// 打印模板产生

/// </summary>

/// <param name="tempalteID"></param>

/// <returns></returns>

public void GetPrintData(object sender, DataCallBackEventArgs args)

{

DataSet returnDataSet = null;

switch (args.PrintTemplateID)

{

//打印参照模版ID

case "ce4f2ccf-fb06-4aac-b416-fd6ef13197d1":

{

returnDataSet = this.GetOrderDocData();

}

break;

default:

break;

}

args.ReturnData = returnDataSet;

}

private DataSet GetOrderDocData()

{

DataSet returnDataSet = new DataSet();

DataTable tableTest = new DataTable();

tableTest.Columns.Add("ChopCarryScheme_SchemeNo");

tableTest.Columns.Add("ChopCarryScheme_SchemeDate");

tableTest.Columns.Add("ChopCarryScheme_ChopCarrySchemeLine_SchemeFactor");

tableTest.Columns.Add("ChopCarryScheme_ChopCarrySchemeLine_OrderBy");

tableTest.Columns.Add("ChopCarryScheme_ChopCarrySchemeLine_AscDes");

ChopCarrySchemeRecord header = this.CurrentModel.ChopCarryScheme.FocusedRecord;

#region 对枚举类型的处理 begin

GetEnumExtValueInfoProxy getEnumExtValueInfoProxy = new GetEnumExtValueInfoProxy();

getEnumExtValueInfoProxy.EnumFullName = "UFIDA.U9.Cust.TY.AM.Chop.ChopBE.ChopCarryScheme.SchemeFactorEnum";

List<EnumExtValueInfoDTOData> result = getEnumExtValueInfoProxy.Do();

getEnumExtValueInfoProxy.EnumFullName = "UFIDA.U9.Cust.TY.AM.Chop.ChopBE.ChopCarryScheme.AscDesEnum";

List<EnumExtValueInfoDTOData> result2 = getEnumExtValueInfoProxy.Do();

#endregion 对枚举类型的处理 end

foreach (ChopCarryScheme_ChopCarrySchemeLineRecord record in this.CurrentModel.ChopCarryScheme_ChopCarrySchemeLine.Records)

{

DataRow row = tableTest.NewRow();

row["ChopCarryScheme_SchemeNo"] = header["SchemeNo"];

row["ChopCarryScheme_SchemeDate"] = header["SchemeDate"];

row["ChopCarryScheme_ChopCarrySchemeLine_SchemeFactor"] = result[int.Parse(record["SchemeFactor"].ToString())].Name;

row["ChopCarryScheme_ChopCarrySchemeLine_OrderBy"] = record["OrderBy"];

row["ChopCarryScheme_ChopCarrySchemeLine_AscDes"] = result2[int.Parse(record["AscDes"].ToString())].Name;

tableTest.Rows.Add(row);

}

returnDataSet.Tables.Add(tableTest);

return returnDataSet;

}

注:执行该代码时要增加IExportSettings的引用UFSoft.UBF.ExportService;

GetEnumExtValueInfoProxy的引用 UFIDA.U9.Cust.TY.AM.CBO.PubBP.GetEnumExtBP.Proxy和 UFIDA.U9.Cust.TY.AM.CBO.PubBP.GetEnumExtBP;

UFIDA.UBF.MD.Business.ExtEnumType

internal partial class GetEnumExtValueInfoImpementStrategy : BaseStrategy

{

public GetEnumExtValueInfoImpementStrategy() { }

public override object Do(object obj)

{

GetEnumExtValueInfo bpObj = (GetEnumExtValueInfo)obj;

if (bpObj == null) return null;

ExtEnumType enumType = ExtEnumType.Finder.Find("Code=@Code", new OqlParam("Code", bpObj.EnumFullName));

if (enumType == null) return null;

List<EnumExtValueInfoDTO> enumValueDTOs = new List<EnumExtValueInfoDTO>();

EnumExtValueInfoDTO enumValueDTO = null;

foreach (ExtEnumValue enumValue in enumType.ExtEnumValues)

{

enumValueDTO = new EnumExtValueInfoDTO();

enumValueDTO.Code = enumValue.Code;

enumValueDTO.Name = enumValue.Name;

enumValueDTO.Value = enumValueDTO.Value;

enumValueDTOs.Add(enumValueDTO);

}

return enumValueDTOs;

}

}