zoukankan      html  css  js  c++  java
  • k3 cloud点击按钮单开单据

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Kingdee.BOS;
    using Kingdee.BOS.Core.Bill.PlugIn;
    using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
    using Kingdee.BOS.Orm.DataEntity;
    using Kingdee.BOS.Core.SqlBuilder;
    using Kingdee.BOS.Core.Metadata;
    using System.ComponentModel;
    using Kingdee.BOS.Core.Bill;

    namespace Quantities.BusinessPlugIn
    {
    [Description("工程量变更申请单和工程量调整单、直接成本调整单关联")]
    public class AplyFor : AbstractBillPlugIn
    {

    /// <summary>
    /// 初始化,对其他界面传来的参数进行处理,对控件某些属性进行处理
    /// 这里不宜对数据DataModel进行处理
    /// </summary>
    /// <param name="e"></param>
    public override void OnInitialize(InitializeEventArgs e)
    {

    }

    /// <summary>
    /// 新建单据加载数据完成之后,需要处理的功能
    /// </summary>
    /// <param name="e"></param>
    public override void AfterCreateNewData(EventArgs e)
    {

    }

    /// <summary>
    /// 修改,查看单据加载已有数据之后,需要处理的功能
    /// </summary>
    /// <param name="e"></param>
    public override void AfterLoadData(EventArgs e)
    {

    //获取工程量变更申请单单据内码
    long billFid = Convert.ToInt64(this.View.Model.GetPKValue());
    //获取工程量变更申请单单据编号
    string fbillno = Convert.ToString(this.View.Model.GetValue("FBILLNO"));
    //GetQueryDatas()获取直接成本调整单的变更申请单号和单据编码
    //获取单变更申请单等于当前单据编码的单据编码
    var adjustNo11 = GetQueryDatas().Where(s => Convert.ToString(s["FBGSQDH"]) == fbillno);
    try
    {
    string adjustNo = GetQueryDatas().Where(s => Convert.ToString(s["FBGSQDH"]) == fbillno).Select(s => s["FBILLNO"]).FirstOrDefault().ToString(); //.Select(s =>s["FBILLNO"]).FirstOrDefault().ToString();
    //获取工程量调整单对应的内码

    this.View.Model.SetValue("F_PAEZ_Text1", adjustNo);
    }
    catch
    {

    }
    try
    {

    string directNo = GetQueryCost().Where(s => Convert.ToString(s["FCOSTNO1"]) == fbillno).Select(s => s["FBILLNO"]).FirstOrDefault().ToString();

    this.View.Model.SetValue("F_PAEZ_Text", directNo);
    }
    catch
    {

    }


    //自动保存:非表单插件用
    //BusinessDataServiceHelper.Save()

    //调用自动保存:表单插件用
    this.View.InvokeFormOperation("save");

    }


    /// <summary>
    /// queryservice取数方案,通过业务对象来获取数据,推荐使用
    /// </summary>
    /// <returns></returns>
    public DynamicObjectCollection GetQueryDatas()
    {
    QueryBuilderParemeter paramCatalog = new QueryBuilderParemeter()
    {
    FormId = "PAEZ_YNCS_GCBGSQD",//取数的业务对象:工程量调整单
    FilterClauseWihtKey = "",//过滤条件,通过业务对象的字段Key拼装过滤条件
    //FBGSQDH:变更申请单号
    SelectItems = SelectorItemInfo.CreateItems("FBILLNO", "FBGSQDH", "FID"),//要筛选的字段【业务对象的字段Key】,可以多个,如果要取主键,使用主键名
    };

    DynamicObjectCollection dyDatas = Kingdee.BOS.ServiceHelper.QueryServiceHelper.GetDynamicObjectCollection(this.Context, paramCatalog);
    return dyDatas;
    }

    public DynamicObjectCollection GetQueryCost()
    {
    QueryBuilderParemeter paramCatalog = new QueryBuilderParemeter()
    {
    FormId = "PAEZ_YNCS_DirectCostAdjust",//取数的业务对象:直接成本调整单
    FilterClauseWihtKey = "",//过滤条件,通过业务对象的字段Key拼装过滤条件
    //FCOSTNO:直接成本调整单单号
    SelectItems = SelectorItemInfo.CreateItems("FBILLNO", "FCOSTNO1", "FID"),//要筛选的字段【业务对象的字段Key】,可以多个,如果要取主键,使用主键名
    };

    DynamicObjectCollection dyDatas = Kingdee.BOS.ServiceHelper.QueryServiceHelper.GetDynamicObjectCollection(this.Context, paramCatalog);
    return dyDatas;
    }

    public override void ButtonClick(ButtonClickEventArgs e)
    {
    base.ButtonClick(e);
    string fbillno = Convert.ToString(this.View.Model.GetValue("FBILLNO"));
    //工程量调整单对应的内码
    long adjustId = Convert.ToInt64(GetQueryDatas().Where(s => Convert.ToString(s["FBGSQDH"]) == fbillno).Select(s => s["FID"]).FirstOrDefault()); //.Select(s =>s["FBILLNO"]).FirstOrDefault().ToString();
    long directId = Convert.ToInt64(GetQueryCost().Where(s => Convert.ToString(s["FCOSTNO1"]) == fbillno).Select(s => s["FID"]).FirstOrDefault());
    switch (e.Key.ToUpperInvariant())
    {
    //case "SAVE": 表单定义的事件都可以在这里执行,需要通过事件的代码[大写]区分不同事件
    //break;
    case "F_PAEZ_BUTTON":
    BillShowParameter parameter = new BillShowParameter();
    parameter.Status = OperationStatus.EDIT;
    parameter.FormId = "PAEZ_YNCS_DirectCostAdjust";//直接成本调整单
    parameter.PKey = directId.ToString();
    parameter.OpenStyle.ShowType = Kingdee.BOS.Core.DynamicForm.ShowType.MainNewTabPage;//打开方式,到主界面一个新的页签
    //param.ParentPageId = this.View.PageId;//指定ParentPageId,可以实现打开的界面直接拿到父界面的数据 如this.View.ParentFormView.Model.DataObject
    this.View.ShowForm(parameter);
    break;
    case "F_PAEZ_BUTTONADJUST":
    BillShowParameter param = new BillShowParameter();
    param.Status = OperationStatus.EDIT;
    param.FormId = "PAEZ_YNCS_GCBGSQD";//工程量调整单
    param.PKey = adjustId.ToString();
    param.OpenStyle.ShowType = Kingdee.BOS.Core.DynamicForm.ShowType.MainNewTabPage;//打开方式,到主界面一个新的页签
    //param.ParentPageId = this.View.PageId;//指定ParentPageId,可以实现打开的界面直接拿到父界面的数据 如this.View.ParentFormView.Model.DataObject
    this.View.ShowForm(param);
    break;
    default:
    break;
    }
    }

    /// <summary>
    /// 数据加载之后,需要处理的功能,这里主要对界面样式进行处理,尽量不要对Datamodel进行处理
    /// </summary>
    /// <param name="e"></param>
    public override void AfterBindData(EventArgs e)
    {

    }

    /// <summary>
    /// 在根据编码检索数据之前调用;
    /// 通过重载本事件,可以设置必要的过滤条件,以限定检索范围;
    /// 还可以控制当前过滤是否启用组织隔离,数据状态隔离
    /// </summary>
    /// <param name="e"></param>
    public override void BeforeSetItemValueByNumber(BeforeSetItemValueByNumberArgs e)
    {
    switch (e.BaseDataField.Key.ToUpperInvariant())
    {
    //case "FXXX":通过字段的Key[大写]来区分不同的基础资料
    //e.Filter = "FXXX= AND fxxy=";过滤的字段使用对应基础资料的字段的Key,支持ksql语法
    //break;
    case "":
    break;
    default:
    break;
    }
    }

    /// <summary>
    /// 显示基础资料列表之前调用
    /// 通过重载本事件,可以设置必要的过滤条件,以限定检索范围;
    /// </summary>
    /// <param name="e"></param>
    public override void BeforeF7Select(BeforeF7SelectEventArgs e)
    {
    switch (e.FieldKey.ToUpperInvariant())
    {
    //case "FXXX":通过字段的Key[大写]来区分不同的基础资料
    // e.ListFilterParameter.Filter = "FXXX= AND fxxy=";过滤的字段使用对应基础资料的字段的Key,支持ksql语法
    //break;
    case "":
    break;
    default:
    break;
    }
    }

    /// <summary>
    /// 界面数据发生变化之前,需要处理的功能
    /// </summary>
    /// <param name="e"></param>
    public override void BeforeUpdateValue(BeforeUpdateValueEventArgs e)
    {
    switch (e.Key.ToUpperInvariant())
    {
    //case "FXXX":通过字段的Key[大写]来区分不同的控件的数据变化功能,如果要阻止该次变化,可以用e.Cancel = true;
    // e.Cancel = true;
    // break;
    case "":
    break;
    default:
    break;
    }
    }

    /// <summary>
    /// 界面数据发生变化之后,需要处理的功能
    /// </summary>
    /// <param name="e"></param>
    public override void DataChanged(DataChangedEventArgs e)
    {
    switch (e.Field.Key.ToUpperInvariant())
    {
    case "":
    break;
    default:
    break;
    }
    }

    /// <summary>
    /// 单据持有事件发生前需要完成的功能
    /// </summary>
    /// <param name="e"></param>
    public override void BeforeDoOperation(BeforeDoOperationEventArgs e)
    {
    switch (e.Operation.FormOperation.Operation.ToUpperInvariant())
    {
    //case "SAVE": 表单定义的事件都可以在这里执行,需要通过事件的代码[大写]区分不同事件
    //break;
    case "":
    break;
    default:
    break;
    }


    }

    /// <summary>
    /// 单据持有事件发生后需要完成的功能
    /// </summary>
    /// <param name="e"></param>
    public override void AfterDoOperation(AfterDoOperationEventArgs e)
    {
    switch (e.Operation.Operation.ToUpperInvariant())
    {
    //case "SAVE": 表单定义的事件都可以在这里执行,需要通过事件的代码[大写]区分不同事件
    //break;
    case "":
    break;
    default:
    break;
    }
    }


    }

    }

    //通过插件实现,在插件中捕获按钮点击事件,事件中通过代码打开一个单据,参考如下写法:
    //BillShowParameter parameter = new BillShowParameter();
    //parameter.Status=OperationStatus.EDIT;
    //parameter.FormId="你要打开单据的ID";

    //this.View.ShowFrom(parameter);


    //移动BOS开发技巧 -- 如何打开一个设计好的移动表单或者单据
    //在K/3 Cloud的移动BOS,我们可以看到在设计器中我们区分为移动表单核移动单据
    //下面我们就来看一下, 我们如何用代码打开他们, 我们以一个简单的场景为例:
    // 我们在当前页面的一个按钮点击的时候,打开另外一个页面(移动表单和移动单据列表)
    // 以下是打开移动表单的写法,如果要打开移动单据列表,只需要把 MobileShowParameter 换成 MobileListShowParameter即可
    // MobileShowParameter param = new MobileShowParameter(); param.FormId = "你想打开的formid";
    // //也可以添加自定义的参数
    // param.CustomParams.Add("key名", “value”);
    // //如果需要支持回调参考以下写法
    // param.SyncCallBackAction = false;
    // this.View.ShowForm(param, new Action<FormResult>((res) => {
    // this.View.Refresh(); //刷新当前页面
    // }));


    //打开一个新增页面:网址https://www.cnblogs.com/zfangfang/p/9983109.html
    //BillShowParameter parameter = new BillShowParameter();
    ////parameter.Status = OperationStatus.EDIT;
    //parameter.FormId = "PAEZ_YNCS_DirectCostAdjust";
    // parameter.OpenStyle.ShowType = Kingdee.BOS.Core.DynamicForm.ShowType.MainNewTabPage;//打开方式,到主界面一个新的页签
    // //param.ParentPageId = this.View.PageId;//指定ParentPageId,可以实现打开的界面直接拿到父界面的数据 如this.View.ParentFormView.Model.DataObject
    // this.View.ShowForm(parameter);


    //K3/Cloud 用插件打开一张已存在的单据
    //BillShowParameter billpara = new BillShowParameter();
    //billpara.FormId = "SAL_SaleOrder";//单据唯一标识
    ////修改状态打开
    //billpara.Status = OperationStatus.EDIT;
    ////打开已有的单据的内码
    //billpara.PKey = "100003";
    //this.View.ShowForm(billpara);

  • 相关阅读:
    pgspider sqlite mysql docker 镜像
    pgspider docker 镜像
    pgspider基于pg 的高性能数据可视化sql 集群引擎
    diesel rust orm 框架试用
    golang 条件编译
    Performance Profiling Zeebe
    bazel 学习一 简单java 项目运行
    一个好用node http keeplive agnet
    gox 简单灵活的golang 跨平台编译工具
    mailhog 作为smtp server mock工具
  • 原文地址:https://www.cnblogs.com/woshinige/p/14211479.html
Copyright © 2011-2022 走看看