/// <summary>
        /// 是否包含订单头下一步状态
        /// </summary>
        /// <param name="currentState">当前状态</param>
        /// <param name="nextState">下一状态</param>
        /// <returns></returns>
        public static bool ContainNextOrderFormState(EnumOrderFormState currentState, EnumOrderFormState nextState)
        {
            List<EnumOrderFormState> allNextStateList = CanUseNextStepOrderFormStateList(currentState);

            // 输入的下一步是否在可操作的步骤内
            return (allNextStateList.Exists(n => n == nextState));
        }
Exemple #2
0
        /// <summary>
        /// 是否包含订单头下一步状态
        /// </summary>
        /// <param name="currentState">当前状态</param>
        /// <param name="nextState">下一状态</param>
        /// <returns></returns>
        public static bool ContainNextOrderFormState(EnumOrderFormState currentState, EnumOrderFormState nextState)
        {
            List <EnumOrderFormState> allNextStateList = CanUseNextStepOrderFormStateList(currentState);

            // 输入的下一步是否在可操作的步骤内
            return(allNextStateList.Exists(n => n == nextState));
        }
        /// <summary>
        /// 下一步骤可使用的订单头状态
        /// </summary>
        /// <param name="currentState"></param>
        /// <returns></returns>
        public static List<EnumOrderFormState> CanUseNextStepOrderFormStateList(EnumOrderFormState currentState)
        {
            List<EnumOrderFormState> allNextStateList = new List<EnumOrderFormState>();

            switch (currentState)
            {
                case EnumOrderFormState.VHSTS_New:
                case EnumOrderFormState.VHSTS_Submit:
                    allNextStateList.Add(EnumOrderFormState.VHSTS_Ready);
                    allNextStateList.Add(EnumOrderFormState.VHSTS_Submit);
                    break;

                case EnumOrderFormState.VHSTS_Ready:
                    allNextStateList.Add(EnumOrderFormState.VHSTS_Closed);
                    allNextStateList.Add(EnumOrderFormState.VHSTS_Completed);
                    allNextStateList.Add(EnumOrderFormState.VHSTS_Cancel);
                    break;

                case EnumOrderFormState.VHSTS_Cancel:
                case EnumOrderFormState.VHSTS_Completed:
                    allNextStateList.Add(EnumOrderFormState.VHSTS_Closed);
                    break;
                case EnumOrderFormState.VHSTS_Closed:
                    // 没有下一步
                    break;

                default:
                    throw new Exception("未知状态" + currentState.ToString());
            }

            return allNextStateList;
        }
Exemple #4
0
        /// <summary>
        /// 下一步骤可使用的订单头状态
        /// </summary>
        /// <param name="currentState"></param>
        /// <returns></returns>
        public static List <EnumOrderFormState> CanUseNextStepOrderFormStateList(EnumOrderFormState currentState)
        {
            List <EnumOrderFormState> allNextStateList = new List <EnumOrderFormState>();

            switch (currentState)
            {
            case EnumOrderFormState.VHSTS_New:
            case EnumOrderFormState.VHSTS_Submit:
                allNextStateList.Add(EnumOrderFormState.VHSTS_Ready);
                allNextStateList.Add(EnumOrderFormState.VHSTS_Submit);
                break;

            case EnumOrderFormState.VHSTS_Ready:
                allNextStateList.Add(EnumOrderFormState.VHSTS_Closed);
                allNextStateList.Add(EnumOrderFormState.VHSTS_Completed);
                allNextStateList.Add(EnumOrderFormState.VHSTS_Cancel);
                break;

            case EnumOrderFormState.VHSTS_Cancel:
            case EnumOrderFormState.VHSTS_Completed:
                allNextStateList.Add(EnumOrderFormState.VHSTS_Closed);
                break;

            case EnumOrderFormState.VHSTS_Closed:
                // 没有下一步
                break;

            default:
                throw new Exception("未知状态" + currentState.ToString());
            }

            return(allNextStateList);
        }
Exemple #5
0
        /// <summary>
        /// 根据单据头的状态得到可用于更新单据行的状态
        /// </summary>
        /// <param name="currentState">当前状态</param>
        /// <returns></returns>
        public static EnumOrderDataState GetOrderDataStateByOrderFormState(EnumOrderFormState currentState)
        {
            // 默认为无需状态更新的值
            EnumOrderDataState state = EnumOrderDataState.None;

            switch (currentState)
            {
            case EnumOrderFormState.VHSTS_New:
                state = EnumOrderDataState.VLSTS_New;
                break;

            case EnumOrderFormState.VHSTS_Submit:
            case EnumOrderFormState.VHSTS_Ready:
                state = EnumOrderDataState.VLSTS_Ready;
                break;

            case EnumOrderFormState.VHSTS_Cancel:
            case EnumOrderFormState.VHSTS_Completed:
            case EnumOrderFormState.VHSTS_Closed:
                // 无需状态更新,保持原状态
                break;

            default:
                throw new Exception("未知状态" + currentState.ToString());
            }

            return(state);
        }
        public ActionResult OrderChangeState(long id, EnumOrderFormState state)
        {
            ExtResult ret = new ExtResult();

            try
            {
                var userid = CurrentUser.GetCurrentUser().UserInfo.YHID;
                dalorderform.UpdateOrder(id, userid, state);
                ret.success = true;
            }
            catch (Exception ex)
            {
                ret.success = false;
                ret.msg     = ex.Message;
            }

            return(this.JsonFormat(ret));
            //var dat (dalorderform.GetEntity(id))
        }
Exemple #7
0
        public void UpdateOrder(long id, string userid, EnumOrderFormState nextState)
        {
            var ent = GetEntity(id);

            var currentState = JsMiracle.Framework.FunctionHelp.GetEnum <EnumOrderFormState>(ent.DJZT);

            if (!OrderStateWorkFlow.ContainNextOrderFormState(currentState, nextState))
            {
                throw new JsMiracleException(string.Format("当前状态:{0},下一状态不得是:{1}", currentState, nextState));
            }

            ent.DJZT = (int)nextState;

            var orderDataState = OrderStateWorkFlow.GetOrderDataStateByOrderFormState(nextState);

            var orderDataList = this.DbContext.IMS_VC_DJH_S.Where(n => n.DJBH == ent.DJBH);

            if (orderDataList != null && orderDataState != EnumOrderDataState.None)
            {
                foreach (var data in orderDataList)
                {
                    data.ZT = (int)orderDataState;
                }
            }


            using (var tran = this.DbContext.Database.BeginTransaction())
            {
                try
                {
                    DbContext.SaveChanges();
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    throw new Exception("更新单据状态失败", ex);
                }
            }
        }
        /// <summary>
        /// 根据单据头的状态得到可用于更新单据行的状态
        /// </summary>
        /// <param name="currentState">当前状态</param>
        /// <returns></returns>
        public static EnumOrderDataState GetOrderDataStateByOrderFormState(EnumOrderFormState currentState)
        {
            // 默认为无需状态更新的值 
            EnumOrderDataState state = EnumOrderDataState.None;

            switch (currentState)
            {
                case EnumOrderFormState.VHSTS_New:
                    state = EnumOrderDataState.VLSTS_New;
                    break;

                case EnumOrderFormState.VHSTS_Submit:
                case EnumOrderFormState.VHSTS_Ready:
                    state = EnumOrderDataState.VLSTS_Ready;
                    break;

                case EnumOrderFormState.VHSTS_Cancel:
                case EnumOrderFormState.VHSTS_Completed:
                case EnumOrderFormState.VHSTS_Closed:
                    // 无需状态更新,保持原状态
                    break;

                default:
                    throw new Exception("未知状态" + currentState.ToString());
            }

            return state;
        }
Exemple #9
0
 public void UpdateOrder(long id, string userid, EnumOrderFormState nextState)
 {
     base.RequestAction <object[]>("UpdateOrder", new object[] { id, userid, nextState });
 }
        public ActionResult OrderChangeState(long id, EnumOrderFormState state)
        {
            ExtResult ret = new ExtResult();

            try
            {
                var userid = CurrentUser.GetCurrentUser().UserInfo.YHID;
                dalorderform.UpdateOrder(id,userid, state);
                ret.success = true;
            }
            catch (Exception ex)
            {
                ret.success = false;
                ret.msg = ex.Message;
            }

            return this.JsonFormat(ret);
            //var dat (dalorderform.GetEntity(id))
        }