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

【应用场景】
在执行计划中批量提交单据。
【案例演示】
新建执行计划,定时将一周内的未提交的采购订单进行提交,每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", "采购订
二开案例.执行计划.批量提交单据
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



