179 lines
6.5 KiB
C#
179 lines
6.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;
|
|
using ZR.ServiceCore.Services;
|
|
|
|
namespace ZR.Service.Business
|
|
{
|
|
/// <summary>
|
|
/// 工作记录Service业务层处理
|
|
/// </summary>
|
|
[AppService(ServiceType = typeof(ICamWorkrecordService), ServiceLifetime = LifeTime.Transient)]
|
|
public class CamWorkrecordService : BaseService<CamWorkrecord>, ICamWorkrecordService
|
|
{
|
|
|
|
private ICamWorkerService camWorkerService;
|
|
public CamWorkrecordService(ICamWorkerService camWorkerService)
|
|
{
|
|
this.camWorkerService = camWorkerService;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询工作记录列表
|
|
/// </summary>
|
|
/// <param name="parm"></param>
|
|
/// <returns></returns>
|
|
public PagedInfo<CamWorkrecordDto> GetList(CamWorkrecordQueryDto parm)
|
|
{
|
|
var predicate = QueryExp(parm);
|
|
|
|
var response = Queryable()
|
|
.OrderBy("Id desc")
|
|
.Where(predicate.ToExpression())
|
|
.ToPage<CamWorkrecord, CamWorkrecordDto>(parm);
|
|
var ids = response.Result.Select(it => it.Id).ToList();
|
|
if (ids != null && ids.Count > 0)
|
|
{
|
|
var works = camWorkerService.AsQueryable().Where(it => ids.Contains(it.WorkrecordId)).ToList();
|
|
response.Result.ForEach(item =>
|
|
{
|
|
var w = works.Where(it => it.WorkrecordId == item.Id).Select(it => new CamWorkersDto { WorkerName = it.WorkerName, Id = it.Id }).ToList();
|
|
item.Workers = w;
|
|
if (w.Count > 0)
|
|
{
|
|
item.Worker = string.Join(",", w.Select(it => it.WorkerName).ToList());
|
|
}
|
|
else
|
|
{
|
|
item.Worker = "";
|
|
}
|
|
if (!string.IsNullOrEmpty(item.Remarks))
|
|
{
|
|
try
|
|
{
|
|
item.RemarksDic = JsonConvert.DeserializeObject<Dictionary<string, object>>(item.Remarks);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
}
|
|
});
|
|
|
|
}
|
|
return response;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 获取详情
|
|
/// </summary>
|
|
/// <param name="Id"></param>
|
|
/// <returns></returns>
|
|
public CamWorkrecord GetInfo(int Id)
|
|
{
|
|
var response = Queryable()
|
|
.Where(x => x.Id == Id)
|
|
.First();
|
|
|
|
return response;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加工作记录
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
public CamWorkrecord AddCamWorkrecord(CamWorkrecord model)
|
|
{
|
|
return Insertable(model).ExecuteReturnEntity();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改工作记录
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
public int UpdateCamWorkrecord(CamWorkrecord model)
|
|
{
|
|
return Update(model, true, "修改工作记录");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导出工作记录
|
|
/// </summary>
|
|
/// <param name="parm"></param>
|
|
/// <returns></returns>
|
|
public PagedInfo<CamWorkrecordExcelDto> ExportList(CamWorkrecordQueryDto parm)
|
|
{
|
|
parm.PageNum = 1;
|
|
parm.PageSize = 100000;
|
|
var predicate = QueryExp(parm);
|
|
|
|
var response = Queryable()
|
|
.Where(predicate.ToExpression())
|
|
.Select((it) => new CamWorkrecordExcelDto()
|
|
{
|
|
|
|
}, true)
|
|
.ToPage(parm);
|
|
var ids = response.Result.Select(it => it.Id).ToList();
|
|
if (ids != null && ids.Count > 0)
|
|
{
|
|
var works = camWorkerService.AsQueryable().Where(it => ids.Contains(it.WorkrecordId)).ToList();
|
|
response.Result.ForEach(item =>
|
|
{
|
|
var w = works.Where(it => it.WorkrecordId == item.Id).Select(it => it.WorkerName).ToList();
|
|
item.Workers = w;
|
|
|
|
if (!string.IsNullOrEmpty(item.Remarks))
|
|
{
|
|
try
|
|
{
|
|
//item.RemarksDic = JsonConvert.DeserializeObject<Dictionary<string, object>>(item.Remarks);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
}
|
|
});
|
|
|
|
}
|
|
return response;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询导出表达式
|
|
/// </summary>
|
|
/// <param name="parm"></param>
|
|
/// <returns></returns>
|
|
private static Expressionable<CamWorkrecord> QueryExp(CamWorkrecordQueryDto parm)
|
|
{
|
|
var predicate = Expressionable.Create<CamWorkrecord>();
|
|
|
|
//predicate = predicate.AndIF(parm.BeginRecordTime == null, it => it.RecordTime >= DateTime.Now.ToShortDateString().ParseToDateTime());
|
|
predicate = predicate.AndIF(parm.BeginRecordTime != null, it => it.RecordTime >= parm.BeginRecordTime);
|
|
predicate = predicate.AndIF(parm.EndRecordTime != null, it => it.RecordTime <= parm.EndRecordTime);
|
|
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.DeptName), it => it.DeptName == parm.DeptName);
|
|
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Address), it => it.Address.Contains(parm.Address));
|
|
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Content), it => it.Content.Contains(parm.Content));
|
|
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.StatusName), it => it.StatusName == parm.StatusName);
|
|
//camWorkerService.AsQueryable().Where(it => it.WorkerName.Contains(parm.Workrecord));
|
|
|
|
// 关键:根据子表 CamWorker 过滤
|
|
if (!string.IsNullOrEmpty(parm.Workrecord))
|
|
{
|
|
predicate = predicate.And(it =>
|
|
SqlFunc.Subqueryable<CamWorker>()
|
|
.Where(w => w.WorkrecordId == it.Id && w.WorkerName.Contains(parm.Workrecord))
|
|
.Any()
|
|
);
|
|
}
|
|
return predicate;
|
|
}
|
|
}
|
|
} |