Commit b1d5311f by 钟博

Merge branch 'v2020morge' into v2020morge-graphql

# Conflicts:
#	performance/Performance.Api/wwwroot/Performance.EntityModels.xml
#	performance/Performance.EntityModels/Entity/res_account.cs
#	performance/Performance.EntityModels/Entity/sys_hospital.cs
parents e71c6b21 3bd9a58d
......@@ -11,6 +11,7 @@
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Services;
using Performance.Services.ExtractExcelService;
using System;
using System.Collections.Generic;
using System.IO;
......@@ -85,6 +86,9 @@ public ApiResponse Import([FromForm] IFormCollection form)
if (file == null)
return new ApiResponse(ResponseType.Fail, "参数错误", "文件无效");
if (!ExtractHelper.IsXlsxFile(file.FileName))
return new ApiResponse(ResponseType.Fail, "文件格式错误", "文件暂只支持xlsx文件");
var again = againAllotService.GetAgainallot(againid);
if (again == null)
return new ApiResponse(ResponseType.Fail, "二次绩效记录不存在");
......
......@@ -9,6 +9,7 @@
using Performance.Infrastructure;
using Performance.Services;
using Performance.Services.AllotCompute;
using Performance.Services.ExtractExcelService;
using Performance.Services.Queues;
using System;
using System.Collections.Generic;
......@@ -138,12 +139,16 @@ public ApiResponse Import([FromForm] IFormCollection form)
if (file == null)
return new ApiResponse(ResponseType.Fail, "参数错误", "文件无效");
if (!ExtractHelper.IsXlsxFile(file.FileName))
return new ApiResponse(ResponseType.Fail, "文件格式错误", "文件暂只支持xlsx文件");
var allot = _allotService.GetAllot(allotid);
if (allot == null)
return new ApiResponse(ResponseType.Fail, "allotid不存在");
var name = FileHelper.GetFileNameNoExtension(file.FileName) + DateTime.Now.ToString("yyyyMMddHHmmssfff");
var ext = FileHelper.GetExtension(file.FileName);
var dpath = Path.Combine(_evn.ContentRootPath, "Files", $"{allot.HospitalId}", $"{allot.Year}{allot.Month.ToString().PadLeft(2, '0')}");
FileHelper.CreateDirectory(dpath);
......
......@@ -11,6 +11,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Performance.Api.Controllers
......@@ -300,8 +301,21 @@ public ApiResponse AllComputeByPM([FromBody] ComputerRequest request)
OthePerfor = t.Sum(s => s.OthePerfor),
NightWorkPerfor = t.Sum(s => s.NightWorkPerfor),
RealGiveFee = t.Sum(s => s.RealGiveFee),
//ReservedRatio = t.Sum(s => s.ReservedRatio),
//ReservedRatioFee = t.Sum(s => s.ReservedRatioFee),
ReservedRatio = t.Sum(s => s.ReservedRatio),
ReservedRatioFee = t.Sum(s => s.ReservedRatioFee),
}).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 new ApiResponse(ResponseType.OK, "ok", result);
}
......
......@@ -7,6 +7,7 @@
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Services;
using Performance.Services.ExtractExcelService;
using System;
using System.Collections.Generic;
using System.IO;
......@@ -407,6 +408,9 @@ public ApiResponse Import([FromForm] IFormCollection form)
if (file == null)
return new ApiResponse(ResponseType.Fail, "参数错误", "文件无效");
if (!ExtractHelper.IsXlsxFile(file.FileName))
return new ApiResponse(ResponseType.Fail, "文件格式错误", "文件暂只支持xlsx文件");
var allot = allotService.GetAllot(allotid);
if (allot == null)
return new ApiResponse(ResponseType.Fail, "allotid不存在");
......
......@@ -10,6 +10,7 @@
using Performance.DtoModels;
using Performance.Infrastructure;
using Performance.Services;
using Performance.Services.ExtractExcelService;
namespace Performance.Api.Controllers
{
......@@ -47,6 +48,9 @@ public ApiResponse Import([FromForm] IFormCollection form)
if (file == null)
return new ApiResponse(ResponseType.Fail, "参数错误", "文件无效");
if (!ExtractHelper.IsXlsxFile(file.FileName))
return new ApiResponse(ResponseType.Fail, "文件格式错误", "文件暂只支持xlsx文件");
var name = $"History_{FileHelper.GetFileNameNoExtension(file.FileName)}{DateTime.Now:yyyyMMddHHmmssfff}";
var ext = FileHelper.GetExtension(file.FileName);
var dpath = Path.Combine(evn.ContentRootPath, "Files", hospitalid.ToString());
......
......@@ -6,6 +6,7 @@
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Services;
using Performance.Services.ExtractExcelService;
using System;
using System.Collections.Generic;
using System.IO;
......@@ -103,6 +104,9 @@ public ApiResponse Import(int hospitalId, [FromForm] IFormCollection form)
if (file == null)
return new ApiResponse(ResponseType.Fail, "参数错误", "文件无效");
if (!ExtractHelper.IsXlsxFile(file.FileName))
return new ApiResponse(ResponseType.Fail, "文件格式错误", "文件暂只支持xlsx文件");
var name = FileHelper.GetFileNameNoExtension(file.FileName) + DateTime.Now.ToString("yyyyMMddHHmmssfff");
var ext = FileHelper.GetExtension(file.FileName);
var dpath = Path.Combine(env.ContentRootPath, "Files", $"{hospitalId}", $"ImportDataFiles");
......
......@@ -79,7 +79,7 @@ public IActionResult DownFile(int type = 1)
switch (type)
{
case 1:
path = Path.Combine(env.ContentRootPath, "Template", "医院绩效模板.xls");
path = Path.Combine(env.ContentRootPath, "Template", "医院绩效模板.xlsx");
break;
case 2:
......@@ -91,11 +91,11 @@ public IActionResult DownFile(int type = 1)
break;
case 4:
path = Path.Combine(env.ContentRootPath, "Template", "医院人员绩效模板.xls");
path = Path.Combine(env.ContentRootPath, "Template", "医院人员绩效模板.xlsx");
break;
case 5:
path = Path.Combine(env.ContentRootPath, "Template", "工作量数据导入模板.xls");
path = Path.Combine(env.ContentRootPath, "Template", "工作量数据导入模板.xlsx");
break;
}
......@@ -129,6 +129,9 @@ public ApiResponse Import([FromForm] IFormCollection form)
if (file == null)
return new ApiResponse(ResponseType.Fail, "参数错误", "文件无效");
if (!ExtractHelper.IsXlsxFile(file.FileName))
return new ApiResponse(ResponseType.Fail, "文件格式错误", "文件暂只支持xlsx文件");
var hospital = hospitalService.GetHopital(hospitalid);
if (hospital == null)
return new ApiResponse(ResponseType.Fail, "hospitalid不存在");
......
......@@ -7,8 +7,8 @@
}
},
"AppConnection": {
//"PerformanceConnectionString": "server=112.124.13.17;database=db_performance;uid=suvalue;pwd=suvalue2016;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;",
"PerformanceConnectionString": "server=192.168.18.166;database=db_yubei;uid=root;pwd=1234qwer;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;",
"PerformanceConnectionString": "server=112.124.13.17;database=db_performance;uid=suvalue;pwd=suvalue2016;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;",
//"PerformanceConnectionString": "server=192.168.18.166;database=db_yubei;uid=root;pwd=1234qwer;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;",
"HangfireConnectionString": "server=192.168.18.166;database=db_hangfire;uid=root;pwd=1234qwer;port=3306;allow user variables=true;",
"RedisConnectionString": "116.62.245.55:6379,defaultDatabase=2"
},
......
......@@ -536,6 +536,11 @@
夜班费
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.NeedSecondAllot">
<summary>
是否需要二次分配
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.AccountType">
<summary>
科室类别(例如 医技科室 临床科室 其他科室)
......@@ -706,6 +711,11 @@
夜班费
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.NeedSecondAllot">
<summary>
是否需要二次分配
</summary>
</member>
<member name="T:Performance.DtoModels.UnitType">
<summary> 核算单元类型 </summary>
</member>
......@@ -1089,6 +1099,11 @@
实发绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.NeedSecondAllot">
<summary>
是否需要二次分配
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataClinicEmployee.UnitType">
<summary>
核算单元分类
......@@ -1354,6 +1369,11 @@
调节后其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataLogisticsEmployee.NeedSecondAllot">
<summary>
是否需要二次分配
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataLogisticsEmployee.RowNumber">
<summary>
行号
......@@ -2116,11 +2136,6 @@
是否开启科室CMI占比 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.IsOpenLogisticsSecondAllot">
<summary>
是否开启行政后勤二次绩效分配 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.DtoModels.IncomeRequest.SheetNameKeyword">
<summary>
关键字匹配
......
......@@ -124,7 +124,7 @@ public HandsonColumn(string data, bool readOnly = false, DataFormat format = Dat
public bool ReadOnly { get; set; }
public string Type { get; set; }
public string[] Source { get; set; }
public bool Strict { get; set; } = false;
public NumericFormat NumericFormat { get; set; }
}
......
......@@ -160,5 +160,10 @@ public class ComputeEmployee
/// 夜班费
/// </summary>
public Nullable<decimal> NightWorkPerfor { get; set; }
/// <summary>
/// 是否需要二次分配
/// </summary>
public string NeedSecondAllot { get; set; }
}
}
......@@ -198,5 +198,10 @@ public class ComputeResult
/// 夜班费
/// </summary>
public Nullable<decimal> NightWorkPerfor { get; set; }
/// <summary>
/// 是否需要二次分配
/// </summary>
public string NeedSecondAllot { get; set; }
}
}
......@@ -232,6 +232,11 @@ public class PerDataAccountBaisc : IPerData
/// </summary>
public Nullable<decimal> RealGiveFee { get; set; }
/// <summary>
/// 是否需要二次分配
/// </summary>
public string NeedSecondAllot { get; set; }
#endregion 由计算得出
}
}
......@@ -67,6 +67,11 @@ public class PerDataLogisticsEmployee : IPerData
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 是否需要二次分配
/// </summary>
public string NeedSecondAllot { get; set; }
/// <summary>
/// 行号
/// </summary>
public int RowNumber { get; set; }
......
......@@ -60,10 +60,10 @@ public class HospitalRequest
/// </summary>
public Nullable<int> IsOpenCMIPercent { get; set; }
/// <summary>
/// 是否开启行政后勤二次绩效分配 1 启用 2 禁用
/// </summary>
public Nullable<int> IsOpenLogisticsSecondAllot { get; set; }
///// <summary>
///// 是否开启行政后勤二次绩效分配 1 启用 2 禁用
///// </summary>
//public Nullable<int> IsOpenLogisticsSecondAllot { get; set; }
}
public class HospitalRequestValidator : AbstractValidator<HospitalRequest>
......
//-----------------------------------------------------------------------
// <copyright file=" ag_othersource.cs">
// * FileName: 二次绩效其他绩效来源.cs
// * FileName: 二次绩效其他绩效来源.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
namespace Performance.EntityModels
{
/// <summary>
/// 二次绩效其他绩效来源
/// </summary>
[Table("ag_othersource")]
public class ag_othersource
public class ag_othersource
{
/// <summary>
///
///
/// </summary>
[Key]
public int Id { get; set; }
public int Id { get; set; }
/// <summary>
///
///
/// </summary>
public Nullable<int> SecondId { get; set; }
/// <summary>
/// 工号
/// </summary>
public string WorkNumber { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 科室
/// </summary>
public string Department { get; set; }
/// <summary>
/// 职称
/// </summary>
public string WorkPost { get; set; }
/// <summary>
/// 职称绩效
/// </summary>
public Nullable<decimal> TitlePerformance { get; set; }
/// <summary>
/// 工作量绩效工资
/// </summary>
public Nullable<decimal> WorkPerformance { get; set; }
/// <summary>
/// 科室单项奖励
/// 科室单项奖励(只读)
/// </summary>
public Nullable<decimal> DeptReward { get; set; }
/// <summary>
/// 可分配绩效
/// </summary>
public Nullable<decimal> DistPerformance { get; set; }
/// <summary>
/// 医院其他绩效
/// </summary>
public Nullable<decimal> OtherPerformance { get; set; }
/// <summary>
/// 夜班工作量绩效
/// </summary>
public Nullable<decimal> NightWorkPerformance { get; set; }
/// <summary>
/// 实发绩效工资金额
/// </summary>
......@@ -90,5 +90,20 @@ public class ag_othersource
/// 预留金额
/// </summary>
public Nullable<decimal> ReservedAmount { get; set; }
/// <summary>
/// 管理津贴
/// </summary>
public Nullable<decimal> ManagementAllowance { get; set; }
/// <summary>
/// 单项奖励
/// </summary>
public Nullable<decimal> IndividualReward { get; set; }
/// <summary>
/// 重点专科分配
/// </summary>
public Nullable<decimal> AllocationOfKeySpecialty { get; set; }
}
}
......@@ -125,5 +125,10 @@ public class im_employee_logistics
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 是否需要二次分配
/// </summary>
public string NeedSecondAllot { get; set; }
}
}
......@@ -190,5 +190,10 @@ public class res_account
/// 考核后绩效
/// </summary>
public Nullable<decimal> AssessLaterPerforTotal { get; set; }
}
/// <summary>
/// 是否需要二次分配
/// </summary>
public string NeedSecondAllot { get; set; }
}
}
......@@ -245,5 +245,9 @@ public class res_compute
/// 调节后其他绩效
/// </summary>
public Nullable<decimal> AdjustLaterOtherFee { get; set; }
/// <summary>
/// 是否需要二次分配 是 否
/// </summary>
public string NeedSecondAllot { get; set; }
}
}
......@@ -100,12 +100,12 @@ public class sys_hospital
/// 是否显示二次绩效科主任1 启用 2 禁用
/// </summary>
public Nullable<int> IsShowSecondDirector { get; set; }
/// <summary>
/// 是否开启行政后勤二次绩效分配 1 启用 2 禁用
/// </summary>
public Nullable<int> IsOpenLogisticsSecondAllot { get; set; }
///// <summary>
///// 是否开启行政后勤二次绩效分配 1 启用 2 禁用
///// </summary>
//public Nullable<int> IsOpenLogisticsSecondAllot { get; set; }
/// <summary>
/// 抽取项目是否在同一环境 1 是 2 否
/// </summary>
......
......@@ -3,6 +3,7 @@
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
<UserSecretsId>3af57781-f816-4c0e-ab66-9b69387e7d35</UserSecretsId>
</PropertyGroup>
<ItemGroup>
......
......@@ -14,6 +14,8 @@
<ExcludeApp_Data>False</ExcludeApp_Data>
<ProjectGuid>a7ae6d0f-7b11-4eef-9fea-a279001ea54d</ProjectGuid>
<publishUrl>bin\Release\netcoreapp2.2\publish\</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
<DeleteExistingFiles>True</DeleteExistingFiles>
<TargetFramework>netcoreapp2.2</TargetFramework>
<SelfContained>false</SelfContained>
</PropertyGroup>
</Project>
\ No newline at end of file
......@@ -377,6 +377,7 @@ public void ComputeOffice(per_allot allot, PerExcel excel)
dept.ScoringAverage = resAccount?.ScoringAverage == null ? 1 : resAccount.ScoringAverage;
dept.AdjustFactor = (isBudget ? adjust : resAccount?.AdjustFactor) ?? 1;
dept.Income = empolyees.Sum(w => w.PerforTotal ?? 0);
dept.NeedSecondAllot = empolyees.Any(w => w.NeedSecondAllot == "是") ? "是" : "否";
//dept.Extra = (extra ?? 0);
//dept.MedicineExtra = 0;// (drugExtra ?? 0);
//dept.MaterialsExtra = 0;//(materialsExtra ?? 0);
......
......@@ -514,13 +514,18 @@ public void GenerateSecondAllot(per_allot allot)
List<ag_secondallot> insSecond = new List<ag_secondallot>();
List<ag_secondallot> updSecond = new List<ag_secondallot>();
var types = new List<int> { (int)UnitType.行政高层, (int)UnitType.行政中层 };
// 获取医院是否开启后勤二次分配
var hospital = hospitalRepository.GetEntity(w => w.ID == allot.HospitalId);
if (hospital?.IsOpenLogisticsSecondAllot != 1)
types.Add((int)UnitType.行政后勤);
var types = new List<int> { (int)UnitType.行政高层, (int)UnitType.行政中层, (int)UnitType.行政后勤 };
//// 获取医院是否开启后勤二次分配
//var hospital = hospitalRepository.GetEntity(w => w.ID == allot.HospitalId);
//if (hospital?.IsOpenLogisticsSecondAllot != 1)
// types.Add((int)UnitType.行政后勤);
var accountUnit = perforResaccountRepository.GetEntities(t => t.AllotID == allot.ID && !types.Contains(t.UnitType.Value));
// 查询需要进行二次分配的行政后勤科室
var xzAccountUnit = perforResaccountRepository.GetEntities(t => t.AllotID == allot.ID && t.UnitType.Value == (int)UnitType.行政后勤 && t.NeedSecondAllot == "是");
if (xzAccountUnit != null && xzAccountUnit.Count > 0)
(accountUnit ?? new List<res_account>()).AddRange(xzAccountUnit);
var specialList = perforResspecialunitRepository.GetEntities(t => t.AllotID == allot.ID);
if (accountUnit != null)
......
......@@ -16,7 +16,7 @@ public class ExtractHelper
public static string GetExtractFile(int hospitalId, ref string newFilePath, string allotFilePath = "")
{
string originalPath = string.IsNullOrEmpty(allotFilePath)
? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Template", "医院绩效模板.xls")
? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Template", "医院绩效模板.xlsx")
: allotFilePath;
CloseAutoFilter(originalPath);
var (tempPath, filePath) = CopyOriginalFile(hospitalId, originalPath);
......@@ -28,7 +28,7 @@ public static string GetExtractFile(int hospitalId, string prefix = "绩效提
{
var dpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Files", $"{hospitalId}", "autoextract");
FileHelper.CreateDirectory(dpath);
return Path.Combine(dpath, $"{prefix}{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xls");
return Path.Combine(dpath, $"{prefix}{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx");
}
private static (string TempPath, string FilePath) CopyOriginalFile(int hospitalId, string originalPath)
......@@ -114,7 +114,6 @@ public static void ClearSheetPartialData(ISheet sheet, PerSheetPoint point, Shee
}
}
}
public static void ClearSheetTemplate(ISheet sheet, PerSheetPoint point, SheetType sheetType)
{
if (sheet == null)
......@@ -155,7 +154,7 @@ public static void ClearSheetTemplate(ISheet sheet, PerSheetPoint point, SheetTy
sheet.ShiftRows(point.DataFirstRowNum.Value, sheet.LastRowNum + 1, -1);
}
}
public static void CloseAutoFilter(string path)
{
try
......@@ -180,5 +179,24 @@ public static void CloseAutoFilter(string path)
{
}
}
/// <summary>
/// 判断文件是否是xlsx文件
/// </summary>
/// <param name="filename">文件名称、文件扩展名</param>
/// <returns></returns>
public static bool IsXlsxFile(string filename)
{
if (string.IsNullOrEmpty(filename)) return false;
string ext = filename;
if (ext.Contains("."))
{
int start = filename.LastIndexOf('.') + 1;
ext = filename.Substring(start, filename.Length - start);
}
return ext.ToLower() == ExcelVersion.xlsx.ToString().ToLower();
}
}
}
......@@ -134,7 +134,7 @@ public HospitalResponse Update(HospitalRequest request)
hospital.IsOpenDrugprop = request.IsOpenDrugprop;
hospital.IsShowManage = request.IsShowManage;
hospital.IsOpenCMIPercent = request.IsOpenCMIPercent;
hospital.IsOpenLogisticsSecondAllot = request.IsOpenLogisticsSecondAllot;
//hospital.IsOpenLogisticsSecondAllot = request.IsOpenLogisticsSecondAllot;
//hospital.IsOpenIncome = request.IsOpenIncome;
if (!_hospitalRepository.Update(hospital))
......
......@@ -512,6 +512,8 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
if (AccountUnitType.行政高层.ToString() == involve || AccountUnitType.行政中层.ToString() == involve)
{
// 行政高层、行政中层 默认不需要二次分配
compute.NeedSecondAllot = "否";
// 行政高层 行政中层 夜班费
compute.NightWorkPerfor = item.NightWorkPerfor;
//考核前绩效
......@@ -523,6 +525,8 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
}
else if (AccountUnitType.行政工勤.ToString() == involve)
{
// 行政工勤 根据测算表判读是否需要二次分配 默认不需要
compute.NeedSecondAllot = string.IsNullOrWhiteSpace(item.NeedSecondAllot) ? "否" : item.NeedSecondAllot;
//考核前绩效
compute.PerforTotal = Math.Round(compute.BaiscNormValue * compute.PostCoefficient * compute.Attendance + compute.OtherPerfor ?? 0);
//考核后绩效 更加开关来控制显示
......
......@@ -70,6 +70,7 @@ public class ExcelReadConfig
new ColumnInfo(nameof(PerDataLogisticsEmployee.PostCoefficient), "岗位系数", true),
new ColumnInfo(nameof(PerDataLogisticsEmployee.Attendance), "出勤率", true),
new ColumnInfo(nameof(PerDataLogisticsEmployee.OthePerfor), "其他绩效", true),
new ColumnInfo(nameof(PerDataLogisticsEmployee.NeedSecondAllot), "是否需要二次分配"),
//new ColumnInfo(nameof(PerDataLogisticsEmployee.AdjustLaterOtherFee), "调节后其他绩效", true),
};
......
......@@ -1614,9 +1614,9 @@ private void SupplementSecondDetail(ag_secondallot second, List<per_employee> em
// return;
// 补充医院其他绩效 及 预留比例
var perapramounts = perapramountRepository.GetEntities(t => t.AllotId == second.AllotId && t.Status == 3);
Func<per_employee, decimal?> getAprAmount = (t) => second.Department == t.AccountingUnit ? perapramounts
?.Where(w => w.PersonnelNumber?.Trim() == t.PersonnelNumber?.Trim())
?.Sum(w => w.Amount) : 0;
Func<per_employee, decimal?> getAprAmount = (t) => second.Department == t.AccountingUnit
? perapramounts?.Where(w => w.PersonnelNumber?.Trim() == t.PersonnelNumber?.Trim())?.Sum(w => w.Amount)
: 0;
var distPerformance = rescomputeRepository.GetEntities(t => t.AllotID == second.AllotId && employees.Select(s => s.PersonnelNumber).Contains(t.JobNumber));
Func<per_employee, decimal?> getDistPerformance = (t) => 0;
......@@ -1671,6 +1671,9 @@ public List<ag_othersource> OtherSave(int secondId, List<ag_othersource> request
existEntities.First(t => t.Id == item.Id).OtherPerformance = item.OtherPerformance;
existEntities.First(t => t.Id == item.Id).NightWorkPerformance = item.NightWorkPerformance;
existEntities.First(t => t.Id == item.Id).RealAmount = item.RealAmount;
existEntities.First(t => t.Id == item.Id).ManagementAllowance = item.ManagementAllowance;
existEntities.First(t => t.Id == item.Id).IndividualReward = item.IndividualReward;
existEntities.First(t => t.Id == item.Id).AllocationOfKeySpecialty = item.AllocationOfKeySpecialty;
}
perforAgothersourceRepository.UpdateRange(existEntities.ToArray());
......
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