Commit 6aeb04eb by ruyun.zhang@suvalue.com

合并“梧州分支”

parents 7e394be4 ae375ac7
......@@ -501,8 +501,9 @@ public ApiResponse UpdateAllotShowFormula([FromBody] AllotRequest request)
}
/// <summary>
/// 获取
/// 获取预留金额
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("reserved")]
[HttpPost]
......@@ -512,7 +513,7 @@ public ApiResponse Reserved([FromBody] ReservedRequest request)
return new ApiResponse(ResponseType.ParameterError, "绩效信息无效");
var userid = _claim.GetUserId();
var reserveds = _allotService.GetReserved(request.HospitalId, request.Year, userid);
var reserveds = _allotService.GetReserved(request, userid);
return new ApiResponse(ResponseType.OK, reserveds);
}
......
......@@ -249,8 +249,9 @@
</member>
<member name="M:Performance.Api.Controllers.AllotController.Reserved(Performance.DtoModels.ReservedRequest)">
<summary>
获取
获取预留金额
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.DownloadCurrentCalculationTable(System.Int32)">
......
......@@ -8565,11 +8565,6 @@
是否开启定时抽取任务 1 是 2 否
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.IsSingleProject">
<summary>
抽取项目是否在同一环境 1 是 2 否
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.IsShowManageButton">
<summary>
行政后勤是否显示管理绩效按钮 1 是 2 否
......
......@@ -8,5 +8,6 @@ public class ReservedRequest
{
public int HospitalId { get; set; }
public int Year { get; set; }
public int Source { get; set; }
}
}
......@@ -111,10 +111,10 @@ public class sys_hospital
/// </summary>
public Nullable<int> IsOpenTimedTasks { get; set; }
/// <summary>
/// 抽取项目是否在同一环境 1 是 2 否
/// </summary>
public Nullable<int> IsSingleProject { get; set; }
///// <summary>
///// 抽取项目是否在同一环境 1 是 2 否
///// </summary>
//public Nullable<int> IsSingleProject { get; set; }
/// <summary>
/// 行政后勤是否显示管理绩效按钮 1 是 2 否
......
......@@ -275,7 +275,7 @@ public IEnumerable<view_second_workload_result> GetSecondWorkload(int allotid, s
string query = $@"
SELECT TAB1.HospitalId,AllotId,TAB1.UnitType,AccountingUnit,HISDeptName,ItemId,ItemName,FactorValue,DoctorName,PersonnelNumber,Category,SUM(Fee) Value
FROM view_second_workload TAB1
JOIN view_second_workload_his TAB2 ON TAB1.HospitalId = TAB2.HospitalId AND (TAB1.UnitType = TAB2.UnitType ) AND TAB1.HISDeptName = TAB2.Department AND TAB1.SourceCategory = TAB2.Category
JOIN view_second_workload_his TAB2 ON TAB1.HospitalId = TAB2.HospitalId AND (TAB1.UnitType = TAB2.UnitType OR TAB2.UnitType = '通用工作量') AND TAB1.HISDeptName = TAB2.Department AND TAB1.SourceCategory = TAB2.Category
WHERE AllotId = @allotid AND TAB1.UnitType = @unittype AND AccountingUnit = @accountingunit
GROUP BY TAB1.HospitalId,AllotId,TAB1.UnitType,AccountingUnit,HISDeptName,ItemId,ItemName,FactorValue,DoctorName,PersonnelNumber,Category";
return connection.Query<view_second_workload_result>(query, new { allotid, unittype, accountingunit }, commandTimeout: 60 * 60);
......
......@@ -385,10 +385,12 @@ public List<PerReport> NurseAvg(ReportRequest request)
/// <param name="hospitalId"></param>
/// <param name="year"></param>
/// <returns></returns>
public List<EmployeeReservedDto> GetEmployeeReserved(int hospitalId, int year)
public List<EmployeeReservedDto> GetEmployeeReserved(ReservedRequest request)
{
string sql = "SELECT * FROM view_allot_result_report WHERE HospitalID=@HospitalID AND Year=@Year";
return DapperQuery<EmployeeReservedDto>(sql, new { HospitalID = hospitalId, Year = year })?.ToList();
string view = request.Source == 1 ? "view_allot_result_report_emp" : request.Source == 2 ? "view_allot_result_report_issue": request.Source == 3 ? "view_allot_result_report":"";
string sql = $"SELECT * FROM {view} WHERE HospitalID=@HospitalID AND Year=@Year";
return DapperQuery<EmployeeReservedDto>(sql, new { HospitalID = request.HospitalId, Year = request.Year })?.ToList();
}
/// <summary>
......
......@@ -648,26 +648,31 @@ public List<log_dbug> AllotLog(per_allot allot, int type)
}
/// <summary>
/// 获取医院预留绩效
///
/// </summary>
/// <param name="hospitalId"></param>
/// <param name="year"></param>
/// <param name="request"></param>
/// <param name="userid"></param>
/// <returns></returns>
public List<EmployeeReservedDto> GetReserved(int hospitalId, int year, int userid)
public List<EmployeeReservedDto> GetReserved(ReservedRequest request, int userid)
{
var userInfo = _userRepository.GetUser(userid);
if (userInfo?.User == null) throw new NotImplementedException("当前用户不存在");
if (userInfo?.URole == null) throw new NotImplementedException("当前用户暂未分配角色");
if (userInfo.IsSecondAdmin)
var role = roleService.GetUserRole(userid)?.FirstOrDefault()?.Type;
if (!role.HasValue)
throw new PerformanceException("用户信息错误");
var reserveds = _reportRepository.GetEmployeeReserved(request);
if (reserveds != null && reserveds.Any())
{
var unitTpes = UnitTypeUtil.GetMaps(userInfo?.URole.Type);
return _reportRepository.GetEmployeeReserved(hospitalId, year, unitTpes, userInfo.User.Department);
return _reportRepository.GetEmployeeReserved(request.HospitalId, request.Year, unitTpes, userInfo.User.Department);
}
else
{
return _reportRepository.GetEmployeeReserved(hospitalId, year);
return _reportRepository.GetEmployeeReserved(request);
}
}
/// <summary>
......
......@@ -1824,7 +1824,7 @@ public DeptDataDetails GetDoctorDetail(int computeId)
if (sheets == null || !sheets.Any()) return doctorDetails;
var data = _perforImDataRepository.GetEntities(t => t.AllotID == resCompute.AllotID && sheets.Select(s => s.ID).Contains(t.SheetID.Value)
&& t.JobNumber == resCompute.JobNumber) ?? new List<im_data>();
&& t.JobNumber == resCompute.JobNumber) ?? new List<im_data>();
data = data.Where(t => ((UnitType)t.UnitType).ToString() == resCompute.UnitType && t.AccountingUnit == resCompute.AccountingUnit).ToList();
foreach (var sheet in sheets)
......
......@@ -368,7 +368,7 @@ public bool QueryHosConfigs(int moduleId, ref bool isSingle, out int sheetType)
var hospital = hospitalRepository.GetEntity(t => t.ID == module.HospitalId);
if (hospital == null) throw new PerformanceException("医院信息错误!");
isSingle = hospital.IsSingleProject == 1;
isSingle = true;// hospital.IsSingleProject == 1;
var hospitalConfigs = hospitalconfigRepository.GetEntities(t => t.HospitalId == module.HospitalId);
if (hospitalConfigs != null && hospitalConfigs.Any())
......@@ -645,7 +645,7 @@ public string Judge(int allotId, int hospitalId, int useTemplate, ref bool isSin
var hospital = hospitalRepository.GetEntity(t => t.ID == hospitalId);
if (hospital == null)
throw new PerformanceException("医院ID错误");
isSingle = (hospital.IsSingleProject ?? 2) == 1;
isSingle = true; // (hospital.IsSingleProject ?? 2) == 1;
// 获取医院配置信息
var hospitalConfigList = hospitalconfigRepository.GetEntities(t => t.HospitalId == hospitalId);
if (hospitalConfigList == null || hospitalConfigList.Count == 0)
......
......@@ -30,6 +30,20 @@ public static ICell GetOrCreate(this IRow row, int index)
return cell;
}
/// <summary>
/// 删除重建
/// </summary>
/// <param name="row"></param>
/// <param name="index"></param>
/// <returns></returns>
public static ICell GetOrRecreate(this IRow row, int index)
{
var cell = row.GetCell(index);
if (cell != null)
row.RemoveCell(cell);
return row.CreateCell(index);
}
public static void SetRowStyle(this IRow row, ICellStyle cellStyle)
{
......
......@@ -116,6 +116,28 @@ private static void WriteFactor(IRow row, int cellIndex, decimal? value, ICellSt
cell.CellStyle = style;
}
public static void ClearSheetFormula(ISheet sheet, PerSheetPoint point, SheetType sheetType, ExcelStyle style, List<string> headers, List<ExtractTransDto> data)
{
headers = headers.Select(t => t.NoBlank()).ToList();
int dataFirstCellNum = point.DataFirstCellNum.Value;
var columnHeader = sheet.GetOrCreate(point.HeaderFirstRowNum.Value);
for (int cellIndex = dataFirstCellNum; cellIndex < columnHeader.LastCellNum; cellIndex++)
{
for (int rowIndex = point.DataFirstRowNum.Value; rowIndex < sheet.LastRowNum + 1; rowIndex++)
{
var row = sheet.GetRow(rowIndex);
if (row == null) continue;
var column = columnHeader.GetOrCreate(cellIndex).GetDecodeEscapes();
if (headers.Any(w => w == column))
{
row.GetOrRecreate(cellIndex);
}
}
}
}
#region ExtractData
public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetType, ExcelStyle style, List<string> headers, List<ExtractTransDto> data)
......@@ -157,12 +179,15 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
if (row == null) continue;
string department = row.GetOrCreate(dataFirstCellNum - 1).GetDecodeEscapes();
if (string.IsNullOrEmpty(department)) continue;
if (rowIndex >= dataFirstRowNum) dataFirstRowNum = rowIndex + 1;
if (rowIndex > dataFirstRowNum) dataFirstRowNum = rowIndex + 1;
var deptData = data.Where(t => t.Department.NoBlank() == department);
if (deptData == null || !deptData.Any(t => t.Value.HasValue && t.Value != 0)) continue;
#region 写入数据
if (sheetType == SheetType.Income && !string.IsNullOrEmpty(department))
if (sheetType == SheetType.Income)
{
if (!incomes.Any(t => t.Department == department))
incomes.Add(GetIncomeRowMessage(row, dataFirstCellNum, department, rowIndex));
......@@ -175,15 +200,7 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
var cell = row.GetOrCreate(cellIndex);
if (string.IsNullOrEmpty(column)) continue;
decimal? value = 0m;
if (!string.IsNullOrEmpty(department))
{
var deptData = data.Where(t => t.Department.NoBlank() == department);
if (deptData != null && deptData.Any(t => t.Value.HasValue && t.Value != 0))
value = deptData.FirstOrDefault(t => t.Category.NoBlank() == column)?.Value;
}
var value = deptData.FirstOrDefault(t => t.Category.NoBlank() == column)?.Value;
//数据为空,且单元格值不为空,不写入数据(保留原始值)
// 22.3.29 ry 只要是提取的列头全部覆盖数据
if (headers != null && headers.Contains(column) && value.HasValue && value != 0)
......@@ -196,9 +213,9 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
#endregion
data.RemoveAll(t => t.Department == department);
}
//if (point.DataFirstRowNum.Value < dataFirstRowNum) dataFirstRowNum += 1;
//if (point.DataFirstRowNum.Value < dataFirstRowNum) dataFirstRowNum += 1;
}
}
private static void WriteSheetDataNonexistent(ISheet sheet, IRow columnHeader, PerSheetPoint point, SheetType sheetType, ExcelStyle style,
......@@ -233,17 +250,19 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
{
var row = sheet.GetOrCreate(dataFirstRowNum);
for (int cellIndex = point.HeaderFirstCellNum.Value; cellIndex < columnHeader.LastCellNum; cellIndex++)
{
var column = columnHeader.GetCell(cellIndex).GetDecodeEscapes();
List<string> uts = new List<string> { "核算单元(医技组)", "核算单元(医生组)", "核算单元(护理组)" };
if (uts.Contains(column))
if (uts.Contains(column))
column = column?.Replace("(", "(").Replace(")", ")");
var cell = row.CreateCell(cellIndex);
var cell = row.GetOrCreate(cellIndex);
if (filed.ContainsKey(column))
{
var value = filed[column]?.Invoke(deptData.First());
cell.SetCellOValue(value);
cell.CellStyle = cellStyle;
}
......@@ -280,14 +299,14 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
{
{ 1, item.Department },
{ 2, (sheet.SheetName.Contains("门诊")
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutNurseAccounting))?.OutNurseAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatNurseAccounting))?.InpatNurseAccounting) ?? item.NurseAccount },
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutNurseAccounting))?.OutNurseAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatNurseAccounting))?.InpatNurseAccounting) ?? item.NurseAccount },
{ 3, (sheet.SheetName.Contains("门诊")
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutDoctorAccounting))?.OutDoctorAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatDoctorAccounting))?.InpatDoctorAccounting) ?? item.DoctorAccount },
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutDoctorAccounting))?.OutDoctorAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatDoctorAccounting))?.InpatDoctorAccounting) ?? item.DoctorAccount },
{ 4, (sheet.SheetName.Contains("门诊")
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutTechnicAccounting))?.OutTechnicAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatTechnicAccounting))?.InpatTechnicAccounting) ?? item.TechnicAccounting },
? deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.OutTechnicAccounting))?.OutTechnicAccounting
: deptData.FirstOrDefault(t => !string.IsNullOrEmpty(t.InpatTechnicAccounting))?.InpatTechnicAccounting) ?? item.TechnicAccounting },
};
foreach (var content in deptContents)
......@@ -297,8 +316,6 @@ public static void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType s
cell.CellStyle = cellStyle;
}
for (int cellIndex = dataFirstCellNum; cellIndex < columnHeader.LastCellNum; cellIndex++)
{
var column = columnHeader.GetOrCreate(cellIndex).GetDecodeEscapes();
......@@ -487,7 +504,7 @@ public static void WriteCollectData(ISheet sheet, PerSheetPoint point, SheetType
for (int cellIndex = point.HeaderFirstCellNum.Value; cellIndex < columnHeader.LastCellNum; cellIndex++)
{
var column = columnHeader.GetCell(cellIndex).GetDecodeEscapes()?.Replace("(", "(").Replace(")", ")");
var cell = row.CreateCell(cellIndex);
var cell = row.GetOrCreate(cellIndex);
if (filed.ContainsKey(column))
{
......
......@@ -81,7 +81,7 @@ public void Execute()
var dict = new Dictionary<ExDataDict, object>();
var scripts = new List<ex_script>();
var isSingle = hospital.IsSingleProject == 1;
var isSingle = true;// hospital.IsSingleProject == 1;
dictionaryService.Handler(hospital.ID, allot, "", isSingle);
var data = queryService.Handler(hospital.ID, allot, "", isSingle, ref dict, ref scripts);
}
......@@ -125,7 +125,7 @@ public void ExportFile()
var dict = new Dictionary<ExDataDict, object>();
var isSingle = hospital.IsSingleProject == 1;
var isSingle = true;// hospital.IsSingleProject == 1;
var prevAllot = allots?.Where(t => t.HospitalId == hospital.ID && new int[] { 6, 8 }.Contains(t.States)).OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).First();
string filePath = prevAllot?.Path ?? "";
string extractFilePath = extractService.Main(allot.ID, allot.HospitalId, "", "User" + userId, filePath, isSingle);
......
......@@ -58,6 +58,7 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
if (data is List<ExtractTransDto> extractDto && extractDto.Any())
{
var columns = headers.Select(t => t.ColumnName).ToList();
WriteDataHelper.ClearSheetFormula(sheet, point, sheetType, style, columns, extractDto);
WriteDataHelper.WriteSheetData(sheet, point, sheetType, style, columns, extractDto);
}
}
......
......@@ -56,6 +56,7 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
if (data is List<ExtractTransDto> extractDto && extractDto.Any())
{
var columns = headers.Select(t => t.ColumnName).Intersect(extractDto.Select(t => t.Category))?.ToList();
WriteDataHelper.ClearSheetFormula(sheet, point, sheetType, style, columns, extractDto);
WriteDataHelper.WriteSheetData(sheet, point, sheetType, style, columns, extractDto);
}
}
......
......@@ -399,14 +399,14 @@ public void RowsExpand(per_allot allot, List<SecondColumnDictionary> dic, List<D
/* 如果是已保存数据,则加载原始数据,否则加载工作量自动带出 */
value = isSave
? bodyDynamic?.FirstOrDefault(w => w.BodyId == employee.Id && w.WorkloadId == workitem.Id)?.Value
: secondWorkload.FirstOrDefault(w => w.PersonnelNumber == employee.WorkNumber && w.DoctorName == employee.Name && workitem.ItemId.EqualsIgnoreCase(w.ItemId))?.Value;
: secondWorkload.FirstOrDefault(w => w.PersonnelNumber == employee.WorkNumber && workitem.ItemId.EqualsIgnoreCase(w.ItemId))?.Value;
}
else
{
/* 如果是已保存数据,则加载原始数据,否则加载工作量自动带出 */
value = isSave && overrideMode != EmployeeSource.Workload
? bodyDynamic?.FirstOrDefault(w => w.BodyId == employee.Id && w.WorkloadId == workitem.Id)?.Value
: secondWorkload.FirstOrDefault(w => w.PersonnelNumber == employee.WorkNumber && w.DoctorName == employee.Name && workitem.ItemId.EqualsIgnoreCase(w.ItemId))?.Value;
: secondWorkload.FirstOrDefault(w => w.PersonnelNumber == employee.WorkNumber && workitem.ItemId.EqualsIgnoreCase(w.ItemId))?.Value;
}
dict.AddOrUpdate(workitem.ItemId, value);
}
......
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