Commit 0033c1fc by 李承祥

科室详情

parent 7da95f8a
......@@ -101,14 +101,15 @@ public ApiResponse<List<DeptResponse>> GetNurse([FromBody]ComputerRequest reques
/// <returns></returns>
[Route("deptdetail")]
[HttpPost]
public ApiResponse<DeptDetailResponse> DeptDetail([FromBody]DeptDetailRequest request)
public ApiResponse<DeptDataDetails> DeptDetail([FromBody]DeptDetailRequest request)
{
var allot = _allotService.GetAllot(request.AllotId);
if (null == allot)
throw new PerformanceException("当前绩效记录不存在");
DeptDetailResponse response = _computeService.GetDepartmentDetail(request.AllotId, request.AccountID, request.Type);
return new ApiResponse<DeptDetailResponse>(ResponseType.OK, response);
//DeptDetailResponse response = _computeService.GetDepartmentDetail(request.AllotId, request.AccountID, request.Type);
var response = _computeService.DeptDetail(request.AllotId, request.AccountID, request.Type);
return new ApiResponse<DeptDataDetails>(ResponseType.OK, response);
}
/// <summary>
......
......@@ -16,4 +16,32 @@ public class DeptDetail
public string ItemName { get; set; }
public decimal ItemValue { get; set; }
}
public class DeptDataDetails
{
public PerDataAccountBaisc Pandect { get; set; }
public List<DetailDtos> Detail { get; set; }
}
public class DetailDtos
{
public string ItemName { get; set; }
public decimal Amount { get; set; }
public List<DetailModule> Items { get; set; }
}
public class DetailModule
{
public string ItemName { get; set; }
public decimal? CellValue { get; set; }
public decimal? Factor { get; set; }
public decimal? ItemValue { get; set; }
}
}
......@@ -7,6 +7,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace Performance.Services
{
......@@ -22,6 +23,7 @@ public class ComputeService : IAutoInjection
private readonly PerforUserRepository _perforUserRepository;
private readonly PerforAgemployeeRepository _perforAgemployeeRepository;
private readonly PerforResbaiscnormRepository perforResbaiscnormRepository;
private readonly PerforCofincomeRepository _perforCofincomeRepository;
public ComputeService(PerforResaccountRepository perforResaccountRepository,
//PerforResaccountnurseRepository perforResAccountnurseRepository,
......@@ -32,7 +34,8 @@ public class ComputeService : IAutoInjection
PerforPeragainallotRepository perforPeragainallotRepository,
PerforUserRepository perforUserRepository,
PerforAgemployeeRepository perforAgemployeeRepository,
PerforResbaiscnormRepository perforResbaiscnormRepository)
PerforResbaiscnormRepository perforResbaiscnormRepository,
PerforCofincomeRepository perforCofincomeRepository)
{
this.perforResaccountRepository = perforResaccountRepository;
//this._perforResAccountnurseRepository = perforResAccountnurseRepository;
......@@ -44,6 +47,7 @@ public class ComputeService : IAutoInjection
this._perforUserRepository = perforUserRepository;
this._perforAgemployeeRepository = perforAgemployeeRepository;
this.perforResbaiscnormRepository = perforResbaiscnormRepository;
this._perforCofincomeRepository = perforCofincomeRepository;
}
/// <summary>
......@@ -279,5 +283,59 @@ public List<res_baiscnorm> GetBaiscnorm(int allotId)
{
return perforResbaiscnormRepository.GetEntities(t => t.AllotID == allotId).OrderBy(t => t.PositionName).ToList();
}
/// <summary>
/// 返回科室详情
/// </summary>
/// <param name="allotId"></param>
/// <param name="accountId"></param>
/// <param name="type"></param>
/// <returns></returns>
public DeptDataDetails DeptDetail(int allotId, int accountId, int type)
{
var sheetType = new List<int> { (int)SheetType.Income, (int)SheetType.OtherIncome, (int)SheetType.Expend, (int)SheetType.Workload };
var doctor = perforResaccountRepository.GetEntity(t => t.UnitType == type && t.AllotID == allotId && t.ID == accountId);
DeptDataDetails deptDetails = new DeptDataDetails
{
Pandect = Mapper.Map<PerDataAccountBaisc>(doctor),
Detail = new List<DetailDtos>()
};
var basicData = _perforImDataRepository.GetEntities(t => t.AllotID == allotId && t.UnitType == type && t.AccountingUnit == doctor.AccountingUnit);
var persheet = _perforPerSheetRepository.GetEntities(t => t.AllotID == allotId);
string typeValue = type == 1 ? "医生组" : "护理组";
var incomeconfs = _perforCofincomeRepository.GetEntities(t => t.UnitName == typeValue);
//科室经济
var sheetEconomic = persheet.FirstOrDefault(t => t.SheetType == (int)SheetType.ComputeEconomic);
var dataEconomicList = basicData.Where(t => t.SheetID == sheetEconomic?.ID && t.UnitType == type && t.IsTotal != 1 && t.AccountingUnit == doctor.AccountingUnit).ToList();
var economic = dataEconomicList?.Select(t => new DeptDetail { ItemName = t.TypeName.Replace($"({typeValue})", ""), ItemValue = t.CellValue ?? 0 });
Regex reg = new Regex("[0-9]*");
foreach (var stype in sheetType)
{
foreach (var sheet in persheet.Where(t => t.SheetType == stype))
{
var sheetName = reg.Replace(sheet.SheetName, "", 5).Replace(".", "").Replace(" ", "");
var sheetData = basicData.Where(t => t.SheetID == sheet.ID).ToList();
if (sheetData == null || !sheetData.Any()) continue;
var item = new DetailDtos
{
ItemName = sheetName,
Amount = (sheetName.Contains("工作量") ? doctor.WorkloadFee : economic.FirstOrDefault(t => t.ItemName.Contains(sheetName))?.ItemValue) ?? 0m,
Items = sheetData?.Select(t => new DetailModule
{
ItemName = t.TypeName,
CellValue = t.CellValue,
Factor = t.FactorValue,
ItemValue = t.IsFactor == 1 ? (t.CellValue * (t.FactorValue ?? 0)) : t.CellValue
}).ToList()
};
deptDetails.Detail.Add(item);
}
}
return deptDetails;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment