Exemple #1
0
        /// <summary>
        /// Проверка статуса на обновление
        /// </summary>
        /// <param name="msgCounter">Счетчик сообщений</param>
        /// <param name="bolId">Номер накладной</param>
        /// <param name="bolPosNumId">Позиция в накладной</param>
        /// <returns></returns>
        private bool IsUpdate(int msgCounter, string bolId, int bolPosNumId)
        {
            int status = -2;

            bolPosNumId = -1;
            try
            {
                JoinedModel             joint = new JoinedModel();
                OracleDynamicParameters odp   = new OracleDynamicParameters();
                string str = "SELECT STATUS FROM EXT_BOL_HEADER WHERE BOL_ID = :BOL_ID ";
                odp.Add("BOL_ID", bolId);
                using (OracleConnection connection = BaseRepo.GetDBConnection())
                {
                    status = connection.QueryFirstOrDefault <int>(str, odp);
                }
                if (status != -2)
                {
                    if (status == 1)
                    {
                        OracleDynamicParameters odp1 = new OracleDynamicParameters();
                        str = "SELECT count(pp.POS_NUM_ID) as cnt, bp.POS_NUM_ID " +
                              "FROM EXT_BOL_POSITION bp " +
                              "join L4_L3_DELIVERY ld on bp.BOL_ID = ld.BOL_ID AND bp.POS_ID = ld.BOL_POSITION_ID " +
                              "left join EXT_BOL_POSITION_PIECE pp on pp.POS_NUM_ID = bp.POS_NUM_ID " +
                              "WHERE ld.MSG_COUNTER = :MSG_COUNTER " +
                              "AND pp.POS_NUM_ID is null " +
                              "group by bp.POS_NUM_ID";
                        odp1.Add("MSG_COUNTER", msgCounter);
                        using (OracleConnection connection = GetConnection())
                        {
                            joint = connection.QueryFirstOrDefault <JoinedModel>(str, odp);
                        }
                        if (joint != null)
                        {
                            bolPosNumId = joint.posNumId;
                            if (joint.count <= 0)
                            {
                                return(true);
                            }
                        }
                    }
                }
                return(false);
            }
            catch { return(false); }
        }
        /// <summary>
        /// 获取微信发现页面数据
        /// </summary>
        /// <param name="workUser"></param>
        /// <returns></returns>
        public ReturnValueModel WxDisMainPage(WorkUser workUser)
        {
            System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
            stopwatch.Start();//监视代码运行时间
            ReturnValueModel rvm = new ReturnValueModel();

            //LoggerHelper.WarnInTimeTest("***********************");
            //LoggerHelper.WarnInTimeTest("Inner-[WxDisMainPage] Start:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff"));
            //LoggerHelper.WriteLogInfo("****************[WxDisMainPage]获取微信发现页面数据 开始**********************");

            WxUserModel wxUser = null;

            //LoggerHelper.WriteLogInfo("[WxDisMainPage] workUser.WxUser.UnionId:" + (workUser?.WxUser?.UnionId ?? "空的!!!"));
            if (!string.IsNullOrEmpty(workUser?.WxUser?.UnionId))
            {
                wxUser = _rep.FirstOrDefault <WxUserModel>(s => s.IsDeleted != 1 && s.UnionId == workUser.WxUser.UnionId);
            }
            //LoggerHelper.WriteLogInfo("[WxDisMainPage] unionID:" + (wxUser?.UnionId ?? "空的!!!"));
            //TODO激励语
            var motivational = "路漫漫其修远兮,吾将上下而求索";

            if (workUser != null)
            {
                motivational = ReturnInspire(workUser);
            }

            LoggerHelper.WriteLogInfo("[WxDisMainPage]:准备获取页面数据");
            if (wxUser != null && wxUser.IsCompleteRegister == 1)
            {
                ////推荐会议主题
                //var meets = _rep.Where<MeetInfo>(s => s.MeetDep == wxUser.DepartmentName)
                //    .OrderByDescending(o => o.MeetStartTime).Take(2);

                LoggerHelper.WriteLogInfo("[WxDisMainPage]:获取页面数据");
                DateTime dt            = DateTime.Now;                                                                                                                                               //当前时间
                DateTime startWeek     = Convert.ToDateTime(dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d"))).ToString("yyyy-MM-dd") + " 00:00:00");                                       //本周周一
                DateTime endWeek       = Convert.ToDateTime(startWeek.AddDays(6).ToString("yyyy-MM-dd") + " 23:59:59");                                                                              //本周周日
                DateTime startMonth    = Convert.ToDateTime(dt.AddDays(1 - dt.Day).ToString("yyyy-MM-dd") + " 00:00:00");                                                                            //本月月初
                DateTime endMonth      = Convert.ToDateTime(startMonth.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd") + " 23:59:59");                                                               //本月月末//
                var      lastStartWeek = Convert.ToDateTime(DateTime.Now.AddDays(Convert.ToInt32(1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) - 7).ToString("yyyy-MM- dd") + " 00:00:00");           //上周一
                var      lastEndWeek   = Convert.ToDateTime(DateTime.Now.AddDays(Convert.ToInt32(1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) - 7).AddDays(6).ToString("yyyy-MM-dd") + " 23:59:59"); //上周日


                //当前年月
                var currentYM = DateTime.Now.Year + "年" + DateTime.Now.Month + "月";

                //var recordList = _rep.Table<MyLRecord>().Where(s => s.UnionId == workUser.WxUser.UnionId).ToList();
                var recordList = _rep.Table <MyLRecord>().Where(s => s.WxUserId == workUser.WxUser.Id && s.IsDeleted != 1).ToList();

                //本周学习时间
                var    thisLearnHours  = getLearningHours(recordList, startWeek, endWeek);
                var    lastLearnHours  = getLearningHours(recordList, lastStartWeek, lastEndWeek);
                string learnDiffString = "增加";
                if (thisLearnHours - lastLearnHours < 0)
                {
                    learnDiffString = "减少";
                }

                //上周学习时间
                var learnCompare = "比上周" + learnDiffString + System.Math.Abs(thisLearnHours - lastLearnHours) + "小时";

                //本周参会次数 线上学习  线下签到
                var meetsignlist = (from a in _rep.Table <MyMeetOrder>()
                                    .Where(s => s.IsDeleted == 0 && s.CreateUser == workUser.WxUser.Id)
                                    select new MeetList
                {
                    LDate = a.CreateTime
                }).Union(from a in _rep.Table <MeetSignUp>()
                         .Where(s => s.IsDeleted == 0 && s.SignUpUserId == workUser.WxUser.Id)
                         select new MeetList
                {
                    LDate = a.SignInTime
                }).ToList();


                var    thisMeetingTimes  = getMeetingTimes(meetsignlist, startWeek, endWeek);
                var    lastMeetingTimes  = getMeetingTimes(meetsignlist, lastStartWeek, lastEndWeek);
                string meetingDiffString = "增加";
                if (thisMeetingTimes - lastMeetingTimes < 0)
                {
                    meetingDiffString = "减少";
                }

                //上周参会次数
                var meetCompare = "比上周" + meetingDiffString + System.Math.Abs(thisMeetingTimes - lastMeetingTimes) + "次";


                //TODO百分比 右连接
                //var recordAllList = from t in _rep.Table<MyLRecord>().Where(t => t.LDate.Year == DateTime.Now.Year && t.LDate.Month == DateTime.Now.Month)
                //                    join f in _rep.Table<WxUserModel>().Where(s => s.IsDeleted != 1 && s.HospitalName != null)
                //                        on t.WxUserId equals f.Id

                //                   into joinRecord
                //                    from t3 in joinRecord.DefaultIfEmpty()
                //                    group t by new
                //                    {
                //                        //unionid = t.UnionId
                //                        wxuserid = t.WxUserId

                //                    } into g

                //                    select new
                //                    {
                //                        hours = g.Sum(s => s.LObjectDate),
                //                        //unionid = g.Key.unionid
                //                        wxuserid = g.Key.wxuserid
                //                    };

                //var recordlist = from a in _rep.Table<MyLRecord>().Where(t =>
                //    t.LDate.Year == DateTime.Now.Year && t.LDate.Month == DateTime.Now.Month) select  a;
                //var recordAllList = from t in _rep.Table<WxUserModel>().Where(s => s.IsDeleted != 1)

                //    join f in _rep.Table<MyLRecord>()
                //        on t.Id equals f.WxUserId into joinRecord
                //    from t3 in joinRecord.DefaultIfEmpty()
                //    select new
                //    {
                //        wxuserid = t3.WxUserId,
                //        LObjectDate = t3.LObjectDate==null?0 : t3.LObjectDate
                //    };
                //var    recordAllList2 = from a in recordAllList
                //    group a by a.wxuserid
                //    into temp
                //    select new
                //    {
                //        hours = temp.Sum(s => s.LObjectDate),
                //        wxuserid = temp.Key
                //    };


                #region  个人排名百分比


                var list = (from a in _rep.Where <WxUserModel>(s => s.IsDeleted != 1)
                            join b in _rep.Where <MyLRecord>(s => s.IsDeleted != 1) on a.Id equals b.WxUserId into JoinedModel
                            from b in JoinedModel.DefaultIfEmpty()
                            group new { b } by a
                            into all
                            select new
                {
                    Id = all.Key.Id,
                    //产品资料
                    DocLearnTime = all.Where(s => s.b.LObjectType == 1 || s.b.LObjectType == 2 || s.b.LObjectType == 4).Sum(s => s.b.LObjectDate).HasValue
                                    ? all.Where(s => s.b.LObjectType == 1 || s.b.LObjectType == 2 || s.b.LObjectType == 4).Sum(s => s.b.LObjectDate) : 0,
                });
                list = list.OrderByDescending(s => s.DocLearnTime);

                #endregion
                var thisRecord = list.FirstOrDefault(s => s.Id == workUser.WxUser.Id);

                int recordAllCount = list.Select(s => s.Id).Distinct().Count();
                int myIndex        = recordAllCount;


                if (thisRecord != null)
                {
                    myIndex = list.Where(s => s.Id != null).OrderByDescending(s => s.DocLearnTime).ToList().IndexOf(thisRecord) + 1;
                    LoggerHelper.WarnInTimeTest("[recordAllList] 我的排名:" + myIndex);
                }



                LoggerHelper.WarnInTimeTest("[recordAllList] 总人数:" + recordAllCount);
                decimal learnPercent = 0;
                if (recordAllCount > 0)
                {
                    //learnPercent = (int)Math.Ceiling((double)recordAllList.Count() - myIndex / recordAllList.Count()) * 100;
                    //学习记录百分比
                    learnPercent = Math.Round(((decimal)((recordAllCount - myIndex)) / recordAllCount), 3) * 100;

                    LoggerHelper.WriteLogInfo("[WxDisMainPage] 学习记录 recordAllCount:" + recordAllCount + ",myIndex:" + myIndex);
                }



                //判断注册时间
                var isNewRegister = 1; //1 注册未满1周
                if (!IsNewRegister(workUser.WxUser.creation_time))
                {
                    isNewRegister = 2; //2 注册已满1周
                }

                rvm.Success = true;
                rvm.Msg     = "";
                rvm.Result  = new
                {
                    //meets = meets,
                    isNewRegister    = isNewRegister,
                    currentYM        = currentYM,
                    motivational     = motivational,
                    thisLearnHours   = thisLearnHours,
                    learnCompare     = learnCompare,
                    meetCompare      = meetCompare,
                    thisMeetingTimes = thisMeetingTimes,
                    learnPercent     = learnPercent
                };
            }
            else
            {
                rvm.Success = true;
                rvm.Msg     = "";
                rvm.Result  = new
                {
                    isNewRegister = 0,  //未注册
                    motivational  = motivational
                };
            }
            //LoggerHelper.WriteLogInfo("[WxDisMainPage]:接口是否成功:" + ((rvm.Success == true) ? "success" : "false"));
            //LoggerHelper.WriteLogInfo("****************获取微信发现页面数据 结束**********************");
            //LoggerHelper.WarnInTimeTest("Inner-[WxDisMainPage] End:" +  DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff"));
            stopwatch.Stop();//结束
            rvm.ResponseTime = stopwatch.Elapsed.TotalMilliseconds;
            return(rvm);
        }