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(); 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 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; } } }