/// <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); }