/// <summary>
        /// 计算
        /// </summary>
        /// <param name="time"></param>
        /// <param name="erpv"></param>
        /// <returns></returns>
        public SunMoonTime GetOrCreate(Time time, ErpItem erpv)
        {
            var key = BuildKey(time);

            if (!SunMoonTimeStorage.Contains(key))
            {
                lock (locker)
                {
                    if (!SunMoonTimeStorage.Contains(key))
                    {
                        SunMoonTime item = new SunMoonTime();
                        sunmoonPosition.GetPosition(time, erpv);
                        item.SunXyz  = sunmoonPosition.rSun;
                        item.MoonXyz = sunmoonPosition.rMoon;
                        item.Gmst    = sunmoonPosition.gmst;
                        //return key;

                        SunMoonTimeStorage.Add(key, item);
                    }
                }
            }
            var item2 = SunMoonTimeStorage.Get(key);

            return(item2);
        }