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 static void ExportPrepaidBills(IEnumerable <PrepaidBill> prepaidBills, string[] titles, string fileName) { workbook = new HSSFWorkbook(); InitializeWorkbook(); ISheet sheet = workbook.CreateSheet("能耗预付费实时账单"); //SetPrintSetting(sheet); // 设置打印格式 SetHeaderTitle(sheet, titles); // 设置标题栏 int rowIndex = 0; for (int i = 0; i < prepaidBills.Count(); i++) { PrepaidBill bill = prepaidBills.ElementAt(i); int deviceCount = bill.PrepaidDeviceBills.Count(); IRow row = CreateCommonRow(sheet, ++rowIndex); // 房间编号 CreateCommonCell(sheet, row, 0, bill.RoomNo); sheet.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex + deviceCount - 1, 0, 0)); // 建筑编号 CreateCommonCell(sheet, row, 1, bill.BuildingNo); sheet.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex + deviceCount - 1, 1, 1)); // 业主姓名 CreateCommonCell(sheet, row, 2, bill.RealName); sheet.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex + deviceCount - 1, 2, 2)); // 总价格 CreateCommonCell(sheet, row, 9, bill.SumMoney); sheet.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex + deviceCount - 1, 9, 9)); // 账户余额 CreateCommonCell(sheet, row, 10, bill.AccountBalance); sheet.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex + deviceCount - 1, 10, 10)); // 结算余额 CreateCommonCell(sheet, row, 11, bill.BilledBalance); sheet.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex + deviceCount - 1, 11, 11)); for (int j = 0; j < deviceCount; j++) { PrepaidDeviceBill deviceBill = bill.PrepaidDeviceBills.ElementAt(j); CreateCommonCell(sheet, row, 3, deviceBill.DeviceNo); CreateCommonCell(sheet, row, 4, deviceBill.DeviceName); CreateCommonCell(sheet, row, 5, deviceBill.PreValue.ToString()); CreateCommonCell(sheet, row, 6, deviceBill.CurValue.ToString()); CreateCommonCell(sheet, row, 7, deviceBill.Price); CreateCommonCell(sheet, row, 8, deviceBill.Money); if (j != deviceCount - 1) { row = CreateCommonRow(sheet, ++rowIndex); } } } WriteToFile(fileName); }
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()); }