Пример #1
0
        /// <summary>
        /// 同步订单
        /// </summary>
        /// <param name="entity"></param>
        public ProductOrderEntity SyncOrder()
        {
            var entity = new ProductOrderEntity();
            var rnd    = new Random();

            entity.OrderCode   = string.Format("TB{0}", rnd.Next(100000, 999999).ToString());
            entity.Status      = (short)ProductOrderStatusEnum.Ready;
            entity.ProductName = pruducttype[rnd.Next(1, 7) - 1];
            entity.Quantity    = rnd.Next(1, 10);
            entity.UnitPrice   = 1000;
            entity.TotalPrice  = entity.Quantity * entity.UnitPrice;

            var a = rnd.Next(1, 10) - 1;

            entity.CustomerName = customertype[a];
            entity.Address      = addresstype[a];

            entity.Mobile          = rnd.Next(100000, 999999).ToString();
            entity.Remark          = shoptype[rnd.Next(1, 6) - 1];
            entity.CreatedTime     = System.DateTime.Now;
            entity.LastUpdatedTime = System.DateTime.Now;

            using (var session = DbFactory.CreateSession())
            {
                var newEntry = session.GetRepository <ProductOrderEntity>().Insert(entity);
                session.SaveChanges();
                entity.ID = newEntry.ID;
            }
            return(entity);
        }
Пример #2
0
        /// <summary>
        /// 同步订单
        /// </summary>
        /// <param name="entity"></param>
        public ProductOrderEntity SyncOrder(IDbConnection conn, IDbTransaction trans)
        {
            var entity = new ProductOrderEntity();
            var rnd    = new Random();

            entity.OrderCode   = string.Format("TB{0}", rnd.Next(100000, 999999).ToString());
            entity.Status      = (short)ProductOrderStatusEnum.Ready;
            entity.ProductName = pruducttype[rnd.Next(1, 7) - 1];
            entity.Quantity    = rnd.Next(1, 10);
            entity.UnitPrice   = 1000;
            entity.TotalPrice  = entity.Quantity * entity.UnitPrice;

            var a = rnd.Next(1, 10) - 1;

            entity.CustomerName = customertype[a];
            entity.Address      = addresstype[a];

            entity.Mobile      = rnd.Next(100000, 999999).ToString();
            entity.Remark      = shoptype[rnd.Next(1, 6) - 1];
            entity.CreatedTime = System.DateTime.Now;

            QuickRepository.Insert <ProductOrderEntity>(conn, entity, trans);

            return(entity);
        }
Пример #3
0
        public long Add(ProductOrderEntity model)
        {
            var description = "添加产品订单";

            try
            {
                var sql          = @"INSERT INTO [dbo].[ProductOrder]([ProductUserId],[BuyDateTime],[ProductName],[Price],[Unit],[GP],[CreatedTime],[OrderType])
Values(@ProductUserId,@BuyDateTime,@ProductName,@Price,@Unit,@GP,@CreatedTime,@OrderType);select @@Identity;";
                var sqlParameter = new List <SqlParameter> {
                    new SqlParameter("@ProductUserId", SqlDbType.BigInt)
                    {
                        Value = model.ProductUserId
                    },
                    new SqlParameter("@BuyDateTime", SqlDbType.DateTime)
                    {
                        Value = model.BuyDateTime
                    },
                    new SqlParameter("@ProductName", SqlDbType.NVarChar)
                    {
                        Value = model.ProductName
                    },
                    new SqlParameter("@Price", SqlDbType.Decimal)
                    {
                        Value = model.Price
                    },
                    new SqlParameter("@Unit", SqlDbType.NVarChar)
                    {
                        Value = model.Unit
                    },
                    new SqlParameter("@GP", SqlDbType.NVarChar)
                    {
                        Value = model.GP
                    },
                    new SqlParameter("@CreatedTime", SqlDbType.DateTime)
                    {
                        Value = model.CreatedTime
                    },
                    new SqlParameter("@OrderType", SqlDbType.Int)
                    {
                        Value = (int)model.OrderType
                    },
                };
                RPoney.Log.LoggerManager.Debug(GetType().Name, $"{description}sql:{sql},参数:model{model.SerializeToJSON()}");
                return(DataBaseManager.MainDb().ExecuteScalar(sql, sqlParameter.ToArray()).CLong(0, false));
            }
            catch (Exception ex)
            {
                RPoney.Log.LoggerManager.Error(GetType().Name, $"{description}异常", ex);
                return(-1);
            }
        }
Пример #4
0
        /// <summary>
        /// 快递发货
        /// </summary>
        /// <param name="entity"></param>
        public WfAppResult Delivery(ProductOrderEntity entity)
        {
            var appResult = WfAppResult.Default();
            var wfas      = new WfAppInteropService();

            using (var session = DbFactory.CreateSession())
            {
                var transaction = session.DbContext.Database.BeginTransaction();
                try
                {
                    //流程运行
                    var actionParameterInternal = new ActionParameterInternal();
                    actionParameterInternal.MethodParameters = new object[] { "alexsenda" };

                    WfAppRunner.ActionMethodParameters = new Dictionary <string, ActionParameterInternal>();
                    WfAppRunner.ActionMethodParameters.Add("CallHello", actionParameterInternal);

                    var result = wfas.RunProcess(session, WfAppRunner, WfAppRunner.Conditions);
                    if (result.Status == WfExecutedStatus.Success)
                    {
                        //写步骤记录表
                        Write(session, WfAppRunner, "发货", entity.ID.ToString(), entity.OrderCode, "完成发货");

                        //业务数据处理部分,此处是简单示例...
                        short status = GetProductOrderStatusByActivityCode(WfAppRunner.ProcessGUID, WfAppRunner.Version,
                                                                           WfAppRunner.NextActivityPerformers.Keys.ElementAt <string>(0));
                        UpdateStatus(entity.ID, status, session);

                        transaction.Commit();
                        appResult = WfAppResult.Success();
                    }
                    else
                    {
                        transaction.Rollback();
                        appResult = WfAppResult.Error(result.Message);
                    }
                }
                catch (System.Exception ex)
                {
                    transaction.Rollback();
                    appResult = WfAppResult.Error(ex.Message);
                }
                finally
                {
                    session.Dispose();
                }
                return(appResult);
            }
        }
Пример #5
0
 public static Order Map(this ProductOrderEntity entity, IAdjustmentPersister adjustmentPersister)
 {
     return(new Order
     {
         Id = entity.id,
         ConfirmationCode = entity.confirmationCode,
         OwnerId = entity.ownerId,
         PurchaserId = entity.purchaserId,
         Time = entity.time,
         Price = entity.priceExclTax,
         AdjustedPrice = entity.priceInclTax,
         Currency = Currency.GetCurrency(entity.currency),
         Items = (from i in entity.ProductOrderItemEntities select i.Map()).ToList(),
         Adjustments = (from a in entity.ProductOrderAdjustmentEntities orderby a.rank select a.Map(adjustmentPersister)).ToList(),
     });
 }
        private ResponseResult PublishProductOrderCreateMessage(ProductOrderEntity entity)
        {
            var topic     = "Slickflow/ERP/OrderSystem/WorkflowService/ProductOrderSynced";
            var appRunner = new WfAppRunner();

            appRunner.MessageTopic    = topic;
            appRunner.AppName         = entity.ProductName;
            appRunner.AppInstanceID   = entity.ID.ToString();
            appRunner.AppInstanceCode = entity.OrderCode;

            //var mqService = new MessageQueueService();
            //await mqService.Publish(topic, JsonConvert.SerializeObject(appRunner));
            var httpclient = HttpClientHelper.CreateHelper("http://localhost/sfa2/api/MessageQueue/InvokeProcess");
            var result     = httpclient.Post(appRunner);

            return(result);
        }
Пример #7
0
        /// <summary>
        /// 称重
        /// </summary>
        /// <param name="entity"></param>
        public WfAppResult Weight(ProductOrderEntity entity)
        {
            var appResult = WfAppResult.Default();
            var wfas      = new WfAppInteropService();

            using (var session = DbFactory.CreateSession())
            {
                try
                {
                    //流程运行
                    session.BeginTrans();
                    var result = wfas.RunProcess(session, WfAppRunner, WfAppRunner.Conditions);
                    if (result.Status == WfExecutedStatus.Success)
                    {
                        //写步骤记录表
                        Write(session, WfAppRunner, "称重", entity.ID.ToString(), entity.OrderCode, "完成称重");

                        //业务数据处理部分,此处是简单示例...
                        short status = GetProductOrderStatusByActivityCode(WfAppRunner.ProcessGUID, WfAppRunner.Version,
                                                                           WfAppRunner.NextActivityPerformers.Keys.ElementAt <string>(0));
                        UpdateStatus(entity.ID, status, session);

                        session.Commit();
                        appResult = WfAppResult.Success();
                    }
                    else
                    {
                        session.Rollback();
                        appResult = WfAppResult.Error(result.Message);
                    }
                }
                catch (System.Exception ex)
                {
                    session.Rollback();
                    appResult = WfAppResult.Error(ex.Message);
                }
                finally
                {
                    session.Dispose();
                }
                return(appResult);
            }
        }
 public ResponseResult Update([FromBody] ProductOrderEntity entity)
 {
     return(Update <ProductOrderEntity>(entity));
 }
 public ResponseResult <dynamic> Insert([FromBody] ProductOrderEntity entity)
 {
     return(Insert <ProductOrderEntity>(entity));
 }
Пример #10
0
        /// <summary>
        /// 派单
        /// </summary>
        /// <param name="entity"></param>
        public WfAppResult Dispatch(ProductOrderEntity entity)
        {
            //启动流程
            var appResult = WfAppResult.Default();
            var wfas      = new WfAppInteropService();

            try
            {
                //判断流程有没有已经启动
                var isRunning = wfas.CheckProcessInstanceRunning(WfAppRunner);
                if (isRunning == false)
                {
                    var startedResult = wfas.StartProcess(WfAppRunner);
                    if (startedResult.Status != WfExecutedStatus.Success)
                    {
                        appResult = WfAppResult.Error(startedResult.Message);
                        return(appResult);
                    }
                }
            }
            catch (System.Exception ex)
            {
                appResult = WfAppResult.Error(ex.Message);
                return(appResult);
            }

            //运行流程部分
            //继续下一步运行
            using (var session = DbFactory.CreateSession())
            {
                try
                {
                    //运行流程
                    session.BeginTrans();
                    var runResult = wfas.RunProcess(session, WfAppRunner, WfAppRunner.Conditions);
                    if (runResult.Status == WfExecutedStatus.Success)
                    {
                        //写步骤记录表
                        Write(session, WfAppRunner, "派单", entity.ID.ToString(), entity.OrderCode, "完成派单");

                        //业务数据处理部分,此处是简单示例...
                        short status = GetProductOrderStatusByActivityCode(WfAppRunner.ProcessGUID, WfAppRunner.Version,
                                                                           WfAppRunner.NextActivityPerformers.Keys.ElementAt <string>(0));
                        UpdateStatus(entity.ID, status, session);

                        session.Commit();
                        appResult = WfAppResult.Success();
                    }
                    else
                    {
                        session.Rollback();
                        appResult = WfAppResult.Error(runResult.Message);
                    }
                }
                catch (System.Exception ex)
                {
                    session.Rollback();
                    appResult = WfAppResult.Error(ex.Message);
                }
                finally
                {
                    session.Dispose();
                }
                return(appResult);
            }
        }
Пример #11
0
        /// <summary>
        /// 打样
        /// </summary>
        /// <param name="entity"></param>
        public WfAppResult Sample(ProductOrderEntity entity)
        {
            var appResult = WfAppResult.Default();
            var wfas      = new WfAppInteropService();
            var session   = SessionFactory.CreateSession();

            try
            {
                session.BeginTrans();

                //流程运行
                var result = wfas.RunProcess(session, WfAppRunner, WfAppRunner.Conditions);
                if (result.Status == WfExecutedStatus.Success)
                {
                    //写步骤记录表
                    Write(session, WfAppRunner, "打样", entity.ID.ToString(), entity.OrderCode, "完成打样");

                    //业务数据处理部分,此处是简单示例...
                    short status = GetProductOrderStatusByActivityCode(WfAppRunner.ProcessGUID, WfAppRunner.Version,
                                                                       WfAppRunner.NextActivityPerformers.Keys.ElementAt <string>(0));
                    UpdateStatus(entity.ID, status, session);

                    session.Commit();
                    appResult = WfAppResult.Success();

                    try
                    {
                        //调用工厂作业流程节点:
                        //流程节点:OrderFactoryMessageCaught
                        //流程ProcessGUID:0f5829c7-17df-43eb-bfe5-1f2870fb2a0e Version:1
                        var invokeAppRunner = new WfAppRunner();
                        invokeAppRunner.UserID          = WfAppRunner.UserID;
                        invokeAppRunner.UserName        = WfAppRunner.UserName;
                        invokeAppRunner.ProcessGUID     = "0f5829c7-17df-43eb-bfe5-1f2870fb2a0e";
                        invokeAppRunner.Version         = "1";
                        invokeAppRunner.AppName         = WfAppRunner.AppName;
                        invokeAppRunner.AppInstanceID   = WfAppRunner.AppInstanceID;
                        invokeAppRunner.AppInstanceCode = WfAppRunner.AppInstanceCode;
                        invokeAppRunner.DynamicVariables["ActivityCode"] = "OrderFactoryMessageCaught";

                        var httpClient   = HttpClientHelper.CreateHelper("http://localhost/sfsweb2/api/wfservice/invokejob");
                        var invokeResult = httpClient.Post(invokeAppRunner);
                    }
                    catch (System.Exception ex)
                    {
                        //记录异常日志
                        ;
                    }
                }
                else
                {
                    session.Rollback();
                    appResult = WfAppResult.Error(result.Message);
                }
            }
            catch (System.Exception ex)
            {
                session.Rollback();
                appResult = WfAppResult.Error(ex.Message);
            }
            finally
            {
                session.Dispose();
            }
            return(appResult);
        }
Пример #12
0
 public long Add(ProductOrderEntity model)
 {
     return(_productOrderDal.Value.Add(model));
 }