You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

178 lines
7.8 KiB
C#

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
{
/// <summary>
/// RFID打卡业务逻辑类
/// </summary>
public class RfidHandleBusniess
{
private IRecordStaffAttendanceService _recordStaffAttendanceService;
private IRecordStaffCommuteService _recordStaffCommuteService;
private IRecordStaffRealTimeService _recordStaffRealTimeService;
private string currentTime;
private string teamMembers = null;
private List<string> members = new List<string>();
public static string stationCode = "";
public static List<string> stationList;
public static string staffId = "";
public static string theNewAmount = "";
public RfidHandleBusniess(IRecordStaffAttendanceService recordStaffAttendanceService, IRecordStaffCommuteService recordStaffCommuteService, IRecordStaffRealTimeService recordStaffRealTimeService)
{
this._recordStaffAttendanceService = recordStaffAttendanceService;
this._recordStaffCommuteService = recordStaffCommuteService;
this._recordStaffRealTimeService = recordStaffRealTimeService;
}
/// <summary>
/// 处理并插入打卡记录
/// </summary>
/// <param name="staff"></param>
/// <param name="isCheckOn"></param>
/// <returns></returns>
public List<RecordStaffAttendance> 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);
}
/// <summary>
/// 处理并插入打卡记录(强退)
/// </summary>
/// <param name="staff"></param>
/// <param name="isCheckOn"></param>
/// <returns></returns>
public List<RecordStaffAttendance> 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);
}
/// <summary>
/// 处理上下班记录
/// </summary>
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")
};
_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);
}
}
/// <summary>
///
/// </summary>
/// <param name="baseStaffInfo"></param>
/// <returns></returns>
public string SpliceTeamMember()
{
teamMembers = "";
//RecordStaffAttendance recordStaffAttendance = _recordStaffAttendanceService.GetRecordStaffAttendanceByStaffId(baseStaffInfo.StaffId,stationCode);
List<RecordStaffRealTime> 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;
}
/// <summary>
/// 处理并插入实时打卡记录
/// </summary>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public List<RecordStaffRealTime> 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);
}
}
return _recordStaffRealTimeService.GetRecordStaffRealTime(stationCode);
}
}
}