电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开案例.执行计划.批量提交单据

来源:金蝶云社区作者:金蝶2024-09-2314

二开案例.执行计划.批量提交单据

【应用场景】

在执行计划中批量提交单据。


【案例演示】

新建执行计划,定时将一周内的未提交的采购订单进行提交,每10分钟执行一次。



【实现步骤】

<1>编写执行计划,代码如下。


using Kingdee.BOS;

using Kingdee.BOS.App.Core;

using Kingdee.BOS.App.Data;

using Kingdee.BOS.Contracts;

using Kingdee.BOS.Core;

using Kingdee.BOS.Core.Metadata;

using Kingdee.BOS.Log;

using Newtonsoft.Json;

using System;

using System.Linq;


namespace Jac.XkDemo.BOS.App.PlugIn

{

    /// <summary>

    /// 【执行计划】批量提交单据

    /// </summary>

    public class BatchSubmitBillScheduleService : IScheduleService

    {

        /// <summary>

        /// 执行计划入口函数

        /// </summary>

        /// <param name="ctx"></param>

        /// <param name="schedule"></param>

        public void Run(Context ctx, Schedule schedule)

        {

            try

            {

                Logger.Info("JAC-SubmitBill", "批量提交单据开始。");

                Logger.Info("JAC-SubmitBill", "获取操作用户(提交人)信息。");

                var userName = "demo";

                var sql = string.Format("SELECT FUSERID FROM T_SEC_USER WHERE FNAME='{0}'", userName);

                var userId = DBUtils.ExecuteScalar(ctx, sql, 0);

                if (userId == 0)

                {

                    Logger.Error("JAC-SubmitBill", "用户不存在:" + userName, null);

                    return;

                }


                Logger.Info("JAC-SubmitBill", "上下文切换操作用户(提交人)。");

                ctx.UserId = userId;

                ctx.UserName = userName;

                Logger.Info("JAC-SubmitBill", "批量抓取一周内的待提交的采购订单。");

                sql = "/*dialect*/SELECT FID,FBillNo FROM dbo.T_PUR_POORDER WHERE FCREATEDATE>=CONVERT(VARCHAR(10),GETDATE()-7,120) AND FDOCUMENTSTATUS IN ('A','D')";

                var objs = DBUtils.ExecuteDynamicObject(ctx, sql);

                if (objs == null || objs.Count == 0)

                {

                    Logger.Info("JAC-SubmitBill", "批量抓取一周内的待提交的采购订单的数量为0,任务终止。");

                    return;

                }


                Logger.Info("JAC-SubmitBill", "待提交的采购订单:" + string.Join(",", objs.Select(o => string.Format("{0}({1})", o[1], o[0]))));

                var businessInfo = ((FormMetadata)new MetaDataService().Load(ctx, "PUR_PurchaseOrder")).BusinessInfo;

                var pkids = objs.Select(o => o[0]).ToArray();

                var result = new SubmitService().Submit(ctx, businessInfo, pkids, "Submit", null);

                if (result.IsSuccess)

                {

                    var log = "提交成功的单据:" + string.Join(",", result.SuccessDataEnity.Select(o => string.Format("{0}({1})", o["BillNo"], o[0])));

                    if (result.OperateResult != null && result.OperateResult.Count > 0)

                    {

                        log += "\r\n操作结果:" + string.Join(",", result.OperateResult.Select(o => o.Message));

                    }


                    Logger.Info("JAC-SubmitBill", "采购订

二开案例.执行计划.批量提交单据

【应用场景】在执行计划中批量提交单据。【案例演示】新建执行计划,定时将一周内的未提交的采购订单进行提交,每10分钟执行一次。【实现步...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信