public async Task <IHttpActionResult> GetCredit(string uuid) { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Credit item = await this.repository.GetByIdAsync(uuid); if (item == null) { return(NotFound()); } var result = new { UUID = item.UUID, Name = item.Name, Description = item.Description, MinScore = item.MinScore, MaxScore = item.MaxScore, Arrears = TextHelper.ConvertMoney(item.Arrears), CreateTime = item.CreateTime, Remark = item.Remark }; return(Ok(result)); }
public async Task <IHttpActionResult> GetLadder(string uuid) { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Ladder item = await this.repository.GetByIdAsync(uuid); if (item == null) { return(NotFound()); } var result = new { UUID = item.UUID, TypeID = item.TypeID, TypeName = item.DeviceType.Name, Name = item.Name, Description = item.Description, MinEnergy = item.MinEnergy, MaxEnergy = item.MaxEnergy, Price = TextHelper.ConvertMoney(item.Price), CreateTime = item.CreateTime, Remark = item.Remark }; return(Ok(result)); }
private IEnumerable <PrepaidBill> GetPrepaidBills(IEnumerable <Room> rooms) { List <PrepaidBill> bills = new List <PrepaidBill>(); foreach (var item in rooms) { var credit = (from p in db.Credits where item.CreditScore > p.MinScore && item.CreditScore <= p.MaxScore select p).FirstOrDefault(); PrepaidBill bill = new PrepaidBill(); bill.RoomNo = item.RoomNo; bill.BuildingNo = item.BuildingNo; bill.RealName = item.RealName; bill.Phone = item.Phone; bill.CreditScore = item.CreditScore; bill.CreditLevel = credit == null ? "" : credit.Name; bill.IntAccountBalance = item.AccountBalance; bill.AccountBalance = TextHelper.ConvertMoney(item.AccountBalance); bill.Arrears = TextHelper.ConvertMoney(credit == null ? 0 : credit.Arrears); bill.ManagerFees = string.Format("{0}㎡*¥{1}={2}", item.Area, TextHelper.ConvertMoney(item.Price), TextHelper.ConvertMoney((int)item.Area * item.Price)); //bill.IntApportMoney = GetApportMoney(item.RoomNo); //bill.ApportMoney = TextHelper.ConvertMoney(bill.IntApportMoney); bill.PrepaidDeviceBills = GetPrepaidDeviceBills(item.RoomNo); //bill.SumValue = bill.PrepaidDeviceBills.Sum(o => o.CurValue - o.PreValue); //bill.SumValue = Math.Round(bill.SumValue ?? 0.00, 2); bill.IntSumMoney = bill.PrepaidDeviceBills.Sum(o => o.IntMoney); bill.SumMoney = TextHelper.ConvertMoney(bill.IntSumMoney); //bill.IntBilledBalance = item.AccountBalance - bill.IntSumMoney - bill.IntApportMoney; bill.IntBilledBalance = item.AccountBalance - bill.IntSumMoney; bill.BilledBalance = TextHelper.ConvertMoney(bill.IntBilledBalance); bills.Add(bill); } return(bills); }
public async Task <IHttpActionResult> GetBill(int uuid) { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Bill item = await this.billRepository.GetByIdAsync(uuid); if (item == null) { return(NotFound()); } var result = new { ID = item.ID, DeviceNo = item.DeviceNo, DeviceName = item.Device.DeviceName, RoomNo = item.Device.RoomNo, PreValue = item.PreValue, CurValue = item.CurValue, Money = TextHelper.ConvertMoney(item.Money), DateTime = item.DateTime, Remark = item.Remark }; return(Ok(result)); }
public IHttpActionResult GetRealtimeFundStatis() { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } IEnumerable <string> BuildingNos = from item in this.buildingRepository.GetAll() select item.BuildingNo; var statises = this.deviceRepository.GetRealtimeFunds(); var Balance = statises.Sum(p => p.totalBalance); double Expend = 0.00; foreach (var item in statises) { Expend += Math.Round(item.totalExpend ?? 0.00, 2); } var items = new { BuildingNos = BuildingNos, TotalBalances = from item in statises select TextHelper.ConvertMoney(item.totalBalance), TotalExpends = from item in statises select TextHelper.ConvertMoney((int)(item.totalExpend ?? 0)), Balance = TextHelper.ConvertMoney(Balance), Expend = TextHelper.ConvertMoney((int)Expend), Percent = string.Format("{0:P}", Expend / Balance) }; return(Ok(items)); }
public async Task <IHttpActionResult> GetDeviceType(string uuid) { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } DeviceType item = await this.repository.GetByIdAsync(uuid); if (item == null) { return(NotFound()); } var result = new { UUID = item.UUID, Name = item.Name, Description = item.Description, Unit = item.Unit, Price1 = TextHelper.ConvertMoney(item.Price1), Price2 = TextHelper.ConvertMoney(item.Price2), Price3 = TextHelper.ConvertMoney(item.Price3), Price4 = TextHelper.ConvertMoney(item.Price4), Price5 = TextHelper.ConvertMoney(item.Price5), CreateTime = item.CreateTime, Remark = item.Remark }; return(Ok(result)); }
public async Task <IHttpActionResult> GetRecharge(string uuid) { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Recharge item = await this.rechargeRespository.GetByIdAsync(uuid); if (item == null) { return(NotFound()); } var result = new { UUID = item.UUID, RoomNo = item.RoomNo, RealName = item.Room.RealName, Money = TextHelper.ConvertMoney(item.Money), DateTime = item.DateTime, Remark = item.Remark }; return(Ok(result)); }
// GET: api/rooms public IHttpActionResult GetRooms() { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Pager pager = null; IEnumerable <Room> rooms; string RealName = HttpContext.Current.Request.Params["RealName"]; string BuildingNo = HttpContext.Current.Request.Params["BuildingNo"]; string RoomNo = HttpContext.Current.Request.Params["RoomNo"]; string Floor = HttpContext.Current.Request.Params["Floor"]; string strPageIndex = HttpContext.Current.Request.Params["PageIndex"]; string strPageSize = HttpContext.Current.Request.Params["PageSize"]; if (strPageIndex == null || strPageSize == null) { pager = new Pager(); rooms = this.roomRepository.GetAll(RealName, BuildingNo, RoomNo, Floor); } else { // 获取分页数据 int pageIndex = Convert.ToInt32(strPageIndex); int pageSize = Convert.ToInt32(strPageSize); pager = new Pager(pageIndex, pageSize, this.roomRepository.GetCount(RealName, BuildingNo, RoomNo, Floor)); rooms = this.roomRepository.GetPagerItems(RealName, BuildingNo, RoomNo, Floor, pageIndex, pageSize, u => u.BuildingNo); } var items = from item in rooms select new { RoomNo = item.RoomNo, BuildingNo = item.BuildingNo, BuildingName = item.Building.Name, Floors = item.Building.Floors, Floor = item.Floor, Area = item.Area, Price = item.Price, RealName = item.RealName, Phone = item.Phone, Email = item.Email, AccountBalance = TextHelper.ConvertMoney(item.AccountBalance), AccountWarnLimit = TextHelper.ConvertMoney(item.AccountWarnLimit), CreditScore = item.CreditScore, AlipayAccount = item.AlipayAccount, WechatAccount = item.WechatAccount, BankAccount = item.BankAccount, CreateTime = item.CreateTime, Remark = item.Remark }; pager.Items = items; return(Ok(pager)); }
public dynamic GetBuildingRealtimeFunds(string buildingNo) { var totalBalance = db.Devices.Where(p => p.Room.BuildingNo == buildingNo).Sum(p => p.Room.AccountBalance); var totalExpend = db.Devices.Where(p => p.Room.BuildingNo == buildingNo).Sum(q => ((q.Value ?? 0.00) - (q.PreValue ?? 0.00)) * q.DeviceType.Price1); return(new { TotalBalance = TextHelper.ConvertMoney(totalBalance), TotalExpend = TextHelper.ConvertMoney(totalExpend == null ? 0 : (int)totalExpend), Percent = totalExpend == null || totalBalance == null ? "无意义" : string.Format("{0:P}", totalExpend / totalBalance) }); }
private IEnumerable <RoomBill> GetRoomBills(IEnumerable <Bill> srcBills) { List <RoomBill> bills = new List <RoomBill>(); var result = from p in srcBills group p by new { RoomNo = p.Device.RoomNo, RealName = p.Device.Room.RealName, LotNo = p.LotNo, AccountBalance = p.AccountBalance, DateTime = p.DateTime, } into g orderby g.Key.RoomNo, g.Key.DateTime descending select new { RoomNo = g.Key.RoomNo, RealName = g.Key.RealName, LotNo = g.Key.LotNo, AccountBalance = g.Key.AccountBalance, DateTime = g.Key.DateTime, //SumValue = g.Sum(p => p.CurValue - p.PreValue), SumMoney = g.Sum(p => p.Money) }; foreach (var item in result) { RoomBill bill = new RoomBill(); bill.RoomNo = item.RoomNo; bill.LotNo = item.LotNo; bill.RealName = item.RealName; bill.DateTime = item.DateTime; bill.AccountBalance = TextHelper.ConvertMoney(item.AccountBalance); //bill.SumValue = item.SumValue; bill.SumMoney = TextHelper.ConvertMoney(item.SumMoney); bill.BilledAccountBalance = TextHelper.ConvertMoney(item.AccountBalance - item.SumMoney); bill.DeviceBills = (from p in GetAll() where p.Device.RoomNo == item.RoomNo && p.LotNo == item.LotNo select p).AsEnumerable().Select(q => new DeviceBill { DeviceNo = q.DeviceNo, DeviceName = q.Device.DeviceName, PreValue = q.PreValue, CurValue = q.CurValue, Price = TextHelper.ConvertMoney(q.Device.DeviceType.Price1), Money = TextHelper.ConvertMoney(q.Money), Remark = q.Remark }); bills.Add(bill); } return(bills); }
public async Task <IHttpActionResult> GetDevice(string uuid) { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Device item = await this.repository.GetByIdAsync(uuid); if (item == null) { return(NotFound()); } var result = new { DeviceNo = item.DeviceNo, BuildingNo = item.Room.BuildingNo, BuildingName = item.Room.Building.Name, Floor = item.Room.Floor, RoomNo = item.RoomNo, TypeID = item.TypeID, TypeName = item.DeviceType.Name, Protocol = item.Protocol, Scope = item.Scope, DeviceName = item.DeviceName, PhyAddr = item.PhyAddr, ItemID = item.ItemID, ItemName = item.ItemName, ItemDescription = item.ItemDescription, Status = item.Status, Value = item.Value, Rate = item.Rate, Unit = item.DeviceType.Unit, Price1 = TextHelper.ConvertMoney(item.DeviceType.Price1), Price2 = TextHelper.ConvertMoney(item.DeviceType.Price2), Price3 = TextHelper.ConvertMoney(item.DeviceType.Price3), Price4 = TextHelper.ConvertMoney(item.DeviceType.Price4), Price5 = TextHelper.ConvertMoney(item.DeviceType.Price5), IsArchive = item.IsArchive, ArchiveInterval = item.ArchiveInterval, Remark1 = item.Remark1, Remark2 = item.Remark2, Remark3 = item.Remark3 }; return(Ok(result)); }
// GET: api/devicetypes public IHttpActionResult GetDeviceTypes() { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Pager pager = null; string strPageIndex = HttpContext.Current.Request.Params["PageIndex"]; string strPageSize = HttpContext.Current.Request.Params["PageSize"]; IEnumerable <DeviceType> DeviceTypes; if (strPageIndex == null || strPageSize == null) { pager = new Pager(); DeviceTypes = this.repository.GetAll(); } else { // 获取分页数据 int pageIndex = Convert.ToInt32(strPageIndex); int pageSize = Convert.ToInt32(strPageSize); pager = new Pager(pageIndex, pageSize, this.repository.GetCount()); DeviceTypes = this.repository.GetPagerItems(pageIndex, pageSize, u => u.UUID); } var items = from item in DeviceTypes select new { UUID = item.UUID, Name = item.Name, Description = item.Description, Unit = item.Unit, Price1 = TextHelper.ConvertMoney(item.Price1), Price2 = TextHelper.ConvertMoney(item.Price2), Price3 = TextHelper.ConvertMoney(item.Price3), Price4 = TextHelper.ConvertMoney(item.Price4), Price5 = TextHelper.ConvertMoney(item.Price5), CreateTime = item.CreateTime, Remark = item.Remark }; pager.Items = items; return(Ok(pager)); }
// GET: api/ladders public IHttpActionResult GetLadders() { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Pager pager = null; string strPageIndex = HttpContext.Current.Request.Params["PageIndex"]; string strPageSize = HttpContext.Current.Request.Params["PageSize"]; IEnumerable <Ladder> Ladders; if (strPageIndex == null || strPageSize == null) { pager = new Pager(); Ladders = this.repository.GetAll(); } else { // 获取分页数据 int pageIndex = Convert.ToInt32(strPageIndex); int pageSize = Convert.ToInt32(strPageSize); pager = new Pager(pageIndex, pageSize, this.repository.GetCount()); Ladders = this.repository.GetPagerItems(pageIndex, pageSize, u => u.UUID); } var items = from item in Ladders select new { UUID = item.UUID, TypeID = item.TypeID, TypeName = item.DeviceType.Name, Name = item.Name, Description = item.Description, MinEnergy = item.MinEnergy, MaxEnergy = item.MaxEnergy, Price = TextHelper.ConvertMoney(item.Price), CreateTime = item.CreateTime, Remark = item.Remark }; pager.Items = items; return(Ok(pager)); }
// GET: api/bills public IHttpActionResult GetBills() { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Pager pager = null; string strPageIndex = HttpContext.Current.Request.Params["PageIndex"]; string strPageSize = HttpContext.Current.Request.Params["PageSize"]; IEnumerable <Bill> bills; if (strPageIndex == null || strPageSize == null) { pager = new Pager(); bills = this.billRepository.GetAll(); } else { // 获取分页数据 int pageIndex = Convert.ToInt32(strPageIndex); int pageSize = Convert.ToInt32(strPageSize); pager = new Pager(pageIndex, pageSize, this.billRepository.GetCount()); bills = this.billRepository.GetPagerItems(pageIndex, pageSize, u => u.LotNo); } var items = from item in bills select new { ID = item.ID, DeviceNo = item.DeviceNo, DeviceName = item.Device.DeviceName, RoomNo = item.Device.RoomNo, PreValue = item.PreValue, CurValue = item.CurValue, Money = TextHelper.ConvertMoney(item.Money), DateTime = item.DateTime, Remark = item.Remark }; pager.Items = items; return(Ok(pager)); }
// GET: api/recharges public IHttpActionResult GetRecharges() { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Pager pager = null; IEnumerable <Recharge> recharges; string RoomNo = HttpContext.Current.Request.Params["RoomNo"]; string RealName = HttpContext.Current.Request.Params["RealName"]; string strPageIndex = HttpContext.Current.Request.Params["PageIndex"]; string strPageSize = HttpContext.Current.Request.Params["PageSize"]; if (strPageIndex == null || strPageSize == null) { pager = new Pager(); recharges = this.rechargeRespository.GetAll(RoomNo, RealName); } else { // 获取分页数据 int pageIndex = Convert.ToInt32(strPageIndex); int pageSize = Convert.ToInt32(strPageSize); pager = new Pager(pageIndex, pageSize, this.rechargeRespository.GetCount(RoomNo, RealName)); recharges = this.rechargeRespository.GetPagerItems(RoomNo, RealName, pageIndex, pageSize, u => u.DateTime, true); } var items = from item in recharges select new { UUID = item.UUID, RoomNo = item.RoomNo, RealName = item.Room.RealName, Money = TextHelper.ConvertMoney(item.Money), DateTime = item.DateTime, Remark = item.Remark }; pager.Items = items; return(Ok(pager)); }
private IEnumerable <PrepaidDeviceBill> GetPrepaidDeviceBills(string RoomNo) { List <PrepaidDeviceBill> bills = new List <PrepaidDeviceBill>(); var devices = from item in db.Devices where item.RoomNo == RoomNo select item; foreach (var item in devices) { PrepaidDeviceBill bill = new PrepaidDeviceBill(); bill.DeviceNo = item.DeviceNo; bill.DeviceName = item.DeviceName; bill.PreValue = Math.Round(item.PreValue ?? 0.00, 2); bill.CurValue = Math.Round((item.Value * item.Rate) ?? 0.00, 2); bill.Price = TextHelper.ConvertMoney(item.DeviceType.Price1); bill.IntMoney = (int)((bill.CurValue - bill.PreValue) * item.DeviceType.Price1); bill.Money = TextHelper.ConvertMoney(bill.IntMoney); bills.Add(bill); } return(bills); }
public async Task <IHttpActionResult> GetRoom(string uuid) { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Room item = await this.roomRepository.GetByIdAsync(uuid); if (item == null) { return(NotFound()); } var result = new { RoomNo = item.RoomNo, BuildingNo = item.BuildingNo, BuildingName = item.Building.Name, Floors = item.Building.Floors, Floor = item.Floor, Area = item.Area, Price = item.Price, RealName = item.RealName, Phone = item.Phone, Email = item.Email, AccountBalance = TextHelper.ConvertMoney(item.AccountBalance), AccountWarnLimit = TextHelper.ConvertMoney(item.AccountWarnLimit), CreditScore = item.CreditScore, AlipayAccount = item.AlipayAccount, WechatAccount = item.WechatAccount, BankAccount = item.BankAccount, CreateTime = item.CreateTime, Remark = item.Remark }; return(Ok(result)); }
public IHttpActionResult ExportRecharges() { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } string fileName = string.Format("业主充值记录{0}.xls", DateTime.Now.ToString("yyyy-MM-dd[hh-mm-ss]")); Dictionary <string, string> dict = new Dictionary <string, string>(); dict.Add("UUID", "UUID"); dict.Add("房间编号", "RoomNo"); dict.Add("业主姓名", "RealName"); dict.Add("充值金额", "Money"); dict.Add("时间", "DateTime"); dict.Add("备注", "Remark"); string RoomNo = HttpContext.Current.Request.Params["RoomNo"]; string RealName = HttpContext.Current.Request.Params["RealName"]; IEnumerable <Recharge> recharges = this.rechargeRespository.GetAll(RoomNo, RealName); var items = from item in recharges select new { UUID = item.UUID, RoomNo = item.RoomNo, RealName = item.Room.RealName, Money = TextHelper.ConvertMoney(item.Money), DateTime = item.DateTime, Remark = item.Remark }; ReportHelper.Export(dict, items, fileName); HttpContext.Current.Response.ContentType = "text/plain"; HttpContext.Current.Response.Write(fileName); return(Ok()); }
// GET: api/devices public IHttpActionResult GetDevices() { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } Pager pager = null; IEnumerable <Device> devices; string DeviceNo = HttpContext.Current.Request.Params["DeviceNo"]; string RoomNo = HttpContext.Current.Request.Params["RoomNo"]; string ItemID = HttpContext.Current.Request.Params["ItemID"]; string strPageIndex = HttpContext.Current.Request.Params["PageIndex"]; string strPageSize = HttpContext.Current.Request.Params["PageSize"]; if (strPageIndex == null || strPageSize == null) { pager = new Pager(); devices = this.repository.GetAll(DeviceNo, RoomNo, ItemID); } else { // 获取分页数据 int pageIndex = Convert.ToInt32(strPageIndex); int pageSize = Convert.ToInt32(strPageSize); pager = new Pager(pageIndex, pageSize, this.repository.GetCount(DeviceNo, RoomNo, ItemID)); devices = this.repository.GetPagerItems(DeviceNo, RoomNo, ItemID, pageIndex, pageSize, u => u.DeviceNo); } var items = from item in devices select new { DeviceNo = item.DeviceNo, RoomNo = item.RoomNo, TypeID = item.TypeID, TypeName = item.DeviceType.Name, Protocol = item.Protocol, Scope = item.Scope, DeviceName = item.DeviceName, PhyAddr = item.PhyAddr, ItemID = item.ItemID, ItemName = item.ItemName, ItemDescription = item.ItemDescription, Status = item.Status, Value = item.Value, Rate = item.Rate, Unit = item.DeviceType.Unit, Price1 = TextHelper.ConvertMoney(item.DeviceType.Price1), Price2 = TextHelper.ConvertMoney(item.DeviceType.Price2), Price3 = TextHelper.ConvertMoney(item.DeviceType.Price3), Price4 = TextHelper.ConvertMoney(item.DeviceType.Price4), Price5 = TextHelper.ConvertMoney(item.DeviceType.Price5), IsArchive = item.IsArchive, ArchiveInterval = item.ArchiveInterval, Remark1 = item.Remark1, Remark2 = item.Remark2, Remark3 = item.Remark3 }; pager.Items = items; return(Ok(pager)); }
public IHttpActionResult PostRecharge([FromUri] Recharge recharge) { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } // 检测两次充值时间间隔是否过于频繁,防止误充 Setting setting = TextHelper.GetSystemConfig(); if (setting.IsRechargeSettle) { bool isValid = ChkValidPeriod(recharge.RoomNo, setting.RechargeLimitInterval); if (!isValid) { string msg = string.Format("两次充值时间间隔不到{0}分钟,请稍后重试!", setting.RechargeLimitInterval); var errorResult = new Prepaid.Results.InternalServerErrorTextPlainResult(msg, Request); errorResult.StatusCode = System.Net.HttpStatusCode.Forbidden; return(errorResult); } } Room room = null; Log log = new Log(); AdminSession admin = HttpContext.Current.Session["mySession"] as AdminSession; string money = TextHelper.ConvertMoney(recharge.Money); log.UserID = admin.UUID; log.Type = 2; // 1:登录日志 2:操作日志 log.ClientAddr = TextHelper.GetHostAddress(); log.Remark = ""; log.DateTime = DateTime.Now; try { using (TransactionScope ts = new TransactionScope()) { room = this.roomRespository.GetByID(recharge.RoomNo); room.AccountBalance += recharge.Money; this.roomRespository.Put(room); recharge.UUID = TextHelper.GenerateUUID(); recharge.DateTime = DateTime.Now; this.rechargeRespository.Add(recharge); log.Content = string.Format("管理员:{0}对房间:{1}成功充值¥{2}元!", admin.UserName, recharge.RoomNo, money); ts.Complete(); // 提交事务 } } catch (DbUpdateException) { if (this.rechargeRespository.IsExist(recharge.UUID)) { return(Conflict()); } else { log.Content = string.Format("管理员:{0}对房间:{1}充值金额¥{2}元失败!", admin.UserName, recharge.RoomNo, money); } } this.logRespository.Add(log); // 消息通知处理 if (room != null) { TextHelper.NotifyProcess(setting.Notify, room, money, log.Content); } return(Ok()); }
public IHttpActionResult PostBills() { var errResult = TextHelper.CheckAuthorized(Request); if (errResult != null) { return(errResult); } AdminSession admin = HttpContext.Current.Session["mySession"] as AdminSession; Log log = new Log(); log.UserID = admin.UUID; log.Type = 2; // 1:登录日志 2:操作日志 log.ClientAddr = TextHelper.GetHostAddress(); log.Remark = ""; log.DateTime = DateTime.Now; Room room = null; string RoomNo = HttpContext.Current.Request.Params["RoomNo"]; PrepaidBill prepaidBill = this.billRepository.GetPrepaidBills(RoomNo, "", "", "").FirstOrDefault(); DateTime now = DateTime.Now; string lotNo = TextHelper.GenerateUUID(); try { using (TransactionScope ts = new TransactionScope()) { foreach (PrepaidDeviceBill item in prepaidBill.PrepaidDeviceBills) { Bill bill = new Bill(); bill.DeviceNo = item.DeviceNo; bill.LotNo = lotNo; bill.PreValue = item.PreValue ?? 0.00; bill.CurValue = item.CurValue ?? 0.00; bill.AccountBalance = prepaidBill.IntAccountBalance; bill.Money = item.IntMoney; bill.DateTime = now; //bill.Remark = string.Format("yyyy-MM", bill.DateTime); this.billRepository.Add(bill); Device device = this.deviceRespository.GetByID(item.DeviceNo); device.PreValue = item.CurValue; this.deviceRespository.Put(device); } room = this.roomRespository.GetByID(RoomNo); room.AccountBalance = prepaidBill.IntBilledBalance; this.roomRespository.Put(room); log.Content = string.Format("管理员:{0}对房间:{1}结算成功!", admin.UserName, RoomNo); ts.Complete(); // 提交事务 } } catch (DbUpdateException) { log.Content = string.Format("管理员:{0}对房间:{1}结算失败!", admin.UserName, RoomNo); } this.logRespository.Add(log); // 消息通知 if (room != null) { string money = TextHelper.ConvertMoney(prepaidBill.IntSumMoney); Setting setting = TextHelper.GetSystemConfig(); TextHelper.NotifyProcess(setting.Notify, room, money, log.Content); } return(Ok()); }
private void BatchSettle(IEnumerable <PrepaidBill> prepaidBills, bool isAuto) { DateTime now = DateTime.Now; string lotNo = TextHelper.GenerateUUID(); foreach (var prepaidBill in prepaidBills) { if (prepaidBill.IntBilledBalance < 0 || prepaidBill.IntSumMoney == 0) // 如果余额不够或者没有消耗能源,则不结算 { continue; } Room room = null; using (TransactionScope ts = new TransactionScope()) { foreach (PrepaidDeviceBill item in prepaidBill.PrepaidDeviceBills) { Bill bill = new Bill(); bill.DeviceNo = item.DeviceNo; bill.LotNo = lotNo; bill.PreValue = item.PreValue ?? 0.00; bill.CurValue = item.CurValue ?? 0.00; bill.AccountBalance = prepaidBill.IntAccountBalance; bill.Money = item.IntMoney; bill.DateTime = now; //bill.Remark = string.Format("yyyy-MM", bill.DateTime); this.billRepository.Add(bill); Device device = this.deviceRespository.GetByID(item.DeviceNo); device.PreValue = item.CurValue; this.deviceRespository.Put(device); } room = this.roomRespository.GetByID(prepaidBill.RoomNo); if (!isAuto) { room.AccountBalance = prepaidBill.IntAccountBalance - prepaidBill.IntSumMoney; } else { room.AccountBalance = prepaidBill.IntAccountBalance - prepaidBill.IntSumMoney - prepaidBill.IntManagerFees; } this.roomRespository.Put(room); ts.Complete(); // 提交事务 } // 消息通知 if (room != null) { string money = null; if (!isAuto) { money = TextHelper.ConvertMoney(prepaidBill.IntSumMoney); } else { money = TextHelper.ConvertMoney(prepaidBill.IntSumMoney + prepaidBill.IntManagerFees); } string content = string.Format("对房间:{0}业主姓名:{1}成功结算¥{{2}}元.", room.RoomNo, room.RealName, money); Setting setting = TextHelper.GetSystemConfig(); TextHelper.NotifyProcess(setting.Notify, room, money, content); } } }