Example #1
0
        /// <summary>
        /// 更新Dict[709]中MapId1对应的行。若Dict【709】没有对应行则返回
        /// </summary>
        /// <param name="pMapClassId">接口类型</param>
        /// <param name="pEid">主单据Id</param>
        /// <param name="pUpdateOk">是否同步成功</param>
        /// <param name="pDel">是否删除</param>
        /// <param name="pfList">返回操作失败的实体列表,若失败则返回Count=0的列表实体</param>
        /// <param name="pWcfError">返回WCF操作结果</param>
        /// <param name="pMsg">返回错误描述</param>
        /// <returns>若成功则返回成功操作的行数;否则返回TError.Wcf_RunError</returns>
        static public int UpdateRowV_Order(TDict709_Value pMapClassId, string pEid, TDict285_Values pUpdateOk, TDict285_Values pDel
                                           , out List <Product_WMS_Interface> pfList, out int pWcfError, out string pMsg)
        {
            try
            {
                int rslt = 0;
                List <Product_WMS_Interface> eList = null;
                // 取出主单据Id所包含的所有子单据
                var order = CWms.CWmsDataFactory.GetCWmsOrder(Dict709ToMoc(pMapClassId), pEid);
                // 获取待更新的实体列表
                eList = GetVPwiEntities(pMapClassId, Dict709ToMoc(pMapClassId), order, pUpdateOk, pDel);
                // 更新
                rslt = UpdateRowV_Order(eList, out pfList, out pWcfError, out pMsg);

                return(rslt);
            }
            catch (Exception ex)
            {
                pfList    = new List <Product_WMS_Interface>(1);
                pWcfError = TError.WCF_RunError.Int();
                pMsg      = ex.Message;

                var ret = new ThirdResult <List <object> >("");
                if (null != ex.InnerException)
                {
                    ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message));
                }
                ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace));
                ret.End();
                return(TError.WCF_RunError.Int());
            }
        }
Example #2
0
        /// <summary>
        /// 更新Dict[709]中MapId1对应的行。若Dict【709】没有对应行则添加。
        /// 若成功则返回成功操作的行数;否则返回TError.Wcf_RunError
        /// </summary>
        /// <param name="pMapClassId">接口类型</param>
        /// <param name="pEid">主单据Id</param>
        /// <param name="pUpdateOk">是否同步成功</param>
        /// <param name="pDel">是否删除</param>
        /// <param name="pfList">返回操作失败的实体列表,若失败则返回Count=0的列表实体</param>
        /// <param name="pWcfError">返回WCF操作结果</param>
        /// <param name="pMsg">返回错误描述</param>
        /// <returns>若成功则返回成功操作的行数;否则返回TError.Wcf_RunError</returns>
        static public int UpdateRowVA_Order(TDict709_Value pMapClassId, string pEid, TDict285_Values pUpdateOk, TDict285_Values pDel
                                            , out List <Product_WMS_Interface> pfList, out int pWcfError, out string pMsg)
        {
            try
            {
                int rslt = 0;
                List <Product_WMS_Interface> eList = null;
                // 取出主单据Id所包含的所有子单据
                var order = CWms.CWmsDataFactory.GetCWmsOrder(Dict709ToMoc(pMapClassId), pEid);
                // 获取待更新的实体列表
                eList = GetVPwiEntities(pMapClassId, Dict709ToMoc(pMapClassId), order, pUpdateOk, pDel);
                // 更新
                rslt = UpdateRowVA_Order(eList, out pfList, out pWcfError, out pMsg);

                return(rslt);
            }
            catch (Exception ex)
            {
                pfList    = new List <Product_WMS_Interface>(1);
                pWcfError = TError.WCF_RunError.Int();
                pMsg      = ex.Message;

                C_WMS.Data.Utility.MyLog.Instance.Error(ex, "{0}发生异常", System.Reflection.MethodBase.GetCurrentMethod().Name);
                return(TError.WCF_RunError.Int());
            }
        }
Example #3
0
        } // WmsLogistics GetLogistics()

        protected int DlgtFunc_RunWCF <TEntity>(Mango.TWCFOperation pOperation, params object[] args)
        {
            int    err           = 0;
            string msg           = string.Empty;
            int    currentIndex  = args[0].Int();
            bool   addOnNotFound = bool.Parse(args[1].ToString());
            List <Product_WMS_Interface> pwiList = args[3] as List <Product_WMS_Interface>;
            string          orderId    = args[4].ToString();
            TDict285_Values isUpdateOK = (TDict285_Values)args[5];
            TDict285_Values isDel      = (TDict285_Values)args[6];
            var             acb_args   = new object[] {
                currentIndex,
                addOnNotFound,
                new DefDlgt_RunWCF <Product_WMS_Interface>(DlgtFunc_RunWCF <Product_WMS_Interface>),
                pwiList.ToList()
            };

            if (!addOnNotFound && TWCFOperation.EUpdate == pOperation)
            {
                err = Update709(orderId, pwiList[currentIndex].MapId2.Int().ToString(), isUpdateOK, isDel, out msg);// Dict709Handle.UpdateRow_Order(TDict709_Value.EEntryOrder, orderId, pwiList[currentIndex].MapId2.Int().ToString(), isUpdateOK, isDel, out msg);
            }
            else if (addOnNotFound && TWCFOperation.EUpdateA == pOperation)
            {
                err = UpdateA709(orderId, pwiList[currentIndex].MapId2.Int().ToString(), isUpdateOK, isDel, out msg); // Dict709Handle.UpdateRowA_Order(TDict709_Value.EEntryOrder, orderId, pwiList[currentIndex].MapId2.Int().ToString(), isUpdateOK, isDel, out msg);
            }
            else
            {
                throw new NotSupportedException("");
            }
            return(err);
        }
Example #4
0
        virtual protected int UpdateA709(string pEid, string pEsId, TDict285_Values pUpdateOk, TDict285_Values pDel, out string pMsg)
        {
            switch (OrderType)
            {
            case TCWmsOrderType.EEntryOrder:
                return(Dict709Handle.UpdateRowA(TDict709_Value.EEntryOrder, pEid, pEsId, pUpdateOk, pDel, out pMsg));

            case TCWmsOrderType.EStockoutOrder:
                return(Dict709Handle.UpdateRowA(TDict709_Value.EExwarehouseOrder, pEid, pEsId, pUpdateOk, pDel, out pMsg));

            case TCWmsOrderType.EReturnOrder:
                return(Dict709Handle.UpdateRowA(TDict709_Value.EReturnOrder, pEid, pEsId, pUpdateOk, pDel, out pMsg));

            default:
            {
                pMsg = string.Format("{0}.Update709(), unknown order type={1}", GetType(), OrderType);
                C_WMS.Data.Utility.MyLog.Instance.Warning(pMsg);
                return(TError.Post_NoChange.Int());
            }
            }
        }
Example #5
0
        /// <summary>
        /// 向Dict[709]中插入一行
        /// </summary>
        /// <param name="pEid">主单据Id</param>
        /// <param name="pMapClassId">接口类型</param>
        /// <param name="pEsId">子单据Id</param>
        /// <param name="pUpdateOk">是否同步成功</param>
        /// <param name="pDel">是否删除</param>
        /// <param name="pMsg">返回错误描述</param>
        /// <returns>返回操作成功的行数,若失败则返回TErrr.WCF_RunError</returns>
        static public int AddRow_Order(TDict709_Value pMapClassId, string pEid, string pEsId, TDict285_Values pUpdateOk, TDict285_Values pDel, out string pMsg)
        {
            try
            {
                #region Product_WMS_Interface entity = new Product_WMS_Interface();
                Product_WMS_Interface entity = new Product_WMS_Interface();
                entity.MapCalssID = pMapClassId.Int();
                entity.MapId1     = pEid.Int();
                entity.MapId2     = pEsId.Int();
                entity.IsUpdateOK = pUpdateOk.Int();
                entity.IsDel      = pDel.Int();
                entity.AddTime    = entity.LastTime = DateTime.Now;
                entity.AddUserid  = entity.UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid;
                entity.DisOrder   = Product_WMS_Interface_Properties.cIntDisorderDefault;
                #endregion
                return(AddRow_Order(entity, out pMsg));
            }
            catch (Exception ex)
            {
                pMsg = ex.Message;

                var ret = new ThirdResult <List <object> >("");
                if (null != ex.InnerException)
                {
                    ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message));
                }
                ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace));
                ret.End();
                return(TError.WCF_RunError.Int());
            }
        }
Example #6
0
        /// <summary>
        /// 更新Dict[709]中MapId1对应的行
        /// </summary>
        /// <param name="pMapClassId">接口类型</param>
        /// <param name="pEid">主单据Id</param>
        /// <param name="pEsId">子单据Id</param>
        /// <param name="pUpdateOk">是否同步成功</param>
        /// <param name="pDel">是否删除</param>
        /// <param name="pMsg">返回错误描述</param>
        /// <returns>若成功则返回成功操作的行数;否则返回TError.Wcf_RunError</returns>
        static public int UpdateRow_Order(TDict709_Value pMapClassId, string pEid, string pEsId, TDict285_Values pUpdateOk, TDict285_Values pDel, out string pMsg)
        {
            Product_WMS_Interface entity = new Product_WMS_Interface();

            entity.MapCalssID   = pMapClassId.Int();
            entity.MapId1       = pEid.Int();
            entity.MapId2       = pEsId.Int();
            entity.IsUpdateOK   = pUpdateOk.Int();
            entity.IsDel        = pDel.Int();
            entity.LastTime     = DateTime.Now;
            entity.UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid;
            entity.DisOrder     = Product_WMS_Interface_Properties.cIntDisorderDefault;

            int ret = UpdateRow_Order(entity, out pMsg);

            return(ret);
        }
Example #7
0
        /// <summary>
        /// 更新子出库订单的记录, 若没找到记录则新增一条
        /// </summary>
        /// <param name="pOrderId">主出库单Id</param>
        /// <param name="pUpdateOk">记录的更新状态,遵照Dict[285]</param>
        /// <param name="pDel">Dict[285]</param>
        /// <param name="pCount">返回成功更新的行数</param>
        /// <param name="pMsg">返回错误描述信息</param>
        /// <returns>若更新成功则返回操作的行数;其他错误返回TError.WCF_RunError</returns>
        static public int UpdateRow_StockoutCreate(string pOrderId, TDict285_Values pUpdateOk, TDict285_Values pDel, out int pCount, out string pMsg)
        {
            pCount = 0; pMsg = string.Empty;
            CWmsStockOrder        order     = null;
            Product_WMS_Interface tmpEntity = null;

            try
            {
                // get order instance
                if (null == (order = CWms.CWmsDataFactory.GetCWmsStockoutOrder(pOrderId)))
                {
                    return(TError.WCF_RunError.Int());
                }

                #region prepare updated rows
                foreach (var subOrder in order.SubOrders)
                {
                    // 根据主单据Id和子单据Id找到行
                    var filter = new List <CommonFilterModel>()
                    {
                    };                                              // query filter
                    filter.Add(new CommonFilterModel(Product_WMS_Interface_Properties.PropName_MapId1, "=", order.GetId()));
                    filter.Add(new CommonFilterModel(Product_WMS_Interface_Properties.PropName_MapId2, "=", subOrder.Value.GetId()));
                    var wcfPWI = WCF <Product_WMS_Interface> .QueryAll(filter); // query,只取第一页第一条(同一个子单据不应该有2条数据)

                    if (null == wcfPWI || null == wcfPWI.Data)
                    {
                        pCount = TError.WCF_RunError.Int(); pMsg = "WCF返回null异常";
                        break;
                    } // TODO: 系统异常
                    else if (0 >= wcfPWI.RetInt)
                    {
                        tmpEntity = new Product_WMS_Interface();
                    }                                                                         // 没有找到
                    else
                    {
                        tmpEntity = wcfPWI.Data[0];
                    }                                    // 找到了一条

                    #region 实例赋值并更新
                    tmpEntity.MapCalssID   = TDict709_Value.EExwarehouseOrder.Int();
                    tmpEntity.MapId1       = (order.MangoOrder as MangoStockouOrder).ProductOutputMainId;
                    tmpEntity.MapId2       = (subOrder.Value.MangoOrder as MangoSubStockoutOrder).ProductOutputId;
                    tmpEntity.IsUpdateOK   = pUpdateOk.Int();
                    tmpEntity.IsDel        = pDel.Int();
                    tmpEntity.LastTime     = DateTime.Now;
                    tmpEntity.UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid;
                    var updateRslt = (0 >= wcfPWI.RetInt) ? WCF <Product_WMS_Interface> .Add(tmpEntity) : WCF <Product_WMS_Interface> .Update(tmpEntity);

                    if (null == updateRslt)
                    {
                        pCount = TError.WCF_RunError.Int(); pMsg = "WCF返回null异常"; break;
                    }                                                                                            // TODO: 系统异常
                    else
                    {
                        pCount++; pMsg = updateRslt.RETData;
                    }
                    #endregion
                }
                #endregion

                return(pCount);
            }
            catch (Exception ex)
            {
                var ret = new ThirdResult <List <object> >("");
                if (null != ex.InnerException)
                {
                    ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message));
                }
                ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace));
                ret.End();
                return(pCount = TError.WCF_RunError.Int());
            }
        }
Example #8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="pMapClassId"></param>
 /// <param name="pMapId1"></param>
 /// <param name="pMapId2"></param>
 /// <param name="pIsUpdateOk"></param>
 /// <param name="pIsDel"></param>
 /// <param name="wcfError"></param>
 /// <param name="pMsg"></param>
 /// <returns></returns>
 static public Product_WMS_Interface NewPwiEntity(TDict709_Value pMapClassId, string pMapId1, string pMapId2, TDict285_Values pIsUpdateOk, TDict285_Values pIsDel)
 {
     try
     {
         return(new Product_WMS_Interface()
         {
             MapCalssID = pMapClassId.Int(),
             MapId1 = pMapClassId.Int(),
             MapId2 = pMapClassId.Int(),
             IsUpdateOK = pIsUpdateOk.Int(),
             IsDel = pIsDel.Int(),
             WMS_InterfaceId = 0,
             AddTime = DateTime.Now,
             AddUserid = 0,
             LastTime = DateTime.Now,
             UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid,
             DisOrder = Product_WMS_Interface_Properties.cIntDisorderDefault
         });
     }
     catch (Exception ex)
     {
         C_WMS.Data.Utility.MyLog.Instance.Warning(ex, "{0}.{1}(pMapClassId={2}, pMapId1={3}, pMapId2={4}, pIsUpdateOk={5}, pIsDel={6})发生异常", MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, pMapClassId, pMapId1, pMapId2, pIsUpdateOk, pIsDel);
         return(null);
     }
 }
Example #9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="pMapClassId"></param>
 /// <param name="pMapId1"></param>
 /// <param name="pMapId2"></param>
 /// <param name="pUpdateOk"></param>
 /// <param name="pDel"></param>
 /// <param name="pMsg"></param>
 /// <returns></returns>
 static public int UpdateRowA(TDict709_Value pMapClassId, string pMapId1, string pMapId2, TDict285_Values pUpdateOk, TDict285_Values pDel, out string pMsg)
 {
     throw new NotFiniteNumberException();
 }
Example #10
0
        /// <summary>
        /// 根据单据类实体创建并返回Product_WMS_Interface实体
        /// </summary>
        /// <param name="pMapClassId">Dict[709].pMapClassId</param>
        /// <param name="pCate">单据类型</param>
        /// <param name="pOrder">单据实体</param>
        /// <param name="pUpdateOk">是否同步成功</param>
        /// <param name="pDel">是否删除</param>
        /// <returns>若成功则返回Product_WMS_Interface实体;否则返回null</returns>
        static protected List <Product_WMS_Interface> GetVPwiEntities(TDict709_Value pMapClassId, TCWmsOrderCategory pCate, CWmsOrderBase pOrder, TDict285_Values pUpdateOk, TDict285_Values pDel)
        {
            List <Product_WMS_Interface> eList = null;

            if (null == pOrder)
            {
                return(eList);
            }

            try
            {
                eList = new List <Product_WMS_Interface>(1);
                #region 遍历子单据,创建并添加Product_WMS_Interface实体
                foreach (var so in pOrder.SubOrders)
                {
                    Product_WMS_Interface entity = new Product_WMS_Interface();
                    entity.MapCalssID   = pMapClassId.Int();
                    entity.IsUpdateOK   = pUpdateOk.Int();
                    entity.IsDel        = pDel.Int();
                    entity.LastTime     = DateTime.Now;
                    entity.UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid;
                    entity.DisOrder     = Product_WMS_Interface_Properties.cIntDisorderDefault;
                    switch (pCate)
                    {
                    case TCWmsOrderCategory.EEntryOrder:
                    {
                        entity.MapId1    = (pOrder.MangoOrder as MangoEntryOrder).ProductInputMainId;
                        entity.MapId2    = (so.Value.MangoOrder as MangoSubEntryOrder).ProductInputId;
                        entity.AddTime   = (so.Value.MangoOrder as MangoSubEntryOrder).AddTime;
                        entity.AddUserid = (so.Value.MangoOrder as MangoSubEntryOrder).AddUserid;
                        eList.Add(entity);
                        break;
                    }

                    case TCWmsOrderCategory.EExwarehouseOrder:
                    {
                        entity.MapId1    = (pOrder.MangoOrder as MangoStockouOrder).ProductOutputMainId;
                        entity.MapId2    = (so.Value.MangoOrder as MangoSubStockoutOrder).ProductOutputId;
                        entity.AddTime   = (so.Value.MangoOrder as MangoSubStockoutOrder).AddTime;
                        entity.AddUserid = (so.Value.MangoOrder as MangoSubStockoutOrder).AddUserid;
                        eList.Add(entity);
                        break;
                    }

                    case TCWmsOrderCategory.EReturnOrder:
                    {
                        entity.MapId1    = (pOrder.MangoOrder as MangoReturnOrder).TuiHuoMainID;
                        entity.MapId2    = (so.Value.MangoOrder as MangoSubReturnOrder).ZiTuihuoID;
                        entity.AddTime   = (so.Value.MangoOrder as MangoSubReturnOrder).AddTime;
                        entity.AddUserid = (so.Value.MangoOrder as MangoSubReturnOrder).AddUserid;
                        eList.Add(entity);
                        break;
                    }

                    default: { break; }
                    }
                }
                #endregion

                return(eList);
            }
            catch (Exception ex)
            {
                var ret = new ThirdResult <List <object> >("");
                if (null != ex.InnerException)
                {
                    ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message));
                }
                ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace));
                ret.End();
                return(null);
            }
        }
Example #11
0
        /// <summary>
        /// 更新单据pMangoOrder在Dict709中对应的行的isUpdateOk和isDel. 当pAddOnNotFound为true时,如果Dict709中没有对应的行则插入新行;当pAddOnNotFound为false时,如果Dict709中没有对应的行则操作失败.
        /// 该方法返回WCF的执行结果或TError值
        /// </summary>
        /// <param name="pOrder">待更新的Mis实体对应的单据对象</param>
        /// <param name="pIsUpdateOk">Dict709.IsUpdateOK字段</param>
        /// <param name="pIsDel">Dict709.IsDel字段</param>
        /// <param name="pAddOnNotFound">当pAddOnNotFound为true时,如果Dict709中没有对应的行则插入新行;当pAddOnNotFound为false时,如果Dict709中没有对应的行则操作失败.</param>
        /// <returns></returns>
        virtual public int UpdateDict709(CWmsOrderBase <TOrderType, TMangoType, TWmsType, TSubOrderType, THandlerType> pOrder, TDict285_Values pIsUpdateOk, TDict285_Values pIsDel, bool pAddOnNotFound)
        {
            if (null != AreArray)
            {
                Array.Clear(AreArray, 0, AreArray.Length);
            }
            AreArray = pOrder.SubOrders.Select(x => new AutoResetEvent(false)).ToArray();

            var args = new object[]
            {
                0,                                                                                   // 0st
                pAddOnNotFound,                                                                      // 1st
                new DefDlgt_RunWCF <Product_WMS_Interface>(DlgtFunc_RunWCF <Product_WMS_Interface>), // 2nd
                MangoFactory.GetV_PwiList(pOrder.MapClassId, pOrder.Id, pOrder.SubOrders.Keys),      // 3rd
                pOrder.Id,                                                                           // 4th
                pIsUpdateOk,                                                                         // 5th
                pIsDel                                                                               // 6th
            };

            var dlgt = args[2] as DefDlgt_RunWCF <Product_WMS_Interface>;//  (DlgtFunc_RunWCF<Product_WMS_Interface>);

            dlgt.BeginInvoke((pAddOnNotFound) ? TWCFOperation.EUpdateA : TWCFOperation.EUpdate, args, Acb_RunWCF, args);
            WaitHandle.WaitAll(AreArray);
            return(-1);
        }
Example #12
0
 /// <summary>
 /// Update IsUpdateOK of row(s) in Dict709 according to result of transaction.
 /// return count of affected rows -or- -1/TError if failure.
 /// </summary>
 /// <param name="pMapClassId">MapClassId</param>
 /// <param name="pMapIds">a set of MapId1</param>
 /// <param name="pIsUpdateOK">value to be updated for IsUpdateOK</param>
 /// <param name="pIsDel">value to be updated for IsDel</param>
 /// <returns></returns>
 virtual protected int Update709(TDict709_Value pMapClassId, List <string> pMapIds, TDict285_Values pIsUpdateOK, TDict285_Values pIsDel)
 {
     throw new NotImplementedException(string.Format("{0}.Update709(TDict709_Value, List<string>, TDict285, TDict285), should be implemented with it's inherits.", GetType()));
 }