Files
GateDge2023_ljy/CY.SAL_OUTSTOCK/AutoPushLostOutStock2Pay.cs
PastSaid fe71b6365c 长园
2023-12-20 09:08:21 +08:00

100 lines
3.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Kingdee.BOS.Core.DynamicForm.PlugIn;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using Kingdee.BOS.Contracts;
using Kingdee.BOS;
using Kingdee.BOS.Core;
using System.ComponentModel;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.DynamicForm.Operation;
using Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs;
using Kingdee.BOS.Orm;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.BusinessFlow.ServiceArgs;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.App.Core.ScheduleService;
namespace CY.SAL_OUTSTOCK
{
[Description("自动下推"), HotUpdate]
public class AutoPushLostOutStock2Pay : IScheduleService
{
public void Run(Context ctx, Schedule schedule)
{
try
{
IConvertService service = Kingdee.BOS.App.ServiceHelper.GetService<IConvertService>();
string sourceFormId = "SAL_OUTSTOCK";
string targetFormId = "AR_RECEIVABLE";
//var rules = service.GetConvertRules(ctx, sourceFormId, targetFormId);
string convertRuleId = "AR_OutStockToReceivableMap"; //销售出库单下推应付单
var ruleMeta = service.GetConvertRule(ctx, convertRuleId);
var rule = ruleMeta.Rule;
var dbList = GetDBData(ctx);
if (dbList != null && dbList.Any())
{
var groupbyList = dbList.GroupBy(x => x["FBILLNO"]);
StringBuilder stringBuilder = new StringBuilder();
foreach (var list in groupbyList)
{
try
{
List<ListSelectedRow> selectedRows = list.Select(x => new ListSelectedRow(x["FID"].ToString(), x["FENTRYID"].ToString(), 0, sourceFormId)).ToList();
PushArgs pushArgs = new PushArgs(rule, selectedRows.ToArray());//下推入口参数
OperateOption option = OperateOption.Create();//选项参数
ConvertOperationResult result = service.Push(ctx, pushArgs, option);
}
catch (Exception ex)
{
stringBuilder.AppendLine($"单据:{list.Key}下推失败");
}
}
if (stringBuilder.IsNullOrEmpty())
throw new Exception(stringBuilder.ToString());
}
}
catch (Exception ex)
{
ScheduleMsgDal _msgDal = new ScheduleMsgDal();
ScheduleMsg msg = new ScheduleMsg();
msg.MsgDetail = ex.Message;
msg.HappenTime = DateTime.Now;
msg.MsgType = 5;// 1 成功 5异常
msg.ScheduleTypeId = schedule.ScheduleTypeId;
_msgDal.InsertScheduleMsg(ctx, msg);
}
}
private DynamicObjectCollection GetDBData(Context ctx)
{
var unSql = $@"
select * from V_NOT_RECEIVABLE_OUTSTOCK
";
var dbList = DBUtils.ExecuteDynamicObject(ctx, $"/*dialect*/{unSql}");
return dbList;
}
}
}