/// <summary> /// 保存按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button_Click_Save(object sender, RoutedEventArgs e) { SkeletonLengthEntity skeletonLengthEntity = new SkeletonLengthEntity(); skeletonLengthEntity.Fk_member_id = Pk_User_Id; if (Weigth.Text != null && Weigth.Text != "") { skeletonLengthEntity.Weigth = System.Convert.ToDouble(Weigth.Text); } skeletonLengthEntity.Height = System.Convert.ToDouble(Man_Height.Text); skeletonLengthEntity.Shoulder_width = System.Convert.ToDouble(Shoulder_width.Text); skeletonLengthEntity.Arm_length_up = System.Convert.ToDouble(Arm_length_up.Text); skeletonLengthEntity.Arm_length_down = System.Convert.ToDouble(Arm_length_down.Text); skeletonLengthEntity.Leg_length_up = System.Convert.ToDouble(Leg_length_up.Text); skeletonLengthEntity.Leg_length_down = System.Convert.ToDouble(Leg_length_down.Text); skeletonLengthEntity.Body_length = System.Convert.ToDouble(Body_length.Text); if (skeletonLengthDAO.getSkeletonLengthRecord(Pk_User_Id) == null) { skeletonLengthDAO.insertSkeletonLengthRecord(skeletonLengthEntity); } else { if (Weigth.Text != null && Weigth.Text != "") { skeletonLengthDAO.updateSkeletonLengthAndWeightRecord(skeletonLengthEntity); } else { skeletonLengthDAO.updateSkeletonLengthRecord(skeletonLengthEntity); } } MessageBoxX.Info("保存成功"); }
/// <summary> /// 页面加载 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Window_Loaded(object sender, RoutedEventArgs e) { //取消窗体X操作 var hwnd = new System.Windows.Interop.WindowInteropHelper(this).Handle; SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU); SkeletonLengthEntity skeletonLengthEntity = new SkeletonLengthEntity(); skeletonLengthEntity = skeletonLengthDAO.GetByPk_User_Id(SelectUser.Pk_User_Id); if (skeletonLengthEntity != null) { if (skeletonLengthEntity.Weigth > 0) { Weigth.Text = skeletonLengthEntity.Weigth.ToString(); } Man_Height.Text = skeletonLengthEntity.Height.ToString(); Shoulder_width.Text = skeletonLengthEntity.Shoulder_width.ToString(); Arm_length_up.Text = skeletonLengthEntity.Arm_length_up.ToString(); Arm_length_down.Text = skeletonLengthEntity.Arm_length_down.ToString(); Leg_length_up.Text = skeletonLengthEntity.Leg_length_up.ToString(); Leg_length_down.Text = skeletonLengthEntity.Leg_length_down.ToString(); Body_length.Text = skeletonLengthEntity.Body_length.ToString(); } }
//确认按钮,关闭此窗体 private void Button_OK(object sender, RoutedEventArgs e) { //this.Hide(); NuitrackScan nuitrackScan = new NuitrackScan { Owner = Window.GetWindow(this), ShowActivated = true, ShowInTaskbar = false, WindowStartupLocation = WindowStartupLocation.CenterScreen }; SkeletonLengthDAO skeletonLengthDAO = new SkeletonLengthDAO(); NuitrackEntity nuitrackEntity = new NuitrackEntity(); //if (skeletonLengthDAO.GetPk_user_idByStatus(1) == null) //{ // this.Hide(); // nuitrackScan.ShowDialog(); // G_NfcTipTwoStatus = 0; // this.Close(); // return; //} if (skeletonLengthDAO.GetPk_user_idByStatus(1) != null) { nuitrackEntity = skeletonLengthDAO.GetPk_user_idByStatus(1); nuitrackScan.Pk_User_Id = nuitrackEntity.Fk_user_id; skeletonLengthDAO.updateStatusByFk_user_id(nuitrackEntity); } SkeletonLengthEntity skeletonLengthEntity = new SkeletonLengthEntity(); if (skeletonLengthDAO.GetByPk_User_Id(nuitrackScan.Pk_User_Id) != null) { skeletonLengthEntity = skeletonLengthDAO.GetByPk_User_Id(nuitrackScan.Pk_User_Id); if (skeletonLengthEntity.Weigth > 0) { nuitrackScan.Weigth.Text = skeletonLengthEntity.Weigth.ToString(); } nuitrackScan.Man_Height.Text = skeletonLengthEntity.Height.ToString(); nuitrackScan.Shoulder_width.Text = skeletonLengthEntity.Shoulder_width.ToString(); nuitrackScan.Arm_length_up.Text = skeletonLengthEntity.Arm_length_up.ToString(); nuitrackScan.Arm_length_down.Text = skeletonLengthEntity.Arm_length_down.ToString(); nuitrackScan.Leg_length_up.Text = skeletonLengthEntity.Leg_length_up.ToString(); nuitrackScan.Leg_length_down.Text = skeletonLengthEntity.Leg_length_down.ToString(); nuitrackScan.Body_length.Text = skeletonLengthEntity.Body_length.ToString(); } //this.Hide(); nuitrackScan.ShowDialog(); G_NfcTipTwoStatus = 0; //this.Close(); Application.Current.Shutdown(); }
public SkeletonLengthDTO(SkeletonLengthEntity skeletonLengthEntity) { this.Id = skeletonLengthEntity.Id.ToString(); this.FkMemberId = skeletonLengthEntity.Fk_member_id.ToString(); this.BodyLength = skeletonLengthEntity.Body_length.ToString(); this.ShoulderWidth = skeletonLengthEntity.Shoulder_width.ToString(); this.ArmLengthUp = skeletonLengthEntity.Arm_length_up.ToString(); this.ArmLengthDown = skeletonLengthEntity.Arm_length_down.ToString(); this.LegLengthUp = skeletonLengthEntity.Leg_length_up.ToString(); this.LegLengthDown = skeletonLengthEntity.Leg_length_down.ToString(); }
/// <summary> /// 根据3D扫描的到的用户身体数据更新个人设置的通配参数:座位高度、靠背距离、踏板距离 /// </summary> public void UpdatePersonalSettingBy3DScan() { using (TransactionScope ts = new TransactionScope()) { //1.首先得到用户的身体长度数据 根据会员id统一更新座位高度、靠背距离、踏板长度 string memberPK = CommUtil.GetSettingString("memberPrimarykey"); string coachId = CommUtil.GetSettingString("coachId"); string fkmemberId = (memberPK != null && memberPK != "") ? memberPK : coachId; string memberId = CommUtil.GetSettingString("memberId"); //根据当前登陆用户主键PK查询扫描数据 SkeletonLengthEntity skeletonLengthEntity = skeletonLengthDAO.getSkeletonLengthRecord(fkmemberId); //计算公式:y=K*X+B ==> 设备参数 = k * 用户某一部位长度 + 常量 具体取值多少合适需要结合实际测试。可能不同的参数需要不同的K和B 根据实际情况修改也可 double K = 2.7; //后方限制系数 double M = 0.5; //前方限制系数 double B = 0; //常量 var personalSettingEntity = new PersonalSettingEntity { Member_id = memberId, //基于小腿计算座位高度 Seat_height = (int?)Math.Round(K * skeletonLengthEntity.Leg_length_down + B), //靠背距离基于大腿长 Backrest_distance = (int?)Math.Round(K * skeletonLengthEntity.Leg_length_up + B), //踏板距离基于小腿长 Footboard_distance = (int?)Math.Round(K * skeletonLengthEntity.Leg_length_down + B), }; personalSettingDAO.UpdatePersonalSettingBy3DScan(personalSettingEntity); //2.根据会员id,设备编码,单独更新每一种设备的前后方限制、杠杆角度(如果有的话) //0:腿部推蹬机 var personalSetting0 = new PersonalSettingEntity { Member_id = memberId, //腿部推蹬机 Device_code = "0", //基于大腿加小腿来设置前后方限制 Back_limit = (int?)Math.Round(M * (skeletonLengthEntity.Leg_length_up + skeletonLengthEntity.Leg_length_down) + B), //前方限制 Front_limit = (int?)Math.Round(K * (skeletonLengthEntity.Leg_length_up + skeletonLengthEntity.Leg_length_down) + B), }; personalSettingDAO.UpdateLimitByType(personalSetting0); //1:坐式背阔肌高拉机 基于大臂加小臂来设置前后方限制 var personalSetting1 = new PersonalSettingEntity { Member_id = memberId, Device_code = "1", //后方限制 Back_limit = (int?)Math.Round(M * (skeletonLengthEntity.Arm_length_up + skeletonLengthEntity.Arm_length_down) + B), //前方限制 Front_limit = (int?)Math.Round(K * (skeletonLengthEntity.Arm_length_up + skeletonLengthEntity.Arm_length_down) + B), }; personalSettingDAO.UpdateLimitByType(personalSetting1); //2:三头肌训练机 基于小臂来设置前后方限制 var personalSetting2 = new PersonalSettingEntity { Member_id = memberId, Device_code = "2", Back_limit = (int?)Math.Round(M * (skeletonLengthEntity.Arm_length_down) + B), Front_limit = (int?)Math.Round(K * (skeletonLengthEntity.Arm_length_down) + B), }; personalSettingDAO.UpdateLimitByType(personalSetting2); //3:腿部内弯机 比较特殊,两腿夹着垫子向内用力合拢 感觉和肢体数据无关 前后方限制为张开的角度,前方限制角度小 后方限制可以合拢成90度 暂且先这么写 var personalSetting3 = new PersonalSettingEntity { Member_id = memberId, Device_code = "3", //前方限制 Front_limit = 75, //后方限制 Back_limit = 0, }; personalSettingDAO.UpdateLimitByType(personalSetting3); //4:腿部外弯机 比较特殊,垫子夹着两腿,两腿用力向外张开 感觉和肢体数据无关 前后方限制为张开的角度,前方限制角度小 暂且先这么写 var personalSetting4 = new PersonalSettingEntity { Member_id = memberId, Device_code = "3", //前方限制 Front_limit = 75, //后方限制 Back_limit = 20, }; personalSettingDAO.UpdateLimitByType(personalSetting4); //5:蝴蝶机 向胸前内拉 var personalSetting5 = new PersonalSettingEntity { Member_id = memberId, Device_code = "5", //前方限制 Front_limit = 90, //后方限制 Back_limit = 0, }; personalSettingDAO.UpdateLimitByType(personalSetting5); //6:反向蝴蝶机 向外张开拉 var personalSetting6 = new PersonalSettingEntity { Member_id = memberId, Device_code = "6", //前方限制 Front_limit = 90, //后方限制 Back_limit = 0, }; personalSettingDAO.UpdateLimitByType(personalSetting6); //7:坐式背部伸展机器 var personalSetting7 = new PersonalSettingEntity { Member_id = memberId, Device_code = "7", //前方限制 大概往前弯腰50度 Front_limit = 50, //后方限制 Back_limit = 0, //杠杆角度根据人体躯干长 Lever_angle = (int?)Math.Round(K * (skeletonLengthEntity.Body_length) + B), }; personalSettingDAO.UpdateLimitByType(personalSetting7); //8:躯干扭转组合 var personalSetting8 = new PersonalSettingEntity { Member_id = memberId, Device_code = "8", //前方限制 Front_limit = 60, //后方限制 Back_limit = 20, }; personalSettingDAO.UpdateLimitByType(personalSetting8); //9:坐式腿伸展训练机 var personalSetting9 = new PersonalSettingEntity { Member_id = memberId, Device_code = "9", //前方限制 Front_limit = 60, //后方限制 Back_limit = 20, //杠杆角度根据小腿长 Lever_angle = (int?)Math.Round(K * (skeletonLengthEntity.Leg_length_down) + B), }; personalSettingDAO.UpdateLimitByType(personalSetting9); //10:坐式推胸机 根据大臂加小臂 var personalSetting10 = new PersonalSettingEntity { Member_id = memberId, Device_code = "10", //前方限制 Front_limit = (int?)Math.Round(K * (skeletonLengthEntity.Arm_length_up + skeletonLengthEntity.Arm_length_down) + B), //后方限制 Back_limit = (int?)Math.Round(M * (skeletonLengthEntity.Arm_length_up + skeletonLengthEntity.Arm_length_down) + B), }; personalSettingDAO.UpdateLimitByType(personalSetting10); //11:坐式划船机 根据大臂加小臂 var personalSetting11 = new PersonalSettingEntity { Member_id = memberId, Device_code = "11", //前方限制 Front_limit = (int?)Math.Round(K * (skeletonLengthEntity.Arm_length_up + skeletonLengthEntity.Arm_length_down) + B), //后方限制 Back_limit = (int?)Math.Round(M * (skeletonLengthEntity.Arm_length_up + skeletonLengthEntity.Arm_length_down) + B), }; personalSettingDAO.UpdateLimitByType(personalSetting11); //12:椭圆跑步机不用设置 //13:坐式屈腿训练机 var personalSetting13 = new PersonalSettingEntity { Member_id = memberId, Device_code = "13", //前方限制 Front_limit = 60, //后方限制 Back_limit = 20, //杠杆角度根据小腿长 Lever_angle = (int?)Math.Round(K * (skeletonLengthEntity.Leg_length_down) + B), }; personalSettingDAO.UpdateLimitByType(personalSetting13); //14:腹肌训练机 var personalSetting14 = new PersonalSettingEntity { Member_id = memberId, Device_code = "14", //前方限制 Front_limit = 100, //后方限制 Back_limit = 20, //杠杆角度根据躯干长 Lever_angle = (int?)Math.Round(K * (skeletonLengthEntity.Body_length) + B), }; personalSettingDAO.UpdateLimitByType(personalSetting14); //15:坐式背部伸展机器 var personalSetting15 = new PersonalSettingEntity { Member_id = memberId, Device_code = "15", //前方限制 大概往前弯腰50度 Front_limit = 50, //后方限制 Back_limit = 0, //杠杆角度根据人体躯干长 Lever_angle = (int?)Math.Round(K * (skeletonLengthEntity.Body_length) + B), }; personalSettingDAO.UpdateLimitByType(personalSetting15); ts.Complete(); } }
///// <summary> /// 处理登录请求 /// </summary> /// <param name="request"></param> public LoginResponse HandleLoginRequest(LoginRequest request) { LoginResponse response = new LoginResponse(); //根据bind_id查询到Uerid UserRelation userRelation = userRelationDao.FindUserRelationByBind_id(request.BindId); if (userRelation == null) { logger.Info("数据库中没有对应的手环id"); response.InfoResponse = 0; return(response); } string uid = (userRelation.Fk_user_id).ToString(); response.Uid = uid; response.ExisitSetting = false; response.ClientTime = request.ClientTime; response.ServerTime = DateTime.Now.ToString(); //查询用户是否存在,若不存在 。。。打印日志 User user = userDAO.GetByPK(uid); if (user != null) { logger.Info("用户存在" + user.Pk_User_Id.ToString()); logger.Info("锻炼设备id" + (int)(request.DeviceType)); string birth_year = (user.User_Birth.ToString().Split('/'))[0]; //Console.WriteLine("birth_year:" + birth_year); int now_year = int.Parse((DateTime.Now.ToString("yyyy"))); //Console.WriteLine("now_year:" + DateTime.Now.ToString()); response.Age = now_year - int.Parse(birth_year); SkeletonLengthEntity skeletonLengthEntity = skeletonLengthDAO.getSkeletonLengthRecord(int.Parse(uid)); if (skeletonLengthEntity != null) { response.Weight = skeletonLengthEntity.Weigth; } else { response.Weight = 0; } response.UserName = user.User_Name; } else { //Console.WriteLine("用户存在"); logger.Info("用户不存在"); response.InfoResponse = 0; return(response); } //查询用户此台设备是否存在个人设置,如果不存在,为其增加此设备的个人设置 var pSetting = personalSettingDAO.GetSettingByMemberId(uid, ((int)request.DeviceType).ToString()); if (pSetting != null) {//存在个人设置 response.ExisitSetting = true; response.TrainMode = (TrainMode)Enum.Parse(typeof(TrainMode), pSetting.Training_mode); response.SeatHeight = pSetting.Seat_height == null ? 0 : (int)pSetting.Seat_height; response.BackDistance = pSetting.Backrest_distance == null ? 0 : (int)pSetting.Backrest_distance; response.FootboardDistance = pSetting.Footboard_distance == null ? 0 : (int)pSetting.Backrest_distance; response.LeverAngle = pSetting.Lever_angle == null ? 0 : (double)pSetting.Lever_angle; response.ForwardLimit = pSetting.Front_limit == null ? 0 : (int)pSetting.Front_limit; response.BackLimit = pSetting.Back_limit == null ? 0 : (int)pSetting.Back_limit; response.ConsequentForce = pSetting.Consequent_force == null ? 0 : (double)pSetting.Consequent_force; response.ReverseForce = pSetting.Reverse_force == null ? 0 : (double)pSetting.Reverse_force; response.Power = pSetting.Power == null ? 0 : (double)pSetting.Power; } else { logger.Info("用户不存在个人设置,自创建个人设置未生效"); return(response); } //查询此用户是否有未做大处方 List <TrainInfo> trainInfos = trainService.GetTrainInfosByUserId(int.Parse(uid)); int use_trainfo_number = 0; if (trainInfos != null) { int no_use_trainfos = 0; for (int i = 0; i < trainInfos.Count; i++) { if (trainInfos[i].Status == 0) { use_trainfo_number = i; var trainInfo_id = trainInfos[i].Pk_TI_Id; var ds_id = (int)(request.DeviceType); //根据traininfo_id和设备id获取处方信息 entity.newEntity.NewDevicePrescription newDevicePrescription = trainService.GetDevicePrescriptionByTiIdAndDsId(trainInfo_id, ds_id); if (newDevicePrescription != null) { if (newDevicePrescription.Dp_status == 0) { //有大处方,有此设备的训练计划,,没完成 response.DpStatus = 0; response.DpMoveway = (int)newDevicePrescription.Dp_moveway; response.DpMemo = newDevicePrescription.Dp_memo; response.DpGroupcount = (int)newDevicePrescription.Dp_groupcount; response.DpGroupnum = (int)newDevicePrescription.Dp_groupnum; response.DpRelaxtime = (int)newDevicePrescription.Dp_relaxtime; response.SpeedRank = newDevicePrescription.Speed_rank == null ? 0 : (int)(newDevicePrescription.Speed_rank); response.DpId = (int)newDevicePrescription.Pk_dp_id; response.InfoResponse = 7; } else { //有大处方,有此设备的训练计划,,完成了 response.DpStatus = 1; response.InfoResponse = 6; } } else { //有大处方,无此设备的训练计划 response.InfoResponse = 5; return(response); } break; } else { no_use_trainfos += 1; } } if (no_use_trainfos == trainInfos.Count) { logger.Info("大处方已完成或者废弃了" + uid); response.InfoResponse = 3; } } else { logger.Info("用户没有设置大处方"); response.InfoResponse = 1; return(response); } //当前系统版本 Setter setter = setterService.getSetter(); if (setter != null) { var ver = setter.Set_Version; response.SysVersion = ver; } else { logger.Info("无系统版本"); response.SysVersion = "null"; return(response); } // 待训练列表 // List<DeviceType> todoDevices = GenToDoDevices(trainInfos[use_trainfo_number].Pk_TI_Id); List <DeviceType> todoDevices = GenToDoDevicesTwo(trainInfos[use_trainfo_number].Pk_TI_Id); response.DeviceTypeArr.AddRange(todoDevices); return(response); }