Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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());
        }