Exemple #1
0
        protected override void Execute(NativeActivityContext context)
        {
            #region .  Fill Header  .

            var eventHeader = new EventHeader
            {
                EventKindCode = EventKindCode.Get(context),
                OperationCode = BillOperationCode.Get(context),
                ProcessCode   = BPProcessCode.Get(context)
            };
            var startDate = StartDate.Get(context);
            eventHeader.StartTime = startDate.HasValue ? startDate.Value : DateTime.Now;
            eventHeader.EndTime   = EndDate.Get(context);
            eventHeader.MandantID = MandantId.Get <decimal?>(context);

            // авто-заполняемые поля
            eventHeader.Instance = context.WorkflowInstanceId.ToString();

            #endregion .  Fill Header  .

            #region .  Fill Params for Details  .

            var evDetail = new EventDetail();
            foreach (var parameter in Parameters)
            {
                var value = parameter.Value.Get(context);
                // пустые значение незачем передавать
                if (value == null)
                {
                    continue;
                }

                if (evDetail.ContainsProperty(parameter.Key))
                {
                    evDetail.SetProperty(parameter.Key, value);
                }
            }

            #endregion .  Fill Params for Details  .

            var eventHeaderMgr = IoC.Instance.Resolve <IEventHeaderManager>();
            var uw             = BeginTransactionActivity.GetUnitOfWork(context);
            if (uw != null)
            {
                eventHeaderMgr.SetUnitOfWork(uw);
            }
            eventHeaderMgr.RegEvent(ref eventHeader, evDetail);
            context.SetValue(Result, eventHeader);
        }
Exemple #2
0
        /// <summary>
        /// Поиск работы для сущности по коду операции.
        /// </summary>
        /// <param name="entity">имя сущности</param>
        /// <param name="key">код экземпляра сущности</param>
        /// <param name="operation">код операции</param>
        /// <param name="mode">режим получения объекта</param>
        /// <returns>работа</returns>
        public static Work GetWorkByEntity(string entity, object key, BillOperationCode operation, GetModeEnum mode = GetModeEnum.Full)
        {
            var filter =
                string.Format(
                    "workid in (select max(w2e.workid_r) from wmswork2entity w2e inner join wmswork w on w.workid = w2e.workid_r where w2e.work2entityentity = '{0}' and w2e.work2entitykey = '{1}' and w.operationcode_r = '{2}')",
                    entity, key, operation);

            using (var mgr = IoC.Instance.Resolve <IBaseManager <Work> >())
            {
                var works = mgr.GetFiltered(filter, mode).ToArray();
                if (works.Length > 0)
                {
                    return(works[0]);
                }
            }
            return(null);
        }