diff --git a/SlnMesnac.WPF/ViewModel/EmployeeLoginViewModel.cs b/SlnMesnac.WPF/ViewModel/EmployeeLoginViewModel.cs index c6c54b6..b6d3c60 100644 --- a/SlnMesnac.WPF/ViewModel/EmployeeLoginViewModel.cs +++ b/SlnMesnac.WPF/ViewModel/EmployeeLoginViewModel.cs @@ -100,30 +100,56 @@ namespace SlnMesnac.WPF.ViewModel BaseStaffInfo user = baseStaffService.GetStaffInfoByCardId(cleanStr); if (user != null) { - string attendanceType = _recordStaffAttendanceService.GetRecordStaffAttendanceByStaffId(user.StaffId)?.AttendanceType; - if (attendanceType == "1") //下班卡 + RecordStaffAttendance recordStaffAttendance = _recordStaffAttendanceService.GetRecordStaffAttendanceByStaffId(user.StaffId); + var createTime = recordStaffAttendance.CreateTime; + var nowTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + TimeSpan timeDiff = DateTime.Parse(nowTime) - DateTime.Parse(createTime); + if(timeDiff.TotalHours >= 10)// { - if (attendanceType == status.ToString()) + if (recordStaffAttendance.AttendanceType == "1") //下班卡 { - StatusText = "未打上班卡,请联系管理员!"; + if (recordStaffAttendance.AttendanceType == status.ToString()) + { + StatusText = "未打上班卡,请联系管理员!"; + } + } + else if (recordStaffAttendance.AttendanceType == "0") + { + if (recordStaffAttendance.AttendanceType == status.ToString()) + { + StatusText = "未打下班卡,请联系管理员!"; + } + } + StaffIdText = user.StaffId; + CheckStatus = user.StaffName + " " + user.TeamCode + " 打卡成功!"; + var list = _rfidHandleBusniess.HandleAndInsertStaffAttendance(user, isCheckOn); + System.Windows.Application.Current.Dispatcher.Invoke((Action)(async () => + { + RecordStaffAttendanceDataGrid.Clear(); + list.ForEach(item => { RecordStaffAttendanceDataGrid.Add(item); }); + })); + _rfidHandleBusniess.HandleStaffCommute(user, isCheckOn); + } + else + { + if (recordStaffAttendance.AttendanceType != status.ToString()) + { + StaffIdText = user.StaffId; + CheckStatus = user.StaffName + " " + user.TeamCode + " 打卡成功!"; + var list = _rfidHandleBusniess.HandleAndInsertStaffAttendance(user, isCheckOn); + System.Windows.Application.Current.Dispatcher.Invoke((Action)(async () => + { + RecordStaffAttendanceDataGrid.Clear(); + list.ForEach(item => { RecordStaffAttendanceDataGrid.Add(item); }); + })); + _rfidHandleBusniess.HandleStaffCommute(user, isCheckOn); + } + else + { + StatusText = "请勿重复打卡!"; } } - else if (attendanceType == "0") - { - if (attendanceType == status.ToString()) - { - StatusText = "未打下班卡,请联系管理员!"; - } - } - StaffIdText = user.StaffId; - CheckStatus = user.StaffName + " " + user.TeamCode + " 打卡成功!"; - var list = _rfidHandleBusniess.HandleAndInsertStaffAttendance(user,isCheckOn); - System.Windows.Application.Current.Dispatcher.Invoke((Action)(async () => - { - RecordStaffAttendanceDataGrid.Clear(); - list.ForEach(item => { RecordStaffAttendanceDataGrid.Add(item); }); - })); - _rfidHandleBusniess.HandleStaffCommute(user, isCheckOn); + } else { @@ -344,7 +370,7 @@ namespace SlnMesnac.WPF.ViewModel { for (int i = 0; i < uniqueStrings.Count; i++) { - if (uniqueStrings[i] == str && (DateTime.Now - timestamps[i]).TotalMinutes < 1) + if (uniqueStrings[i] == str && (DateTime.Now - timestamps[i]).TotalSeconds < 30) { return true; } @@ -352,7 +378,6 @@ namespace SlnMesnac.WPF.ViewModel return false; } - //public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged([CallerMemberName] string propertyName = "") { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); diff --git a/SlnMesnac.WPF/ViewModel/ExecuteViewModel.cs b/SlnMesnac.WPF/ViewModel/ExecuteViewModel.cs index c4d090f..8768944 100644 --- a/SlnMesnac.WPF/ViewModel/ExecuteViewModel.cs +++ b/SlnMesnac.WPF/ViewModel/ExecuteViewModel.cs @@ -37,11 +37,13 @@ namespace SlnMesnac.WPF.ViewModel private IRecordStaffAttendanceService _recordStaffAttendanceService; private string StationCode; public static bool isComplete = true; + private ProdPLanInfo pLanInfo; /// /// 按钮文字转换事件 /// - public event PropertyChangedEventHandler PropertyChanged; + public event PropertyChangedEventHandler PropertyChanged = delegate { }; + /// /// 检索命令 /// @@ -76,6 +78,8 @@ namespace SlnMesnac.WPF.ViewModel .SetBasePath(System.AppContext.BaseDirectory) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); IConfigurationRoot configuration = configurationBuilder.Build(); + pLanInfo = _prodPlanInfoService.GetRecordStaffAttendancesByConditions("", "", "", "", "1").FirstOrDefault(); + Refresh(pLanInfo); // 从配置文件中获取ProductLineNameTextBlock的值 stationTextBlock = configuration.GetSection("AppConfig")["ProductLineName"]; StationCode = configuration.GetSection("AppConfig")["ProductLineCode"]; @@ -97,7 +101,7 @@ namespace SlnMesnac.WPF.ViewModel } /// - /// 换班弹窗 + /// 报工弹窗 /// private void ProductionReport() { @@ -133,7 +137,7 @@ namespace SlnMesnac.WPF.ViewModel // 将当前记录存为实体,可以通过parameter获取当前记录的信息 string orderCode = _selectedRow.OrderCode.ToString(); string planCode = _selectedRow.PlanCode.ToString(); - ProdPLanInfo pLanInfo = _prodPlanInfoService.GetRecordStaffAttendancesByConditions(orderCode, planCode, "", "", "0").First(); + pLanInfo = _prodPlanInfoService.GetRecordStaffAttendancesByConditions(orderCode, planCode, "", "", "0").First(); RecordStaffAttendance currentRecord = _recordStaffAttendanceService.GetLastestOnRecord(); RecordStaffAttendance nextRecord = _recordStaffAttendanceService.GetLastestOffRecord(); // 向detail表里插入一条数据 @@ -162,7 +166,9 @@ namespace SlnMesnac.WPF.ViewModel //刷新明细 private void Refresh(ProdPLanInfo pLanInfo) { - ProdPlanDetail planDetail = _prodPlanDetailService.GetPlanDetailsByPlanCode(pLanInfo.PlanCode); + if(pLanInfo != null) + { + ProdPlanDetail planDetail = _prodPlanDetailService.GetPlanDetailsByPlanCode(pLanInfo.PlanCode); PlanCodeText = planDetail.PlanCode; OrderCodeText = pLanInfo.OrderCode; MaterialCodeText = planDetail.MaterialCode; @@ -172,6 +178,7 @@ namespace SlnMesnac.WPF.ViewModel ProdPLanDetailDataGrid.Clear(); ProdPLanDetailDataGrid.Add(planDetail); })); + } } #region diff --git a/SlnMesnac.WPF/ViewModel/ProductionReportViewModel.cs b/SlnMesnac.WPF/ViewModel/ProductionReportViewModel.cs index 27106e0..f206e91 100644 --- a/SlnMesnac.WPF/ViewModel/ProductionReportViewModel.cs +++ b/SlnMesnac.WPF/ViewModel/ProductionReportViewModel.cs @@ -131,7 +131,9 @@ namespace SlnMesnac.WPF.ViewModel double newAmountDouble = Convert.ToDouble(newAmount); double result = currentAmountDouble + newAmountDouble; planDetail.CompleteAmount = result.ToString(); + planInfo.CompleteAmount = result.ToString(); _prodPlanDetailService.Update(planDetail); + _prodPlanInfoService.Update(planInfo); Refresh(); NewAmountText = null; HintText = "已提交!"; @@ -151,7 +153,7 @@ namespace SlnMesnac.WPF.ViewModel } /// - /// 确认命令 + /// 结束工单命令 /// public ICommand EndPlanCommand { get; private set; } private void EndPlan() diff --git a/SlnMesnac.WPF/Views/HandOverWin.xaml b/SlnMesnac.WPF/Views/HandOverWin.xaml index 6ee74a0..652d63a 100644 --- a/SlnMesnac.WPF/Views/HandOverWin.xaml +++ b/SlnMesnac.WPF/Views/HandOverWin.xaml @@ -94,7 +94,7 @@ - + @@ -103,7 +103,7 @@ - +