【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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章