.NETAdmin/ZR.Service/Business/CamWorkersService.cs
2025-08-20 00:59:04 +08:00

115 lines
3.5 KiB
C#

using Infrastructure.Attribute;
using Infrastructure.Extensions;
using ZR.Model.Business.Dto;
using ZR.Model.Business;
using ZR.Repository;
using ZR.Service.Business.IBusinessService;
namespace ZR.Service.Business
{
/// <summary>
/// 月报表Service业务层处理
/// </summary>
[AppService(ServiceType = typeof(ICamWorkersService), ServiceLifetime = LifeTime.Transient)]
public class CamWorkersService : BaseService<CamWorkers>, ICamWorkersService
{
private readonly ICamWorkrecordService _camWorkrecordService;
private readonly ICamWorkerService _camWorkerService;
public CamWorkersService(ICamWorkrecordService camWorkrecordService, ICamWorkerService camWorkerService)
{
_camWorkrecordService = camWorkrecordService;
_camWorkerService = camWorkerService;
}
/// <summary>
/// 查询月报表列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public List<WorkerMonthlyWorkDays> GetList(CamWorkersQueryDto parm)
{
string where = "";
if (!string.IsNullOrEmpty(parm.WorkerName))
{
where += $" and w.WorkerName like '%{parm.WorkerName}%'";
}
if (parm.YearMonth != null)
{
where += $" and CONVERT(varchar(7), CAST(r.RecordTime AS date), 120) = '{parm.YearMonth}'";
}
var predicate = QueryExp(parm);
var list = Context.Ado.SqlQuery<WorkerMonthlyWorkDays>($@"
SELECT
r.DeptName,
w.WorkerName,
CONVERT(varchar(7), CAST(r.RecordTime AS date), 120) AS YearMonth,
COUNT(DISTINCT CAST(r.RecordTime AS date)) AS WorkDays
FROM cam_worker w
LEFT JOIN cam_workrecord r ON w.workrecordId = r.Id where r.RecordTime is not null {where}
GROUP BY
r.DeptName,
w.WorkerName,
CONVERT(varchar(7), CAST(r.RecordTime AS date), 120)
ORDER BY
r.DeptName,
w.WorkerName,
YearMonth
");
//.Where(predicate.ToExpression())
//var response = Queryable()
// //.OrderBy("WorkerName asc")
// .Where(predicate.ToExpression())
// .ToPage<CamWorkers, CamWorkersDto>(parm);
return list;
}
/// <summary>
/// 获取详情
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public CamWorkers GetInfo(long Id)
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
return response;
}
/// <summary>
/// 添加月报表
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public CamWorkers AddCamWorkers(CamWorkers model)
{
return Insertable(model).ExecuteReturnEntity();
}
/// <summary>
/// 导出月报表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public List<WorkerMonthlyWorkDays> ExportList(CamWorkersQueryDto parm)
{
return GetList(parm);
}
/// <summary>
/// 查询导出表达式
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
private static Expressionable<CamWorkrecord> QueryExp(CamWorkersQueryDto parm)
{
var predicate = Expressionable.Create<CamWorkrecord>();
return predicate;
}
}
}