Ejemplo n.º 1
0
        /// <summary>
        /// get entity of WmsLogistics as the logistics of this entryorder represented by _order.
        /// -or- return null if failed in method executation.
        /// </summary>
        /// <returns></returns>
        public virtual WmsLogistics GetLogistics(CWmsOrderBase <TOrderType, TMangoType, TWmsType, TSubOrderType, THandlerType> pOrder)
        {
            Product_PeiSong_ProductMain   deliveryOrder = null;
            CWmsSystemParam_LogisticsItem logistics     = null;
            WmsLogistics retObj = null;

            if (null == pOrder)
            {
                C_WMS.Data.Utility.MyLog.Instance.Warning("Failed in getting entity of WmsLogistics by {0}, pOrder[{1}] is null", typeof(TOrderType), pOrder);
                return(retObj);
            }

            // get entity of deliveryorder by id of entryorder.
            if (null == (deliveryOrder = Mango.MisModelFactory.GetMisEntity <Product_PeiSong_ProductMain>(pOrder.Id)))
            {
                C_WMS.Data.Utility.MyLog.Instance.Warning("Failed in getting entity of WmsLogistics by ID[{0}], CANNOT retrieve deliveryorder by {1}(typeof[{2}])", pOrder?.Id, pOrder, typeof(TOrderType));
            }
            else
            {
                // 根据主配送单中的‘配送人’判读使用第三方物流还是芒果物流
                if (null == (logistics = CWmsMisSystemParamCache.Cache.GetLogisticsByUserId(deliveryOrder.DeliveryUserId.Int().ToString())))
                {
                    retObj = new WmsLogistics(logistics.Code, logistics.Name);
                }
                else
                {
                    C_WMS.Data.Utility.MyLog.Instance.Warning("Failed in getting entity of WmsLogistics by {0}.ID[{1}], CANNOT retrieve cached logistics by [{2}].DeliveryUserId[{3}]. return default logistics.", typeof(TOrderType), pOrder?.Id, deliveryOrder, deliveryOrder.DeliveryUserId);
                    retObj = CWmsDataFactory.GetDefaultLogistic();
                }
            }
            return(retObj);
        } // WmsLogistics GetLogistics()