using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using ConsoleApp; using KdbndpTypes; using Microsoft.Extensions.DependencyInjection; using SlnMesnac.Common; using SlnMesnac.Model.domain; using SlnMesnac.Model.dto; using SlnMesnac.Repository.service; namespace SlnMesnac.Business.business { /// /// RFID打卡业务逻辑类 /// public class RfidHandleBusniess { private IRecordStaffAttendanceService _recordStaffAttendanceService; private IRecordStaffCommuteService _recordStaffCommuteService; private IRecordStaffRealTimeService _recordStaffRealTimeService; private ProdPlanExecuteUserService _prodPlanExecuteUserService; private string currentTime; private string teamMembers = null; private List members = new List(); public static string stationCode = ""; public static List stationList; public static string staffId = ""; public static string theNewAmount = ""; public RfidHandleBusniess(IRecordStaffAttendanceService recordStaffAttendanceService, IRecordStaffCommuteService recordStaffCommuteService, IRecordStaffRealTimeService recordStaffRealTimeService, ProdPlanExecuteUserService prodPlanExecuteUserService) { this._recordStaffAttendanceService = recordStaffAttendanceService; this._recordStaffCommuteService = recordStaffCommuteService; this._recordStaffRealTimeService = recordStaffRealTimeService; _prodPlanExecuteUserService = prodPlanExecuteUserService; } /// /// 处理并插入打卡记录 /// /// /// /// public List HandleAndInsertStaffAttendance(BaseStaffInfo staff,int isCheckOn) { RecordStaffAttendance recordStaffAttendance = new RecordStaffAttendance { StaffId = staff.StaffId, AttendanceType = isCheckOn.ToString(), TeamCode = staff.TeamCode, Remark = staff.Remark, CreateBy = staff.StaffName, CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), StationCode = stationCode }; _recordStaffAttendanceService.Insert(recordStaffAttendance); return _recordStaffAttendanceService.GetRecordStaffAttendances(stationCode); } /// /// 处理并插入打卡记录(强退) /// /// /// /// public List HandleAndInsertRemove(BaseStaffInfo staff, int isCheckOn) { RecordStaffAttendance recordStaffAttendance = new RecordStaffAttendance { StaffId = staff.StaffId, AttendanceType = isCheckOn.ToString(), TeamCode = staff.TeamCode, Remark = staffId, CreateBy = staff.StaffName, CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), StationCode = stationCode }; _recordStaffAttendanceService.Insert(recordStaffAttendance); return _recordStaffAttendanceService.GetRecordStaffAttendances(stationCode); } /// /// 处理上下班记录 /// public void HandleStaffCommute(BaseStaffInfo staff, int isCheckOn) { if(isCheckOn == 0) { RecordStaffCommute recordStaffCommute = new RecordStaffCommute { StaffId = staff.StaffId, TeamCode = staff.TeamCode, //Classes = StartWorkTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Remark = staff.Remark, CreateBy = staff.StaffName, CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), StationCode = stationCode }; _recordStaffCommuteService.Insert(recordStaffCommute); } else { currentTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //根据id和上班时间不超过九小时的查找对应记录 RecordStaffCommute recordStaffCommute = _recordStaffCommuteService.GetStaffCommuteByIdAndDuration(staff.StaffId, currentTime); //更新这个记录的下班打卡时间和在班时长率 recordStaffCommute.EndWorkTime = currentTime; recordStaffCommute.ClockingRatio = Convert.ToDecimal((DateTime.Parse(recordStaffCommute.EndWorkTime) - DateTime.Parse(recordStaffCommute.StartWorkTime)).TotalHours); _recordStaffCommuteService.Update(recordStaffCommute); } } /// /// /// /// /// public string SpliceTeamMember() { teamMembers = ""; //RecordStaffAttendance recordStaffAttendance = _recordStaffAttendanceService.GetRecordStaffAttendanceByStaffId(baseStaffInfo.StaffId,stationCode); List recordStaffRealTimeList = _recordStaffRealTimeService.GetRecordStaffRealTime(stationCode); //string type = recordStaffAttendance.AttendanceType; //if (type == "0")//上班,添加员工名字转成字符串 //{ // members.Add(baseStaffInfo.StaffName); // Add the staff member's name to the list // teamMembers = string.Join(" // ", members); // Convert the list of names to a string separated by commas //} //else if (type == "1")//下班,删除下班员工的名字再转为字符串 //{ // members.Remove(baseStaffInfo.StaffName); // Remove the staff member's name from the list // teamMembers = string.Join(" // ", members); // Convert the updated list of names to a string separated by commas //} foreach(var item in recordStaffRealTimeList) { teamMembers += item.CreateBy + " / "; } return teamMembers; } /// /// 处理并插入实时打卡记录 /// /// /// public List HandleAndInsertStaffRealTime(BaseStaffInfo?staff,int isCheckOn) { if (staff != null) { if (isCheckOn == 0) { RecordStaffRealTime recordStaffRealTime = new RecordStaffRealTime { StaffId = staff.StaffId, AttendanceType = isCheckOn.ToString(), TeamCode = staff.TeamCode, Remark = staff.Remark, CreateBy = staff.StaffName, CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), StationCode = stationCode }; _recordStaffRealTimeService.Insert(recordStaffRealTime); } else if (isCheckOn == 1 || isCheckOn == 2) { var realTime = _recordStaffRealTimeService.Query(recordStaffRealTime => recordStaffRealTime.StaffId == staff.StaffId && recordStaffRealTime.StationCode == stationCode && recordStaffRealTime.AttendanceType == "0").FirstOrDefault(); _recordStaffRealTimeService.Delete(realTime); SetOffWorkTime(staff.StaffId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } } return _recordStaffRealTimeService.GetRecordStaffRealTime(stationCode); } /// /// 设置员工下班时间 /// public void SetOffWorkTime(string staffId, string dateTime) { _prodPlanExecuteUserService.SetExecuterOffWorkTime(staffId, dateTime); } } }