【U9客开总结】总结一下U9V60客开相关技术点.md
U9客开技术点总结文档
UBF
- 继承
- 组合
- 状态机
BE
- 重写单据类型属性
public override DocType DocType
{
get
{
return this.DocumentType;
}
}
- 设置默认值
/// <summary>
/// 设置默认值
/// </summary>
protected override void OnSetDefaultValue()
{
if (this.Org == null)
{
this.Org = UFIDA.U9.Base.Context.LoginOrg;
}
base.OnSetDefaultValue();
}
BP
- 查询代码包括在之内,引用 Runtime\UFSoft.UBF.AopFrame.dll
using (BPForEngine bp = new BPForEngine())
{
//...
}
防止报异常:
- 执行SQL语句的方法 添加引用 UFSoft.UBF.Util.DataAccess.dll、UFSoft.UBF.Sys.Database.dll
DataAccessor.RunSQL(DatabaseManager.GetCurrentConnection(),"sql", null);
- 实体查询 XXX.Finder.Find() 带参数
var nextControlPeriod = BudgetControlPeriod.Finder.Find("BudgetYear=@BudgetYear and BudgetControlScheme=@BudgetControlScheme and Num=@Num",
new List<OqlParam>()
{
new OqlParam("BudgetYear", controlPeriod.BudgetYear.ID),
new OqlParam("BudgetControlScheme", controlPeriod.BudgetControlScheme.ID),
new OqlParam("Num", controlPeriod.Num + 1),
}.ToArray());
- 数据会话
using (var session = Session.Open())
{
//...
//提交变更
session.Commit();
}
- 账簿上下文 引用 UFIDA.U9.UI.PDHelper.dll
PDContext.Current.PrimarySOBRef.CodeColumn;
- 组织上下文
PDContext.Current.OrgID;
添加行记录
XXX.Lines.AddNew();
UI
AfterCreateChildControls()
- 注册查找参照
PDFormMessage.ShowConfirmDialog(this.Page, "4540e880-7eb7-4eba-8da7-f1889b092af8", "580", "408", Title, wpFindID.ClientID, this.BtnFind, "");
- 设置默认行号
/// <summary>
/// 设置表格默认行号
/// </summary>
/// <param name="dataGrid"></param>
/// <param name="colName"></param>
public static void AfterCreateChildControls_SetDefaultDocLineNo(IUFDataGrid dataGrid, string colName = "DocLineNo")
{
//设置默认行号
GetProfileValueProxy bpObj = new GetProfileValueProxy();
bpObj.ProfileCode = "SysLineNo";
var pVTDOData = bpObj.Do();
//行GRID
//var colName = "DocLineNo";
((IAutoRowNo)dataGrid.Columns[colName]).Sequence = true;
((IAutoRowNo)dataGrid.Columns[colName]).SequenceStep = int.Parse(pVTDOData.ProfileValue);
((IAutoRowNo)dataGrid.Columns[colName]).SequenceStart = int.Parse(pVTDOData.ProfileValue);
//this.Model.MenuAuthority.PageStrategy.IsUsing = false;
((UFSoft.UBF.UI.WebControlAdapter.UFWebDataGridAdapter)dataGrid).PagingStrategy = GridPagingStrategy.View;
((UFSoft.UBF.UI.WebControlAdapter.UFWebDataGridAdapter)dataGrid).Paging = false;
}
- 删除提示
//设置“删除”时弹出的提示对话框
string message = "确定删除当前记录?";
PDFormMessage.ShowDelConfirmDialog(this.Page, message, "", this.BtnDelete);
AfterUIModelBinding()
- 设置按钮权限
- 设置弹性域
FlexFieldHelper.SetDescFlexField(this.DataGrid8, (this.DataGrid8.Columns.Count - 1));
- 设置行过滤条件
((IUFFldReferenceColumn)this.DataGrid8.Columns["ProductType"]).CustomInParams = BaseAction.Symbol_AddCustomFilter + "= ValueSetDef.Code= 'Z30'";
- 设置card权限
- 设置异步
- webpart里的AfterOnLoad() || OnLoadDefault()事件获取当然状态值,传给action的方法,aciton里调用BP
this.CurrentState["XXX"]
System.Web.HttpContext.Current.Session["XXX"]
- 页面跳转到指定ID
public void OnLoadDefault()
{
var detailPage = "26210e6c-1396-43b9-a5dd-c6f389950136";
if (System.Web.HttpContext.Current.Session[detailPage] != null)
{
var result = System.Web.HttpContext.Current.Session[detailPage].ToString();
System.Web.HttpContext.Current.Session[detailPage] = null;
long temp;
if (long.TryParse(result, out temp))
{
this.NavigateAction.MovePageAt(null, temp);
}
}
}
- 打开页面默认第一页 webpart
private void OnLoadData_Extend(object sender)
{
OnLoadData_DefaultImpl(sender);
var rec = this.Model.BudgetChange.FocusedRecord;
if (rec == null)
{
this.BtnFirstPage_Click(this, new EventArgs());
}
}
URL参数
- 设置
NaviteParamter param = new NaviteParamter();
param.NameValues.Add("PLSID", PLSID);
NavigateManager.ShowModelWebpart(this, "a540abf0-8696-4ea8-be56-2d898ac637ae", this.TaskId.ToString(), 520, 120, param);
- 获取 webpart里
this.NameValues["XXX"]
- 跳转到列表 action
private void ListClick_Extend(object sender, UIActionEventArgs e)
{
//List Click Code Demo...
//this.CurrentPart.NavigatePage("TestList", null);
//this.ListClick_DefaultImpl(sender,e) ;
string ListPageID = "100300e3-6d61-45b8-a5b0-22b4eb3aa866";
this.CurrentPart.NavigatePage(ListPageID, null);
//调用模版定义的默认实现方法.如需扩展,请直接在此编程.
this.ListClick_DefaultImpl(sender, e);
}
- 跳转到详情
string CardPageID = "26210e6c-1396-43b9-a5dd-c6f389950136";
private void OnGridRowDbClick_Extend(object sender, UIActionEventArgs e)
{
if (this.MainView.FocusedRecord != null && this.MainView.FocusedIndex != -2)
{
string DataID = GetMainID().ToString();
OnNavigatCard("Browse", DataID, CardPageID);
}
this.OnGridRowDbClick_DefaultImpl(sender,e);
}
private void OnNavigatCard(string type, string dataID, string formID)
{
string FormID = formID;
string DataID = dataID;
if (DataID == String.Empty && type == "Browse")
{
return;
}
else
{
System.Collections.Specialized.NameValueCollection nameValCol = new System.Collections.Specialized.NameValueCollection();
nameValCol.Add("PDPageStatus", type);
nameValCol.Add("ID", DataID);
nameValCol.Add("isFromList", "1");
this.CommonAction.CurrentPart.NavigatePage(FormID, nameValCol);
}
}
private long GetMainID()
{
if (this.MainView.FocusedRecord["ID"] != null)
{
var lineID = long.Parse(this.MainView.FocusedRecord["ID"].ToString());
//sql 查询 根据行id查询头id
using (BPForEngine bp = new BPForEngine())
{
//UFSoft.UBF.Sys.Database.dll
using (IDbConnection conn = UFSoft.UBF.Sys.Database.DatabaseManager.GetCurrentConnection())
{
//UFSoft.UBF.Util.DataAccess.dll
IDataReader reader = null;
UFSoft.UBF.Util.DataAccess.DataAccessor.RunSQL(conn,
@"
SELECT BudgetChange
--, *
FROM Cust_BudgetChangeLine
WHERE id = " + lineID, null, out reader);
while (reader.Read())
{
if (reader[0] != null)
{
long headID;
if (long.TryParse(reader[0].ToString(), out headID))
{
return headID;
}
}
}
}
}
return lineID;
}
return -1;
}
工作流审批
- 提交
private void BudgetOrganizationSubmit(List<DocDTO> docDTOs, ref string rtnResult)
{
List<string> rtnResults = new List<string>();
foreach (DocDTO dto in docDTOs)
{
var entity = BudgetOrganizationBE.BudgetOrganizationOrder.Finder.FindByID(dto.EntityID);
if (entity != null && entity.SysVersion == dto.SysVersion)
{
using (ISession session = Session.Open())
{
if (entity.DocType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.ComfirmWork ||
entity.DocType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.InTimeComfirm)//工作确认或即时确认
{
if (entity.Status == BudgetOrganizationBE.BudgetOrganizationOrderStatusEnum.Opened)
{
entity.Status = BudgetOrganizationBE.BudgetOrganizationOrderStatusEnum.Approving;
}
}
if (entity.DocType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.ApproveFlow)//审批流
{
if (entity.Status == BudgetOrganizationBE.BudgetOrganizationOrderStatusEnum.Opened)
{
entity.StateMachineInstance.Opened_SubmitEventDriven(new YY.U9.Cust.ZCLZ.BudgetOrganizationBE.SubmitEvent());
}
}
session.Commit();
rtnResults.Add(entity.DocNo);
}
}
else
{
throw new Exception("数据已被修改,请刷新后操作");
}
}
rtnResult = string.Join(",", rtnResults.ToArray());
}
- 审批
private void BudgetOrganizationApprove(List<DocDTO> docDTOs, ref string rtnResult)
{
List<string> rtnResults = new List<string>();
foreach (var dto in docDTOs)
{
var entity = BudgetOrganizationBE.BudgetOrganizationOrder.Finder.FindByID(dto.EntityID);
if (entity != null && entity.SysVersion == dto.SysVersion)
{
using (var session = Session.Open())
{
if (entity.DocType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.ComfirmWork ||
entity.DocType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.InTimeComfirm)//工作确认或即时确认
{
if (entity.Status == BudgetOrganizationBE.BudgetOrganizationOrderStatusEnum.Approving)
{
entity.Status = BudgetOrganizationBE.BudgetOrganizationOrderStatusEnum.Approved;
entity.ApprovedTime = DateTime.Now;
}
}
if (entity.DocType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.ApproveFlow)
{
entity.StateMachineInstance.Approving_ApprovedEventDriven(new BudgetOrganizationBE.ApproveEvent());
}
session.Commit();
SetBudgetOrganizationDefaultAmont(entity.ID);
rtnResults.Add(entity.DocNo);
}
}
else
{
throw new Exception("数据已被修改,请刷新后操作");
}
}
rtnResult = string.Join(",", rtnResults.ToArray());
}
- 弃审
private void BudgetOrganizationUnApprove(List<DocDTO> docDTOs, ref string rtnResult)
{
List<string> rtnResults = new List<string>();
foreach (DocDTO dto in docDTOs)
{
var entity = BudgetOrganizationBE.BudgetOrganizationOrder.Finder.FindByID(dto.EntityID);
if (entity != null && entity.SysVersion == dto.SysVersion)
{
using (ISession session = Session.Open())
{
if (entity.DocType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.ComfirmWork ||
entity.DocType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.InTimeComfirm)//工作确认或即时确认
{
if (entity.Status == BudgetOrganizationBE.BudgetOrganizationOrderStatusEnum.Approved)
{
entity.Status = BudgetOrganizationBE.BudgetOrganizationOrderStatusEnum.Opened;
}
}
if (entity.DocType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.ApproveFlow)//审批流
{
if (entity.Status == BudgetOrganizationBE.BudgetOrganizationOrderStatusEnum.Approved)
{
entity.StateMachineInstance.Approved_UnApprovedEventDriven(new UFIDA.U9.GeneralEvents.ApprovalResultEvent());
}
}
session.Commit();
rtnResults.Add(entity.DocNo);
}
}
else
{
throw new Exception("数据已被修改,请刷新后操作");
}
}
rtnResult = string.Join(",", rtnResults.ToArray());
}
插件
菜单发布
补丁打包
$ node
> x = 10
10
> var y = 10
undefined
> x + y
20
> console.log("Hello World")
Hello World
undefined
> console.log("www.runoob.com")
www.runoob.com
undefined