多分录下推插件模板,亮点:只需配置好参数,代码无需改动

多分录下推插件模板,金蝶云星空企业版

亮点:只需配置好参数,代码无需改动

using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
using System.Data;

namespace CQXR.DDL.K3.BOS.BusinessPlugIn.BillPlugIn
{
    [HotUpdate]
    [Description("xx模块--下推xxx,携带xxx,yyy")]
    public class XxxxYyyy : AbstractBillPlugIn
    {
        //上下游单据 参数
        private string ydbh = "F_QGXM_YDBH";//源单编号

        //分录表名
        private string[] tn = 
        { 
            "F_QGXM_Entity_8DBG",
            "F_QGXM_YZCS",
            "F_QGXM_8DBGCXZG"
        };
        //分录标识
        private string[] id = 
        { 
            "F_QGXM_Entity_8DBG_yrr",
            "F_QGXM_YZCS_tqn",
            "F_QGXM_8DBGCXZG_795"
        };
        // 变更分录 字段 标识 
        private string[,] field =
        {
            {"F_QGXM_Base_re5_h1g","F_QGXM_DHHM_zc5","F_QGXM_GW_imu","F_QGXM_Text_ca9_1xj"},
            {"F_QGXM_Text_795_c1c", "F_QGXM_Base_qku_vb1","F_QGXM_Date_fg2_emq","F_QGXM_Text_w5c_xwf"},
            {"F_QGXM_Text_795_vb1_qku","F_QGXM_Base_qku_c1c_9uj","F_QGXM_WCRQ_s58","F_QGXM_Text_yrr_bgx" }
        };
        // ORM实体名 字段 如果字段属性=基础资料 后面要加 _Id
        private string[,] orm =
        {
            { "F_QGXM_BASE_RE5","F_QGXM_DHHM","F_QGXM_GW","F_QGXM_TEXT_CA9" },
            { "F_QGXM_TEXT_795","F_QGXM_BASE_QKU","F_QGXM_DATE_FG2","F_QGXM_TEXT_W5C"},
            {"F_QGXM_TEXT_795","F_QGXM_BASE_QKU","F_QGXM_WCRQ","F_QGXM_TEXT_YRR" }
        };
        /// <summary>
        /// 获取SQL语句的字段拼接字串
        /// </summary>
        /// <param name="preword"></param>
        /// <param name="m"></param>
        /// <param name="orms"></param>
        /// <returns></returns>
        public string getFields(string preword, string[,] orms, int m)
        {
            string fields = "";
            for (int i = 0; i < orms.GetLength(1); i++)
            {
                fields += preword + orms[m,i];
                if (i < orms.GetLength(1) - 1)
                {
                    fields += ",";
                }
            }
            return fields;
        }
        /// <summary>
        /// 下推代码
        /// </summary>
        /// <param name="e"></param>
        public override void AfterBindData(EventArgs e)
        {
            base.AfterBindData(e);

            if (this.View.OpenParameter.Status.Equals(OperationStatus.ADDNEW))
            {
                string billno = Convert.ToString(this.View.Model.GetValue(ydbh));
                if (billno != "")
                {
                    for(int m = 0; m < tn.Length; m++)
                    {
                        //查询分录数据
                        var sql = $@"/*dialect*/
                        select {getFields("a.",orm, m)} 
                        from {tn[m]} a
                        inner join t_8dreport b on a.fid=b.fid
                        where b.fbillno='{billno}'";
                        DataTable ds = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
                        //string aid = id;//单据体标识
                        if (ds != null && ds.Rows.Count > 0)
                        {
                            this.View.Model.DeleteEntryData(id[m]);
                            //循环读取每一行数据
                            for (int i = 0; i < ds.Rows.Count; i++)
                            {
                                this.View.Model.CreateNewEntryRow(id[m]);
                                for(int n = 0; n < orm.GetLength(1); n++)
                                {
                                    //分录赋值
                                    this.View.Model.SetValue(field[m,n], ds.Rows[i][orm[m,n]].ToString(), i);
                                }
                            }
                        }
                        //刷新单据体
                        this.View.UpdateView(id[m]);
                    }
                }
            }
        }
    }
}

 

posted @ 2024-09-18 23:06  中国结  阅读(2)  评论(0编辑  收藏  举报