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