128 lines
5.1 KiB
C#
128 lines
5.1 KiB
C#
using IRaCIS.Api.Filter;
|
|
using IRaCIS.Application.Interfaces;
|
|
using IRaCIS.Application.ViewModels;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
|
|
|
|
namespace IRaCIS.Core.API.Controllers
|
|
{
|
|
/// <summary>
|
|
/// 入组之后 工作量维护
|
|
/// </summary>
|
|
[Route("workload")]
|
|
[ApiController, Authorize, ApiExplorerSettings(GroupName = "Workload")]
|
|
public class WorkloadController : ControllerBase
|
|
{
|
|
private readonly ITrialWorkloadService _trialWorkloadService;
|
|
private readonly ICalculateService _calculateService;
|
|
|
|
public WorkloadController(ITrialWorkloadService trialWorkloadService, ICalculateService calculateService)
|
|
{
|
|
_trialWorkloadService = trialWorkloadService;
|
|
_calculateService = calculateService;
|
|
}
|
|
/// <summary>
|
|
/// 查询某个医生是否在某天有某个项目的工作量数据,处理添加来自医生自己的工作量数据
|
|
/// </summary>
|
|
[HttpPost, Route("existWorkLoad")]
|
|
public IResponseOutput<ExistWorkloadViewModel> WorkLoadExist(WorkloadExistQueryDTO param)
|
|
{
|
|
return _trialWorkloadService.WorkloadExist(param);
|
|
}
|
|
|
|
/// <summary> 查询项目入组医生的工作量统计信息 </summary>
|
|
|
|
[HttpPost, Route("getTrialEnrollmentWorkloadStats")]
|
|
public IResponseOutput<PageOutput<WorkLoadAndAgreementDTO>> GetTrialEnrollmentWorkloadStats(WorkLoadDoctorQueryDTO doctorSearchModel)
|
|
{
|
|
|
|
return ResponseOutput.Ok(_trialWorkloadService.GetTrialEnrollmentWorkloadStats(doctorSearchModel));
|
|
|
|
}
|
|
/// <summary>
|
|
/// 获取医生工作量(带有填充数据)
|
|
/// </summary>
|
|
/// <param name="workLoadSearch"></param>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("getDoctorWorkLoadList")]
|
|
public IResponseOutput<PageOutput<WorkLoadDetailDTO>> GetDoctorWorkLoadList(
|
|
WorkLoadStatsQueryDTO workLoadSearch)
|
|
{
|
|
return ResponseOutput.Ok(_trialWorkloadService.GetEnrollmentWorkloadStatsDetail(workLoadSearch)) ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取来自医生端的工作量列表 详情
|
|
/// </summary>
|
|
/// <param name="workLoadSearch"></param>
|
|
/// <returns></returns>
|
|
|
|
[HttpPost, Route("getReviewerWorkLoadListDetail")]
|
|
public IResponseOutput<List<WorkLoadDetailViewModel>> GetReviewerWorkLoadListDetail(
|
|
WorkLoadDetailQueryDTO workLoadSearch)
|
|
{
|
|
return ResponseOutput.Ok(_trialWorkloadService.GetReviewerWorkLoadListDetail(workLoadSearch)) ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加或更新工作量[AUTH]
|
|
/// </summary>
|
|
/// <param name="workLoadAddOrUpdateModel"></param>
|
|
/// <returns></returns>
|
|
[LogFilter]
|
|
[HttpPost, Route("workLoadAddOrUpdate")]
|
|
public IResponseOutput WorkLoadAddOrUpdate(WorkloadCommand workLoadAddOrUpdateModel)
|
|
{
|
|
var userId = Guid.Parse(User.FindFirst("id").Value);
|
|
//var yearMonth = workLoadAddOrUpdateModel.WorkTime.ToString("yyyy-MM");
|
|
var result = _trialWorkloadService.AddOrUpdateWorkload(workLoadAddOrUpdateModel, userId);
|
|
//_calculateTaskService.AddCalculateTask(workLoadAddOrUpdateModel.DoctorId, yearMonth);
|
|
if (result.IsSuccess && workLoadAddOrUpdateModel.DataFrom == 2)
|
|
{
|
|
_calculateService.CalculateMonthlyPayment(new CalculateDoctorAndMonthDTO()
|
|
{
|
|
NeedCalculateReviewers = new List<Guid>()
|
|
{
|
|
workLoadAddOrUpdateModel.DoctorId
|
|
},
|
|
CalculateMonth = workLoadAddOrUpdateModel.WorkTime
|
|
}, User.FindFirst("id").Value);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
|
|
[LogFilter]
|
|
[HttpDelete, Route("deleteWorkLoad/{id:guid}")]
|
|
public IResponseOutput DeleteWorkLoad(Guid id)
|
|
{
|
|
//先判断该工作量的费用是否被锁定,如果被锁定,则不能删除
|
|
var workload = _trialWorkloadService.GetWorkloadDetailById(id);
|
|
var yearMonth = workload.WorkTime.ToString("yyyy-MM");
|
|
var isLock = _calculateService.IsLock(workload.DoctorId, yearMonth);
|
|
|
|
if (isLock)
|
|
{
|
|
return ResponseOutput.NotOk("Expenses have been settled and workload cannot be reset.");
|
|
}
|
|
|
|
var deleteResult = _trialWorkloadService.DeleteWorkload(id);
|
|
if (workload.DataFrom == (int)Domain.Share.WorkLoadFromStatus.FinalConfirm)
|
|
{
|
|
_calculateService.CalculateMonthlyPayment(new CalculateDoctorAndMonthDTO()
|
|
{
|
|
NeedCalculateReviewers = new List<Guid>()
|
|
{
|
|
workload.DoctorId
|
|
},
|
|
CalculateMonth = workload.WorkTime
|
|
}, User.FindFirst("id").Value);
|
|
}
|
|
return deleteResult;
|
|
}
|
|
}
|
|
}
|