/// <summary> /// 批量修改 /// </summary> /// <param name="args"></param> /// <returns></returns> public CustomResult Update(UpdateDataDailyViewModel args) { CustomResult pReturnValue = new CustomResult(); pReturnValue.ResultKey = (byte)EResult.Fail; pReturnValue.ResultValue = TipInfo.UpdateFaile; if (args.DataInfo == null) { pReturnValue.ResultKey = (byte)EResult.Succeed; pReturnValue.ResultValue = TipInfo.DataNull; return pReturnValue; } List<UpdateDataDailyInfo> pNewUpdateData = new List<UpdateDataDailyInfo>(); using (DataSubmittedEntities db = new DataSubmittedEntities()) { var pReportData = db.RP_Daily.Where(s => s.CalcuTime == args.DataDate && s.StaType == args.StationType).ToList(); using (TransactionScope transaction = new TransactionScope()) { try { foreach (var item in args.DataInfo) { //获取查询日期当天的数据 if (item.VehType == SystemConst.SmallCar) item.VehType = "0"; if (item.VehType == SystemConst.OtherCar) item.VehType = "1"; if (item.VehType == SystemConst.Truk) item.VehType = "2"; if (item.VehType == SystemConst.Green) item.VehType = "3"; int ptemp = int.Parse(item.VehType); RP_Daily pDataTemp = new RP_Daily(); if (pReportData.Where(i => i.VehType == ptemp).Count() == 1) { pDataTemp = pReportData.Where(i => i.VehType == ptemp).SingleOrDefault(); if (item.ExEn == SystemConst.In)//入口 { pDataTemp.InNum = item.VehNum;//出口 } else { pDataTemp.OutNum = item.VehNum; pDataTemp.ChagFee = item.CarChag * 10000;//转为元,存到数据库 } pDataTemp.UpdDate = DateTime.Now; pDataTemp.State = 1; if (SessionManage.GetLoginUser() != null) { pDataTemp.UpdBy = SessionManage.GetLoginUser().UserName; } } } db.SaveChanges(); transaction.Complete(); pReturnValue.ResultKey = (byte)EResult.Succeed; pReturnValue.ResultValue = TipInfo.UpdateSuccess; } catch (Exception ex) { Common.SystemLog.GetInstance().Log.Info(TipInfo.UpdateDataRepeat, ex); pReturnValue.ResultKey = (byte)EResult.Fail; pReturnValue.ResultValue = TipInfo.UpdateDataRepeat; } return pReturnValue; } } }
/// <summary> /// 补充数据 /// </summary> /// <param name="dt">统计日期</param> /// <param name="stationtype">统计类型</param> private void InsertNull(DateTime dt, int stationtype) { using (DataSubmittedEntities db = new DataSubmittedEntities()) { List<RP_Daily> pDailyList = new List<RP_Daily>(); for (int i = 0; i < 4; i++) { //0小型客车,1其他客车,2货车(不包含绿通),3绿通 //每个站只有四条合计数据,每天数据表里一共只有16条 List<RP_Daily> pTemp = db.RP_Daily.Where(s => s.CalcuTime == dt && s.VehType == i && s.StaType == stationtype).ToList(); //如果数据不存在,才补充 if (pTemp.Count <= 0) { RP_Daily pDaily = new RP_Daily(); pDaily.Id = Guid.NewGuid(); pDaily.CrtDate = DateTime.Now; pDaily.VehType = i;//车辆类型 pDaily.StaType = stationtype; pDaily.State = 0; pDaily.OutNum = 0; pDaily.InNum = 0; pDaily.ChagFee = 0; pDaily.CalcuTime = DateTime.Parse(dt.ToShortDateString()); pDailyList.Add(pDaily); } } using (TransactionScope transac = new TransactionScope()) { db.RP_Daily.AddRange(pDailyList); if (pDailyList.Count > 0) { db.SaveChanges(); transac.Complete(); } } } }
/// <summary> /// 统计类型 /// </summary> /// <param name="stationtype">统计段类型</param> /// <param name="datasource">统计段数据源</param> /// <param name="dt">时间</param> /// <returns></returns> private List<RP_Daily> CalcuRP(int stationtype, IEnumerable<DS_DataSource> datasource, DateTime dt, List<int> stationlist) { List<RP_Daily> plist = new List<RP_Daily>(); using (DataSubmittedEntities db = new DataSubmittedEntities()) { for (int i = 0; i < 4; i++) { //0小型客车,1其他客车,2货车(不包含绿通),3绿通 //每个站只有四条合计数据,每天数据表里一共只有16条 //判断各站各车型数据是有已存在,存在进行更新,不存在进行添加 List<RP_Daily> pDailyList = db.RP_Daily.Where(s => s.CalcuTime == dt && s.VehType == i && s.StaType == stationtype).ToList(); RP_Daily pDaily = new RP_Daily(); if (pDailyList.Count > 0) { pDaily = pDailyList.First(); pDaily.State = 1; pDaily.UpdDate = DateTime.Now; } else { pDaily.Id = Guid.NewGuid(); pDaily.CrtDate = DateTime.Now; pDaily.VehType = i;//车辆类型 pDaily.StaType = stationtype; pDaily.State = 0; } byte ptemp = (byte)i; pDaily.OutNum = datasource.Where(p => p.CalcuType == ptemp).Sum(p => p.OutNum); pDaily.InNum = datasource.Where(p => p.CalcuType == ptemp).Sum(p => p.InNum); if (i == 0) { pDaily.ChagFee = this.GetCharge(stationlist, datasource); } if (i == 1) { pDaily.ChagFee = datasource.Where(s => s.CalcuType == 1).Sum(s => s.RecMoney); } if (i == 2) { pDaily.ChagFee = datasource.Where(s => s.CalcuType == 2).Sum(s => s.RecMoney); } if (i == 3) { pDaily.InNum = 0;//入口绿通为0 pDaily.ChagFee = datasource.Where(s => s.CalcuType == 3).Sum(s => s.RecMoney); } pDaily.CalcuTime = DateTime.Parse(dt.ToShortDateString()); if (pDailyList.Count > 0)//进行更新 { using (TransactionScope transac = new TransactionScope()) { db.SaveChanges(); transac.Complete(); } } else { //将实体加入集合 plist.Add(pDaily); } } } return plist; }