/// <summary> /// 获取列表是否成功 /// </summary> /// <param name="flag">标记</param> /// <returns></returns> public CheckDrugStatusEntity GetCheckResultStatusNew(string flag) { var dataResult = new CheckDrugStatusEntity(); using (var db = _dbContext.GetIntance()) //从数据库中 { dataResult = db.Queryable <CheckDrugStatusEntity>().Where(it => it.Flag == flag).First(); } return(dataResult); }
/// <summary> /// 获取列表是否成功状态 /// </summary> /// <param name="checkResultStatus"></param> /// <returns></returns> public bool UpdateResultStatusNew(CheckDrugStatusEntity checkResultStatusNew) { bool result = false; using (var db = _dbContext.GetIntance()) { var count = db.Updateable(checkResultStatusNew).Where(it => it.CRowId == checkResultStatusNew.CRowId).ExecuteCommand(); result = count > 0 ? true : false; } return(result); }
/// <summary> /// 获取住院或门诊的统计 /// </summary> /// <param name="flag">1住院2门诊</param> /// <returns></returns> public List <StaticsViewModel> GetStaticsViews(string flag, string drugname) { var dataResult = new List <StaticsViewModel>(); //判断缓存 string rediskey = ""; if (flag == "1")//住院 { rediskey = SystemManageConst.DRUGHOSKEY; } else { rediskey = SystemManageConst.DRUGCLINICKEY; } using (var redisdb = _redisDbContext.GetRedisIntance()) { //删除缓存测试用 //redisdb.Del(rediskey); dataResult = redisdb.Get <List <StaticsViewModel> >(rediskey);//从缓存里取 if (dataResult == null) { using (var db = _dbContext.GetIntance()) { CheckDrugStatusEntity checkResultStatus = new CheckDrugStatusEntity() { CRowId = (flag == "1"?1:2), CheckResultStatus = "N", Flag = (flag == "1"?"HOS":"CLINIC"), FunctionDesc = (flag == "1" ? "'万能神药'住院信息获取" : "'万能神药'门诊信息获取") }; bool checkStatusResultStart = UpdateResultStatusNew(checkResultStatus); if (!checkStatusResultStart) { return(null); } if (flag == "1")//住院 { dataResult = db.Queryable <AllPowerfulDrugEntity, YBHosPreInfoEntity>((a, c) => new object[] { JoinType.Left, a.DrugCode == c.ItemCode }).GroupBy(a => a.CommonName) .Where(a => drugname.Contains(a.CommonName)) .OrderBy((a, c) => SqlFunc.AggregateSum(c.COUNT), OrderByType.Desc) .Select((a, c) => new StaticsViewModel() { commonname = a.CommonName, count = SqlFunc.AggregateSum(c.COUNT).ToString(), price = SqlFunc.AggregateSum(c.COUNT * c.PRICE) }).ToList(); } else { dataResult = db.Queryable <AllPowerfulDrugEntity, YBClinicPreInfoEntity>((a, c) => new object[] { JoinType.Left, a.DrugCode == c.ItemCode }).GroupBy(a => a.CommonName) .Where(a => drugname.Contains(a.CommonName)) .OrderBy((a, c) => SqlFunc.AggregateSum(c.COUNT), OrderByType.Desc) .Select((a, c) => new StaticsViewModel() { commonname = a.CommonName, count = SqlFunc.AggregateSum(c.COUNT).ToString(), price = SqlFunc.AggregateSum(c.COUNT * c.PRICE) }).ToList(); } checkResultStatus = new CheckDrugStatusEntity() { CRowId = (flag == "1" ? 1 : 2), CheckResultStatus = "Y", Flag = (flag == "1" ? "HOS" : "CLINIC"), FunctionDesc = (flag == "1" ? "'万能神药'住院信息获取" : "'万能神药'门诊信息获取") }; bool checkStatusResultEnd = UpdateResultStatusNew(checkResultStatus); if (!checkStatusResultEnd) { return(null); } } if (dataResult != null)//加入缓存 { redisdb.Set(rediskey, dataResult); redisdb.Expire(rediskey, 86400);//设置缓存时间1天 } } else { var dataResultNew = new List <StaticsViewModel>(); string drugnamenew = drugname; //遍历缓存 foreach (StaticsViewModel item in dataResult) { if (item != null && drugname.Contains(item.commonname)) { dataResultNew.Add(item); drugnamenew = drugnamenew.Replace(item.commonname + ',', ""); } } if (drugnamenew.Length > 0)//从数据库中取 { using (var db = _dbContext.GetIntance()) { CheckDrugStatusEntity checkResultStatus = new CheckDrugStatusEntity() { CRowId = (flag == "1" ? 1 : 2), CheckResultStatus = "N", Flag = (flag == "1" ? "HOS" : "CLINIC"), FunctionDesc = (flag == "1" ? "'万能神药'住院信息获取" : "'万能神药'门诊信息获取") }; bool checkStatusResultStart = UpdateResultStatusNew(checkResultStatus); if (!checkStatusResultStart) { return(null); } if (flag == "1")//住院 { dataResult = db.Queryable <AllPowerfulDrugEntity, YBHosPreInfoEntity>((a, c) => new object[] { JoinType.Left, a.DrugCode == c.ItemCode }).GroupBy(a => a.CommonName) .Where(a => drugnamenew.Contains(a.CommonName)) .OrderBy((a, c) => SqlFunc.AggregateSum(c.COUNT), OrderByType.Desc) .Select((a, c) => new StaticsViewModel() { commonname = a.CommonName, count = SqlFunc.AggregateSum(c.COUNT).ToString(), price = SqlFunc.AggregateSum(c.COUNT * c.PRICE) }).ToList(); } else { dataResult = db.Queryable <AllPowerfulDrugEntity, YBClinicPreInfoEntity>((a, c) => new object[] { JoinType.Left, a.DrugCode == c.ItemCode }).GroupBy(a => a.CommonName) .Where(a => drugnamenew.Contains(a.CommonName)) .OrderBy((a, c) => SqlFunc.AggregateSum(c.COUNT), OrderByType.Desc) .Select((a, c) => new StaticsViewModel() { commonname = a.CommonName, count = SqlFunc.AggregateSum(c.COUNT).ToString(), price = SqlFunc.AggregateSum(c.COUNT * c.PRICE) }).ToList(); } checkResultStatus = new CheckDrugStatusEntity() { CRowId = (flag == "1" ? 1 : 2), CheckResultStatus = "Y", Flag = (flag == "1" ? "HOS" : "CLINIC"), FunctionDesc = (flag == "1" ? "'万能神药'住院信息获取" : "'万能神药'门诊信息获取") }; bool checkStatusResultEnd = UpdateResultStatusNew(checkResultStatus); if (!checkStatusResultEnd) { return(null); } } dataResult.AddRange(dataResultNew); if (dataResult != null) //加入缓存 { redisdb.Del(rediskey); //先删除缓存 redisdb.Set(rediskey, dataResult); redisdb.Expire(rediskey, 86400); //设置缓存时间1天 } } else { dataResult = dataResultNew; } } } return(dataResult); }