Ejemplo n.º 1
0
        //获取员工权限
        public static bool getAuthority(WatcherDBDataContext db, Employee employee, string pro)
        {
            var authority = db.Authority.FirstOrDefault(x => x.emplyeeId == employee.id);
            if (authority == null)
                authority = db.Authority.FirstOrDefault(x => x.jobId == employee.jobId);

            var proVal = authority.GetType().GetProperty(pro);
            //if (proVal == null)
            //return true;

            return Convert.ToBoolean(proVal.GetValue(authority, null));
        }
Ejemplo n.º 2
0
 //每隔1秒监听一次,检测异常手牌
 private void seatTimer_Elapsed()
 {
     while (true)
     {
         try
         {
             var dc = new WatcherDBDataContext(connectionString);
             TransactionOptions transOptions = new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted };
             using (new TransactionScope(TransactionScopeOption.Required, transOptions))
             {
                 var seats = dc.Seat.Where(x => x.status == 2);
                 seats = seats.Where(x => x.unwarn == null);
                 seats = seats.Where(x => x.paying == null || !x.paying.Value);
                 seats = seats.Where(x => x.ordering == null || !x.ordering.Value);
                 foreach (Seat seat in seats)
                 {
                     if (tl != -1 && (DateTime.Now - seat.openTime.Value).TotalHours >= tl)
                     {
                         seat.status = 6;
                         continue;
                     }
                     if (ml != "" && get_seat_expense(dc, seat) >= Convert.ToDouble(ml))
                     {
                         seat.status = 6;
                         continue;
                     }
                 }
             }
             dc.SubmitChanges();
             Thread.Sleep(5 * 60 * 1000);
         }
         catch
         {
         }
     }
 }
Ejemplo n.º 3
0
        //轮询订单数据库,查看是否需要添加
        private void check_Orders()
        {
            //var dao = new DAO(connectionString);
            var dc = new WatcherDBDataContext(connectionString);
            TransactionOptions transOptions = new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted };
            using (new TransactionScope(TransactionScopeOption.Required, transOptions))
            {
                var all_menus = dc.Menu.Where(x => x.addAutomatic);
                var menus = all_menus.Select(x => x.name).ToList();//需要自动续费的项目名称
                var orders = dc.Orders.Where(x => menus.Contains(x.menu) && !x.paid && x.deleteEmployee == null &&
                    x.stopTiming == null);
                var seats = dc.Seat.Where(x => x.status == 2 || x.status == 6 || x.status == 7);
                seats = seats.Where(x => x.ordering == null || !x.ordering.Value);
                seats = seats.Where(x => x.paying == null || !x.paying.Value);
                foreach (var seat in seats)
                {
                    var seat_orders = orders.Where(x => x.text == seat.text);
                    var add_menus = seat_orders.Select(x => x.menu).Distinct();
                    foreach (var add_menu in add_menus)
                    {
                        var add_orders = seat_orders.Where(x => x.menu == add_menu && (x.priceType == null || x.priceType != "停止消费"));
                        if (add_orders.Count() == 0)
                            continue;

                        var max_time = add_orders.Max(x => x.inputTime);
                        var max_order = add_orders.OrderByDescending(x => x.inputTime).FirstOrDefault();
                        if (max_order == null || max_order.priceType == "每小时")
                            continue;

                        var the_menu = all_menus.FirstOrDefault(x => x.name == add_menu);
                        double menu_time = the_menu.timeLimitHour.Value*60 + the_menu.timeLimitMiniute.Value;
                        if ((the_menu.timeLimitType == null || the_menu.timeLimitType == "限时长") &&
                            (DateTime.Now - max_order.inputTime).TotalMinutes < menu_time)
                            continue;
                        else if ((the_menu.timeLimitType != null && the_menu.timeLimitType == "限时间"))
                        {
                            DateTime dt = DateTime.Parse(DateTime.Now.ToLongDateString() + " "
                                + the_menu.timeLimitHour.ToString() + ":"
                                + the_menu.timeLimitMiniute.ToString() + ":00");

                            DateTime dt_st = DateTime.Parse(DateTime.Now.ToLongDateString() + " 8:00:00");

                            if (!(max_order.inputTime <= dt_st && DateTime.Now>=dt))
                                continue;
                        }

                        if (the_menu.addType == "按项目单位")
                        {
                            Orders new_order = new Orders();
                            new_order.menu = max_order.menu;
                            new_order.text = max_order.text;
                            new_order.systemId = seat.systemId;
                            new_order.number = 1;
                            new_order.money = the_menu.price;
                            new_order.technician = max_order.technician;
                            new_order.techType = max_order.techType;
                            new_order.inputTime = DateTime.Now;
                            new_order.inputEmployee = "电脑加收";
                            new_order.paid = false;

                            //如果这个检查手牌的状态在进SeatExpenseForm之前,但是subitchanges在进SeatExpenseForm之后,
                            //那么dgvExpense将会看不到超时浴资
                            dc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, seat);
                            if ((seat.status == 2 || seat.status == 6 || seat.status == 7) &&
                                (seat.paying == null || !seat.paying.Value) &&
                                (seat.ordering == null || !seat.ordering.Value))
                            {
                                dc.Orders.InsertOnSubmit(new_order);
                                //dc.SubmitChanges();
                            }
                            //string cmd_str = @" declare @status int"
                            //    + @" declare @ordering bit, @paying bit"
                            //    + @" select @status=status, @paying=paying, @ordering=ordering from [Seat] where text='"
                            //    + seat.text + "'"
                            //    + @" if (@status=2 or @status=6 or @status=7) and (@paying is null or @paying=0) and (@ordering is null or @ordering=0)"
                            //    + @" insert into [Orders](menu,text,systemId,number,money,technician,techType,inputTime,inputEmployee,paid)"
                            //    + @"values('" + max_order.menu + "','" + max_order.text + "','" + seat.systemId + "',1," + the_menu.price + ",";
                            //if (max_order.technician == null)
                            //    cmd_str += "null";
                            //else
                            //    cmd_str += "'" + max_order.technician + "'";

                            //if (max_order.techType == null)
                            //    cmd_str += ",null";
                            //else
                            //    cmd_str += ",'" + max_order.techType + "'";

                            //cmd_str += ",getdate(),'电脑加收','False')";
                            //dao.execute_command(cmd_str);
                        }
                        else if (the_menu.addType == "按时间")
                        {
                            //string cmd_str = @" declare @status int"
                            //    + @" declare @ordering bit, @paying bit"
                            //    + @" select @status=status, @paying=paying, @ordering=ordering from [Seat] where text='"
                            //    + seat.text + "'"
                            //    + @" if (@status=2 or @status=6 or @status=7) and (@paying is null or @paying=0) and (@ordering is null or @ordering=0)"
                            //    + @" insert into [Orders](menu,text,systemId,number,priceType,money,technician,techType,inputTime,inputEmployee,paid)"
                            //    + @"values('" + max_order.menu + "','" + max_order.text + "','" + seat.systemId + "',1,'每小时'," +
                            //    Convert.ToDouble(the_menu.addMoney) + ",";
                            //if (max_order.technician == null)
                            //    cmd_str += "null";
                            //else
                            //    cmd_str += "'" + max_order.technician + "'";

                            //if (max_order.techType == null)
                            //    cmd_str += ",null";
                            //else
                            //    cmd_str += ",'" + max_order.techType + "'";

                            //cmd_str += ",getdate(),'电脑加收','False')";
                            //dao.execute_command(cmd_str);
                            Orders new_order = new Orders();
                            new_order.menu = max_order.menu;
                            new_order.text = max_order.text;
                            new_order.systemId = seat.systemId;
                            new_order.number = 1;
                            new_order.priceType = "每小时";
                            new_order.money = Convert.ToDouble(the_menu.addMoney);
                            new_order.technician = max_order.technician;
                            new_order.techType = max_order.techType;
                            new_order.inputTime = DateTime.Now;
                            new_order.inputEmployee = "电脑加收";
                            new_order.paid = false;

                            dc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, seat);
                            if ((seat.status == 2 || seat.status == 6 || seat.status == 7) &&
                                (seat.paying == null || !seat.paying.Value) &&
                                (seat.ordering == null || !seat.ordering.Value))
                            {
                                dc.Orders.InsertOnSubmit(new_order);
                                //dc.SubmitChanges();
                            }
                        }
                    }
                }
            }
            dc.SubmitChanges();
        }
Ejemplo n.º 4
0
        private void MainWindow_Load(object sender, EventArgs e)
        {
            var db = new WatcherDBDataContext(connectionString);
            if (!db.DatabaseExists())
            {
                MessageBox.Show("连接IP不对或者网络不通,请重试!");
                this.Close();
                return;
            }

            m_thread_order = new Thread(new ThreadStart(orderTimer_Elapsed));
            m_thread_order.IsBackground = true;
            m_thread_order.Start();

            m_thread_unnormal = new Thread(new ThreadStart(seatTimer_Elapsed));
            m_thread_unnormal.IsBackground = true;
            m_thread_unnormal.Start();

            timeLimit.Text = get_config_by_key("time_limit");
            moneyLimit.Text = get_config_by_key("money_limit");

            if (timeLimit.Text != "")
                tl = Convert.ToInt32(timeLimit.Text);
            ml = moneyLimit.Text;

            m_thread_clearMemory = new Thread(new ThreadStart(clear_Memory));
            m_thread_clearMemory.IsBackground = true;
            m_thread_clearMemory.Start();

            this.WindowState = FormWindowState.Minimized;
        }
Ejemplo n.º 5
0
        //获取手牌消费金额
        public double get_seat_expense(WatcherDBDataContext dc, Seat seat)
        {
            var orders = dc.Orders.Where(x => x.systemId == seat.systemId && x.deleteEmployee == null && !x.paid);
            double money = 0;

            var tmp_orders = orders.Where(x => x.priceType == null || x.priceType == "停止消费");
            if (tmp_orders.Count() != 0)
                money = tmp_orders.Sum(x => x.money);

            tmp_orders = orders.Where(x => x.priceType == "每小时");
            if (tmp_orders.Count() != 0)
                money += tmp_orders.Sum(x => x.money * Math.Ceiling((DateTime.Now - x.inputTime).TotalHours));

            return Math.Round(money, 0);
        }