예제 #1
0
        /// <summary>
        /// 处理订单
        /// </summary>
        /// <param name="orderVo"></param>
        /// <param name="tempOrderList"></param>
        /// <param name="priceType"></param>
        /// <returns></returns>
        public static bool DealOrder(OrderInfoVo orderVo, List <TempOrderVo> tempOrderList, string priceType)
        {
            if (mySqlclient == null)
            {
                mySqlclient = MySqlClient.GetMySqlClient();
            }
            MySqlCommand    command    = new MySqlCommand();
            MySqlConnection connection = mySqlclient.GetConnect();

            connection.Open();
            MySqlTransaction transaction = connection.BeginTransaction();

            command.Connection  = connection;
            command.Transaction = transaction;
            //订单
            string sql = mySqlclient.GenerateInsertSql(orderVo);

            try
            {
                command.CommandText = sql;
                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                return(false);
            }
            //详细订单
            foreach (TempOrderVo tempVo in tempOrderList)
            {
                DetailedOrderVo detVo = new DetailedOrderVo();
                detVo.DetailID = GenrateIDUtil.GenerateDetailOrderID();
                detVo.OrderID  = orderVo.OrderID;
                detVo.SkillId  = tempVo.SkillId;
                detVo.Price    = SelectDao.GetSkillPriceDetail(tempVo.SkillName, tempVo.WorkType, priceType);
                double gstPrice = (detVo.Price * 6) / 106;
                detVo.Tax        = Math.Round(gstPrice, 2, MidpointRounding.AwayFromZero);
                detVo.TotalPrice = detVo.Price + detVo.Tax;
                detVo.StartTime  = tempVo.StartTime;
                detVo.EndTime    = tempVo.EndTime;
                detVo.CompanyId  = SystemConst.companyId;
                sql = mySqlclient.GenerateInsertSql(detVo);
                try
                {
                    command.CommandText = sql;
                    command.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    return(false);
                }
            }
            //员工工作状态
            foreach (TempOrderVo tempVo in tempOrderList)
            {
                sql = @"update StaffWork set StaffStatus='空闲',RoomId=null,RoomName='' where StaffID='" + tempVo.StaffID + "'" + ANDCOMPANYID;
                try
                {
                    command.CommandText = sql;
                    command.ExecuteNonQuery();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    return(false);
                }
            }
            //员工做工记录
            foreach (TempOrderVo tempVo in tempOrderList)
            {
                StaffWorkRecordVo recordVo = new StaffWorkRecordVo();
                recordVo.ID        = GenrateIDUtil.GenerateWorkRecordID();
                recordVo.StaffId   = tempVo.StaffID;
                recordVo.StaffName = SelectDao.SelectStaffNameByID(tempVo.StaffID);
                recordVo.OrderID   = orderVo.OrderID;
                recordVo.Amount    = orderVo.TotalPrice;
                recordVo.WorkTime  = DateTime.Now;
                recordVo.CompanyId = SystemConst.companyId;
                sql = mySqlclient.GenerateInsertSql(recordVo);
                try
                {
                    command.CommandText = sql;
                    command.ExecuteNonQuery();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    return(false);
                }
            }
            //房间状态
            foreach (TempOrderVo tempVo in tempOrderList)
            {
                sql = @"update Room set roomStatus='空闲' where RoomId=" + tempVo.RoomID + ANDCOMPANYID;
                try
                {
                    command.CommandText = sql;
                    command.ExecuteNonQuery();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    return(false);
                }
            }
            transaction.Commit();
            connection.Close();
            return(true);
        }