Commit d37d2479 by 钟博

Merge branch '发放表下载' into develop1012

parents 57f31197 d8237d45
......@@ -14,6 +14,8 @@
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Performance.DtoModels.Request;
using System.IO;
using Microsoft.AspNetCore.StaticFiles;
namespace Performance.Api.Controllers
{
......@@ -24,14 +26,18 @@ public class ComputeController : Controller
private AllotService _allotService;
private ClaimService _claim;
private EmployeeService _employeeService;
private readonly DownloadService downloadService;
public ComputeController(AllotService allotService,
ComputeService computeService,
EmployeeService employeeService,
DownloadService downloadService,
ClaimService claim)
{
_allotService = allotService;
_computeService = computeService;
_employeeService = employeeService;
this.downloadService = downloadService;
_claim = claim;
}
......@@ -147,6 +153,7 @@ public ApiResponse<List<DeptResponse>> GetAdminPerformance([FromBody] ComputerRe
return new ApiResponse<List<DeptResponse>>(ResponseType.OK, "ok", list);
}
/// <summary>
/// 科室绩效详情
/// </summary>
......@@ -215,6 +222,7 @@ public ApiResponse AllCompute([FromBody] ComputerRequest request)
return new ApiResponse(ResponseType.OK, "ok", list);
}
/// <summary>
/// 获取全院绩效平均
/// </summary>
......@@ -294,43 +302,12 @@ public ApiResponse AllComputeByPM([FromBody] ComputerRequest request)
if (list == null || !list.Any())
return new ApiResponse(ResponseType.OK, "ok", list);
var result = list.GroupBy(t => new { t.AccountingUnit, t.UnitType, t.EmployeeName, t.JobNumber }).Select(t => new ComputeResponse
{
JobNumber = t.Key.JobNumber,
EmployeeName = t.Key.EmployeeName,
AccountingUnit = t.Key.AccountingUnit,
UnitType = t.Key.UnitType,
PerforSumFee = t.Sum(s => s.PerforSumFee),
PerforManagementFee = t.Sum(s => s.PerforManagementFee),
AdjustLaterOtherFee = t.Sum(s => s.AdjustLaterOtherFee),
ShouldGiveFee = t.Sum(s => s.ShouldGiveFee),
OthePerfor = t.Sum(s => s.OthePerfor),
HideOtherPerfor = t.Sum(s => s.HideOtherPerfor),
NightWorkPerfor = t.Sum(s => s.NightWorkPerfor),
RealGiveFee = t.Sum(s => s.RealGiveFee),
ReservedRatio = t.Sum(s => s.ReservedRatio),
ReservedRatioFee = t.Sum(s => s.ReservedRatioFee),
BankCard = t.FirstOrDefault(s => s.JobNumber == t.Key.JobNumber)?.BankCard,
JobCategory = t.FirstOrDefault(s => s.JobNumber == t.Key.JobNumber)?.JobCategory,
Duty = t.FirstOrDefault(s => s.JobNumber == t.Key.JobNumber)?.Duty,
TitlePosition = t.FirstOrDefault(s => s.JobNumber == t.Key.JobNumber)?.TitlePosition
}).OrderBy(t =>
{
string value = t.JobNumber;
switch (value)
{
case string val when string.IsNullOrEmpty(val):
break;
case string val when Regex.IsMatch(val, @"^[+-]?\d*$"):
value = value.PadLeft(20, '0');
break;
}
return value;
});
var result = _computeService.ComputerGroupBy(list);
return new ApiResponse(ResponseType.OK, "ok", result);
}
/// <summary>
/// 修改实发绩效
/// </summary>
......@@ -425,5 +402,98 @@ public ApiResponse Batch([FromBody] BatchRequest request)
var result = _computeService.Batch(request);
return result ? new ApiResponse(ResponseType.OK, "操作成功") : new ApiResponse(ResponseType.Fail, "操作失败");
}
#region 发放表下载
/// <summary>
/// 下载院领导、中层、工勤组绩效
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[Route("gethosdata/download/{allotId}")]
[HttpPost]
public IActionResult GetAdminPerDownload(int allotId)
{
var allot = _allotService.GetAllot(allotId);
if (null == allot)
throw new PerformanceException("当前绩效记录不存在");
var list = _computeService.GetAdminPerformance(allotId);
var filepath = downloadService.DeptReport(allotId, list);
var memoryStream = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open))
{
stream.CopyToAsync(memoryStream).Wait();
}
memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider();
FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
/// <summary>
/// 下载全院绩效列表
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[Route("allcompute/download/{allotId}")]
[HttpPost]
public IActionResult AllComputeDownload(int allotId)
{
var allot = _allotService.GetAllot(allotId);
if (null == allot)
throw new PerformanceException("当前绩效记录不存在");
var isShowManage = _computeService.IsShowManage(allotId);
var list = _computeService.AllCompute(allotId, allot.HospitalId, isShowManage);
var filepath = downloadService.AllComputerReport(allotId, list, true);
var memoryStream = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open))
{
stream.CopyToAsync(memoryStream).Wait();
}
memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider();
FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
/// <summary>
/// 下载全院绩效列表(人事科)
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[Route("allcompute/personnel/download/{allotId}")]
[HttpPost]
public IActionResult AllComputeByPMDownLoad(int allotId)
{
var allot = _allotService.GetAllot(allotId);
if (null == allot)
throw new PerformanceException("当前绩效记录不存在");
var isShowManage = _computeService.IsShowManage(allotId);
var list = _computeService.AllCompute(allotId, allot.HospitalId, isShowManage, true);
var result = _computeService.ComputerGroupBy(list);
var filepath = downloadService.AllComputerReport(allotId, result, false);
var memoryStream = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open))
{
stream.CopyToAsync(memoryStream).Wait();
}
memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider();
FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
#endregion
}
}
\ No newline at end of file
......@@ -554,6 +554,27 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.GetAdminPerDownload(System.Int32)">
<summary>
下载院领导、中层、工勤组绩效
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.AllComputeDownload(System.Int32)">
<summary>
下载全院绩效列表
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.AllComputeByPMDownLoad(System.Int32)">
<summary>
下载全院绩效列表(人事科)
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.GetDrugtypeList(Performance.DtoModels.DrugpropRequest)">
<summary>
获取 药占比类型信息列表
......
......@@ -941,6 +941,46 @@ public List<ComputeResponse> AllCompute(int allotId, int hospitalId, int isShowM
return response?.OrderBy(t => AccountTypes.FirstOrDefault(a => a.Name == t.UnitType)?.Value).ThenByDescending(t => t.AccountingUnit).ToList();
}
public List<ComputeResponse> ComputerGroupBy(List<ComputeResponse> list)
{
var result = list?.GroupBy(t => new { t.AccountingUnit, t.UnitType, t.EmployeeName, t.JobNumber }).Select(t => new ComputeResponse
{
JobNumber = t.Key.JobNumber,
EmployeeName = t.Key.EmployeeName,
AccountingUnit = t.Key.AccountingUnit,
UnitType = t.Key.UnitType,
PerforSumFee = t.Sum(s => s.PerforSumFee),
PerforManagementFee = t.Sum(s => s.PerforManagementFee),
AdjustLaterOtherFee = t.Sum(s => s.AdjustLaterOtherFee),
ShouldGiveFee = t.Sum(s => s.ShouldGiveFee),
OthePerfor = t.Sum(s => s.OthePerfor),
HideOtherPerfor = t.Sum(s => s.HideOtherPerfor),
NightWorkPerfor = t.Sum(s => s.NightWorkPerfor),
RealGiveFee = t.Sum(s => s.RealGiveFee),
ReservedRatio = t.Sum(s => s.ReservedRatio),
ReservedRatioFee = t.Sum(s => s.ReservedRatioFee),
BankCard = t.FirstOrDefault(s => s.JobNumber == t.Key.JobNumber)?.BankCard,
JobCategory = t.FirstOrDefault(s => s.JobNumber == t.Key.JobNumber)?.JobCategory,
Duty = t.FirstOrDefault(s => s.JobNumber == t.Key.JobNumber)?.Duty,
TitlePosition = t.FirstOrDefault(s => s.JobNumber == t.Key.JobNumber)?.TitlePosition
}).OrderBy(t =>
{
string value = t.JobNumber;
switch (value)
{
case string val when string.IsNullOrEmpty(val):
break;
case string val when Regex.IsMatch(val, @"^[+-]?\d*$"):
value = value.PadLeft(20, '0');
break;
}
return value;
});
return result.ToList();
}
///// <summary>
///// 合并医院其他绩效、不公示其他绩效
///// </summary>
......
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using Performance.DtoModels;
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Repository;
using Performance.Services.ExtractExcelService;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace Performance.Services
{
public class DownloadService : IAutoInjection
{
private readonly ILogger<DownloadService> logger;
private readonly PerforPerallotRepository perallotRepository;
private readonly PerforHospitalRepository perforHospital;
private readonly PerforCofaliasRepository perforCofalias;
private readonly ConfigService configService;
private readonly IHostingEnvironment evn;
public DownloadService(ILogger<DownloadService> logger,
PerforPerallotRepository perallotRepository,
PerforHospitalRepository perforHospital,
PerforCofaliasRepository perforCofalias,
ConfigService configService,
IHostingEnvironment evn)
{
this.logger = logger;
this.perallotRepository = perallotRepository;
this.perforHospital = perforHospital;
this.perforCofalias = perforCofalias;
this.configService = configService;
this.evn = evn;
}
#region 财务、全院绩效发放下载
/// <summary>
/// 财务、全院绩效发放下载
/// </summary>
/// <param name="allotId"></param>
/// <param name="allData"></param>
/// <param name="isAll"></param>
/// <returns></returns>
public string AllComputerReport(int allotId, List<ComputeResponse> allData, bool isAll)
{
var allot = perallotRepository.GetEntity(t => t.ID == allotId);
var hospital = perforHospital.GetEntity(t => t.ID == allot.HospitalId);
var alias = perforCofalias.GetEntities(t => t.HospitalId == hospital.ID && t.States == 1);
var headShow = new List<string> { "银行卡号", "正式/临聘", "职务", "职称" };
var headList = AllCompute;
if (!isAll)
{
headList = Person;
alias = alias?.Where(t => t.Route == "/result/wholeHospital")?.ToList();
if (alias != null)
headShow = headShow.Except(alias.Select(t => t.OriginalName)).ToList();
}
else
{
alias = alias?.Where(t => t.Route == "/result/compute")?.ToList();
if (alias != null)
headShow = headShow.Except(alias.Select(t => t.OriginalName)).ToList();
}
var dpath = Path.Combine(evn.ContentRootPath, "Files", "PerformanceRelease", $"{allot.HospitalId}");
FileHelper.CreateDirectory(dpath);
string fileName = $"{hospital.HosName}-全院绩效发放-{DateTime.Now:yyyyMMdd}";
string filepath = Path.Combine(dpath, fileName);
FileStream stream = new FileStream(filepath, FileMode.Create);
try
{
HSSFWorkbook workbook = new HSSFWorkbook();
//设置单元格样式
ICellStyle style = workbook.CreateCellStyle();
style.Alignment = HorizontalAlignment.Center;
style.BorderBottom = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
ISheet sheet = workbook.CreateSheet("全院绩效发放");
sheet.ForceFormulaRecalculation = true;
ICellStyle cellStyle = workbook.CreateCellStyle();
cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
IRow row1 = sheet.CreateRow(0);
row1.CreateCell(0).SetCellValue("序号");
row1.GetCell(0).CellStyle = style;
int cellIndex = 1;
foreach (var item in headList)
{
if (headShow.Contains(item.Item2))
continue;
row1.CreateCell(cellIndex).SetCellValue(item.Item2);
row1.GetCell(cellIndex).CellStyle = style;
sheet.SetColumnWidth(cellIndex, 14 * 256);
cellIndex++;
}
int startIndex = 1;
foreach (var item in allData)
{
var row = sheet.CreateRow(startIndex);
cellIndex = 1;
var serial = row.CreateCell(0);
serial.SetCellOValue(startIndex);
serial.CellStyle = style;
foreach (var field in headList)
{
if (headShow.Contains(field.Item2))
continue;
var cell = row.CreateCell(cellIndex);
cell.SetCellOValue(field.Item3?.Invoke(item));
cell.CellStyle = style;
cellIndex++;
}
startIndex++;
}
//合计
cellIndex = 1;
var totalRow = sheet.CreateRow(startIndex);
var totalSerial = totalRow.CreateCell(0);
totalSerial.SetCellOValue("合计");
totalSerial.CellStyle = style;
foreach (var value in headList)
{
if (headShow.Contains(value.Item2))
continue;
var cell = totalRow.CreateCell(cellIndex);
cell.SetCellFormula(string.Format(value.Item4, startIndex));
cell.CellStyle = style;
cellIndex++;
}
workbook.Write(stream);
}
catch (Exception ex)
{
Console.WriteLine("下载异常" + ex);
}
finally
{
stream.Close();
}
return filepath;
}
public static List<(string, string, Func<ComputeResponse, object>, string)> AllCompute { get; } = new List<(string, string, Func<ComputeResponse, object>, string)>
{
(nameof(ComputeResponse.Source), "来源",t=>t.Source,""),
(nameof(ComputeResponse.UnitType), "科室类别",t=>t.UnitType,""),
(nameof(ComputeResponse.AccountingUnit), "核算单元",t=>t.AccountingUnit,""),
(nameof(ComputeResponse.JobNumber), "员工号",t=>t.JobNumber,""),
(nameof(ComputeResponse.EmployeeName), "人员姓名",t=>t.EmployeeName,""),
(nameof(ComputeResponse.JobTitle), "职务",t=>t.JobTitle,""),
(nameof(ComputeResponse.Batch), "批次",t=>t.Batch,""),
(nameof(ComputeResponse.PerforSumFee), "调节后业绩绩效",t=>t.PerforSumFee,"SUM(I2:I{0})"),
(nameof(ComputeResponse.PerforManagementFee), "调节后实发管理绩效",t=>t.PerforManagementFee,"SUM(J2:J{0})"),
(nameof(ComputeResponse.AdjustLaterOtherFee), "调节后其他绩效",t=>t.AdjustLaterOtherFee,"SUM(K2:K{0})"),
(nameof(ComputeResponse.NightWorkPerfor), "夜班费",t=>t.NightWorkPerfor,"SUM(L2:L{0})"),
(nameof(ComputeResponse.OthePerfor), "医院其他绩效",t=>t.OthePerfor,"SUM(M2:M{0})"),
(nameof(ComputeResponse.HideOtherPerfor), "不公示其他绩效",t=>t.HideOtherPerfor,"SUM(N2:N{0})"),
(nameof(ComputeResponse.ShouldGiveFee), "应发小计",t=>t.ShouldGiveFee,"SUM(O2:O{0})"),
(nameof(ComputeResponse.ReservedRatioFee), "预留绩效",t=>t.ReservedRatioFee,"SUM(P2:P{0})"),
(nameof(ComputeResponse.RealGiveFee), "实发绩效",t=>t.RealGiveFee,"SUM(Q2:Q{0})"),
(nameof(ComputeResponse.BankCard), "银行卡号",t=>t.BankCard,""),
(nameof(ComputeResponse.JobCategory), "正式/临聘",t=>t.JobCategory,""),
(nameof(ComputeResponse.Duty), "职务",t=>t.Duty,""),
(nameof(ComputeResponse.TitlePosition), "职称",t=>t.TitlePosition,""),
};
public static List<(string, string, Func<ComputeResponse, object>, string)> Person { get; } = new List<(string, string, Func<ComputeResponse, object>, string)>
{
(nameof(ComputeResponse.UnitType), "科室类别",t=>t.UnitType,""),
(nameof(ComputeResponse.AccountingUnit), "核算单元",t=>t.AccountingUnit,""),
(nameof(ComputeResponse.JobNumber), "员工号",t=>t.JobNumber,""),
(nameof(ComputeResponse.EmployeeName), "人员姓名",t=>t.EmployeeName,""),
(nameof(ComputeResponse.PerforSumFee), "调节后业绩绩效",t=>t.PerforSumFee,"SUM(F2:F{0})"),
(nameof(ComputeResponse.PerforManagementFee), "调节后实发管理绩效",t=>t.PerforManagementFee,"SUM(G2:G{0})"),
(nameof(ComputeResponse.AdjustLaterOtherFee), "调节后其他绩效",t=>t.AdjustLaterOtherFee,"SUM(H2:H{0})"),
(nameof(ComputeResponse.NightWorkPerfor), "夜班费",t=>t.NightWorkPerfor,"SUM(I2:I{0})"),
(nameof(ComputeResponse.OthePerfor), "医院其他绩效",t=>t.OthePerfor,"SUM(J2:J{0})"),
(nameof(ComputeResponse.HideOtherPerfor), "不公示其他绩效",t=>t.HideOtherPerfor,"SUM(K2:K{0})"),
(nameof(ComputeResponse.ShouldGiveFee), "应发小计",t=>t.ShouldGiveFee,"SUM(L2:L{0})"),
(nameof(ComputeResponse.ReservedRatioFee), "预留绩效",t=>t.ReservedRatioFee,"SUM(M2:M{0})"),
(nameof(ComputeResponse.RealGiveFee), "实发绩效",t=>t.RealGiveFee,"SUM(N2:N{0})"),
};
#endregion
#region 全院绩效核算
/// <summary>
/// 全院绩效核算
/// </summary>
/// <param name="allotId"></param>
/// <param name="name"></param>
/// <param name="deptData"></param>
/// <returns></returns>
public string DeptReport(int allotId, List<DeptResponse> deptData)
{
var allot = perallotRepository.GetEntity(t => t.ID == allotId);
var hospital = perforHospital.GetEntity(t => t.ID == allot.HospitalId);
var dpath = Path.Combine(evn.ContentRootPath, "Files", "PerformanceRelease", $"{allot.HospitalId}");
FileHelper.CreateDirectory(dpath);
string fileName = $"{hospital.HosName}-全院核算绩效发放-{DateTime.Now:yyyyMMdd}";
string filepath = Path.Combine(dpath, fileName);
FileStream stream = new FileStream(filepath, FileMode.Create);
try
{
HSSFWorkbook workbook = new HSSFWorkbook();
//设置单元格样式
ICellStyle style = workbook.CreateCellStyle();
style.Alignment = HorizontalAlignment.Center;
style.BorderBottom = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
ISheet sheet = workbook.CreateSheet("全院核算绩效发放");
sheet.ForceFormulaRecalculation = true;
ICellStyle cellStyle = workbook.CreateCellStyle();
cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
IRow row1 = sheet.CreateRow(0);
int cellIndex = 0;
foreach (var item in HosData.Select(t => t.Item2))
{
row1.CreateCell(cellIndex).SetCellValue(item);
row1.GetCell(cellIndex).CellStyle = style;
sheet.SetColumnWidth(cellIndex, 14 * 256);
cellIndex++;
}
int startIndex = 1;
foreach (var item in deptData)
{
var row = sheet.CreateRow(startIndex);
cellIndex = 0;
foreach (var field in HosData.Select(t => t.Item3))
{
var cell = row.CreateCell(cellIndex);
cell.SetCellOValue(field?.Invoke(item));
cell.CellStyle = style;
cellIndex++;
}
startIndex++;
}
//合计
cellIndex = 0;
var totalRow = sheet.CreateRow(startIndex);
foreach (var value in HosData.Select(t => t.Item4))
{
var cell = totalRow.CreateCell(cellIndex);
if (cellIndex == 0)
cell.SetCellOValue("合计");
else
cell.SetCellFormula(string.Format(value, startIndex));
cell.CellStyle = style;
cellIndex++;
}
workbook.Write(stream);
}
catch (Exception ex)
{
Console.WriteLine("下载异常" + ex);
}
finally
{
stream.Close();
}
return filepath;
}
public static List<(string, string, Func<DeptResponse, object>, string)> HosData { get; } = new List<(string, string, Func<DeptResponse, object>, string)>
{
(nameof(DeptResponse.UnitName), "核算群体",t=>t.UnitName,""),
(nameof(DeptResponse.AccountingUnit), "核算单元",t=>t.AccountingUnit,""),
(nameof(DeptResponse.PerforFee), "业绩绩效",t=>t.PerforFee,"SUM(C2:C{0})"),
(nameof(DeptResponse.WorkloadFee), "工作量绩效",t=>t.WorkloadFee,"SUM(D2:D{0})"),
(nameof(DeptResponse.AssessBeforeOtherFee), "考核前其他绩效",t=>t.AssessBeforeOtherFee,"SUM(E2:E{0})"),
(nameof(DeptResponse.PerforTotal), "考核前绩效合计",t=>t.PerforTotal,"SUM(F2:F{0})"),
(nameof(DeptResponse.ScoringAverage), "科室考核得分",t=>t.ScoringAverage,"SUM(G2:G{0})"),
(nameof(DeptResponse.MedicineExtra), "药占比奖罚",t=>t.MedicineExtra,"SUM(H2:H{0})"),
(nameof(DeptResponse.MaterialsExtra), "材料占比奖罚",t=>t.MaterialsExtra,"SUM(I2:I{0})"),
(nameof(DeptResponse.Extra), "医院奖罚",t=>t.Extra,"SUM(J2:J{0})"),
(nameof(DeptResponse.ScoringPerfor), "考核后其他绩效",t=>t.ScoringPerfor,"SUM(K2:K{0})"),
(nameof(DeptResponse.AssessLaterOtherFee), "考核后绩效",t=>t.AssessLaterOtherFee,"SUM(L2:L{0})"),
(nameof(DeptResponse.AdjustFactor), "调节系数",t=>t.AdjustFactor,"SUM(M2:M{0})"),
(nameof(DeptResponse.AdjustLaterOtherFee), "调节后其他绩效",t=>t.AdjustLaterOtherFee,"SUM(N2:N{0})"),
(nameof(DeptResponse.AssessLaterManagementFee), "科主任实发管理绩效",t=>t.AssessLaterManagementFee,"SUM(O2:O{0})"),
(nameof(DeptResponse.AprPerforAmount), "医院其他绩效",t=>t.AprPerforAmount,"SUM(P2:P{0})"),
(nameof(DeptResponse.HideAprOtherPerforAmount), "不公示其他绩效",t=>t.HideAprOtherPerforAmount,"SUM(Q2:Q{0})"),
(nameof(DeptResponse.RealGiveFee), "实发绩效",t=>t.RealGiveFee,"SUM(R2:R{0})"),
};
#endregion
}
}
......@@ -619,11 +619,11 @@ public string ImpoerAprEmployees(int allotid, string path, int userid)
entities.Add(entity);
}
var numbers = entities.Select(t => t.PersonnelNumber).Except(employees.Select(w => w.PersonnelNumber));
if (numbers?.Count() > 0 && numbers?.Count() <= 5)
return $@"以下工号在字典中不存在:{JsonHelper.Serialize(numbers.ToArray())}";
else if (numbers?.Count() > 5)
return $@"以下工号在字典中不存在:{JsonHelper.Serialize(numbers.Take(5)).Replace("]", ",...]")}";
//var numbers = entities.Select(t => t.PersonnelNumber).Except(employees.Select(w => w.PersonnelNumber));
//if (numbers?.Count() > 0 && numbers?.Count() <= 5)
// return $@"以下工号在字典中不存在:{JsonHelper.Serialize(numbers.ToArray())}";
//else if (numbers?.Count() > 5)
// return $@"以下工号在字典中不存在:{JsonHelper.Serialize(numbers.Take(5)).Replace("]", ",...]")}";
// 补充核算单元
......
......@@ -1116,6 +1116,9 @@ public void SaveQueryRole(int hospitalId, SaveCollectData request)
var dict = new Dictionary<string, string>();
PersonPassword.ForEach(t => dict.Add(t.Item1, t.Item2));
var hospital = perforHospitalRepository.GetEntity(t => t.ID == hospitalId);
if (hospital.IsOwnerQuery != 1)
return;
var dicData = CreateDataRow(request, dict);
var usercollor = new UserCollectData
{
......
......@@ -8,6 +8,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Performance.Services
{
......@@ -511,7 +512,42 @@ public void SaveSecondAllotHeadData(int secondId, string json)
List<ag_worktype_source> insertData = new List<ag_worktype_source>();
var worktypeSources = agworktypesourceRepository.GetEntities(t => t.SecondId == secondId);
if (worktypeSources == null || !worktypeSources.Any())
return;
{
var workTypes = agworkloadtypeRepository.GetEntities();
var workValue = new List<int>();
foreach (var item in keys)
{
var value = item.Replace("workload_ratio_", "").Replace("workload_amount_", "");
if (!Regex.IsMatch(value, @"^\d")) continue;
workValue.Add(Convert.ToInt32(value));
}
if (workValue == null || !workValue.Any())
return;
foreach (var value in workValue)
{
for (int i = 0; i < prefix.Length; i++)
{
var fieldId = prefix[i] + $"{value}";
var typeName = workTypes?.FirstOrDefault(t => t.Id == value)?.TypeName;
var source = new ag_worktype_source
{
WorkTypeId = value,
SecondId = secondId,
FieldId = fieldId,
FieldName = i == 0 ? typeName + "占比" : typeName + "金额",
Value = prefix[i].StartsWith(prefix[0]) ? (decimal?)Convert.ToDecimal(dict[fieldId.ToLower()]) : null,
};
insertData.Add(source);
}
}
agworktypesourceRepository.AddRange(insertData.ToArray());
}
worktypeSources = agworktypesourceRepository.GetEntities(t => t.SecondId == secondId);
foreach (var key in keys)
{
......
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