Commit 1fa1003f by lcx

Merge branch 'v2020morge' into v2020morge-graphql

parents 17ba6438 2a027676
...@@ -9,7 +9,6 @@ namespace Performance.Infrastructure ...@@ -9,7 +9,6 @@ namespace Performance.Infrastructure
/// </summary> /// </summary>
public static class ConvertHelper public static class ConvertHelper
{ {
public static int TryInt(string inValue, int defaultValue = default(int)) public static int TryInt(string inValue, int defaultValue = default(int))
{ {
int ret = defaultValue; int ret = defaultValue;
...@@ -27,7 +26,7 @@ public static long TryLong(string inValue, long defaultValue = default(int)) ...@@ -27,7 +26,7 @@ public static long TryLong(string inValue, long defaultValue = default(int))
public static decimal TryDecimal(string inValue, decimal defaultValue = default(decimal)) public static decimal TryDecimal(string inValue, decimal defaultValue = default(decimal))
{ {
decimal ret = defaultValue; decimal ret = defaultValue;
decimal.TryParse(inValue, out ret); decimal.TryParse(inValue, System.Globalization.NumberStyles.Float, default, out ret);
return ret; return ret;
} }
...@@ -38,7 +37,6 @@ public static DateTime TryDateTime(string inValue, DateTime defaultValue = defau ...@@ -38,7 +37,6 @@ public static DateTime TryDateTime(string inValue, DateTime defaultValue = defau
return ret; return ret;
} }
/// <summary> /// <summary>
/// 返回默认值 /// 返回默认值
/// </summary> /// </summary>
...@@ -70,8 +68,6 @@ public static T To<T>(object value, T defaultValue = default(T)) ...@@ -70,8 +68,6 @@ public static T To<T>(object value, T defaultValue = default(T))
} }
} }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
...@@ -95,7 +91,5 @@ public static T To<T>(object value, T defaultValue, bool ignoreException) ...@@ -95,7 +91,5 @@ public static T To<T>(object value, T defaultValue, bool ignoreException)
} }
return To<T>(value); return To<T>(value);
} }
} }
} }
...@@ -560,7 +560,21 @@ private List<ComputeResponse> GetSecondPerformance(int allotId) ...@@ -560,7 +560,21 @@ private List<ComputeResponse> GetSecondPerformance(int allotId)
var again = _perforAgcomputeRepository.GetEntities(t => t.AllotId == allotId); var again = _perforAgcomputeRepository.GetEntities(t => t.AllotId == allotId);
if (again != null && again.Any()) if (again != null && again.Any())
{ {
var group = again var disAgains = again.Select(w => new
{
w.AllotId,
w.SecondId,
w.UnitType,
w.Department,
w.WorkPost,
w.JobNumber,
w.PersonName,
w.PerforSumFee,
w.OthePerfor,
w.NightWorkPerfor,
w.RealGiveFee
}).Distinct();
var group = disAgains
.GroupBy(t => new { t.UnitType, t.Department, t.WorkPost, t.JobNumber, t.PersonName }) .GroupBy(t => new { t.UnitType, t.Department, t.WorkPost, t.JobNumber, t.PersonName })
.Select(t => .Select(t =>
{ {
......
using AutoMapper; using AutoMapper;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Performance.DtoModels; using Performance.DtoModels;
using Performance.DtoModels.AppSettings;
using Performance.EntityModels; using Performance.EntityModels;
using Performance.Infrastructure; using Performance.Infrastructure;
using Performance.Repository; using Performance.Repository;
...@@ -14,6 +16,8 @@ namespace Performance.Services ...@@ -14,6 +16,8 @@ namespace Performance.Services
public class SecondAllotDetails : IAutoInjection public class SecondAllotDetails : IAutoInjection
{ {
private readonly ILogger<SecondAllotDetails> _logger; private readonly ILogger<SecondAllotDetails> _logger;
private readonly PerforImemployeelogisticsRepository _imemployeelogisticsRepository;
private readonly Application _application;
private readonly PerforAgsecondallotRepository agsecondallotRepository; private readonly PerforAgsecondallotRepository agsecondallotRepository;
private readonly PerforAgusetempRepository agusetempRepository; private readonly PerforAgusetempRepository agusetempRepository;
private readonly PerforAgtempitemRepository agtempitemRepository; private readonly PerforAgtempitemRepository agtempitemRepository;
...@@ -26,9 +30,12 @@ public class SecondAllotDetails : IAutoInjection ...@@ -26,9 +30,12 @@ public class SecondAllotDetails : IAutoInjection
private readonly PerforPerapramountRepository perapramountRepository; private readonly PerforPerapramountRepository perapramountRepository;
private readonly PerforRescomputeRepository rescomputeRepository; private readonly PerforRescomputeRepository rescomputeRepository;
private readonly PersonService personService; private readonly PersonService personService;
private readonly UserService _userService;
public SecondAllotDetails( public SecondAllotDetails(
ILogger<SecondAllotDetails> logger, ILogger<SecondAllotDetails> logger,
IOptions<Application> application,
PerforImemployeelogisticsRepository imemployeelogisticsRepository,
PerforAgsecondallotRepository agsecondallotRepository, PerforAgsecondallotRepository agsecondallotRepository,
PerforAgusetempRepository agusetempRepository, PerforAgusetempRepository agusetempRepository,
PerforAgtempitemRepository agtempitemRepository, PerforAgtempitemRepository agtempitemRepository,
...@@ -40,10 +47,13 @@ public class SecondAllotDetails : IAutoInjection ...@@ -40,10 +47,13 @@ public class SecondAllotDetails : IAutoInjection
PerforCofagainRepository cofagainRepository, PerforCofagainRepository cofagainRepository,
PerforPerapramountRepository perapramountRepository, PerforPerapramountRepository perapramountRepository,
PerforRescomputeRepository rescomputeRepository, PerforRescomputeRepository rescomputeRepository,
PersonService personService PersonService personService,
UserService userService
) )
{ {
_logger = logger; _logger = logger;
_imemployeelogisticsRepository = imemployeelogisticsRepository;
_application = application.Value;
this.agsecondallotRepository = agsecondallotRepository; this.agsecondallotRepository = agsecondallotRepository;
this.agusetempRepository = agusetempRepository; this.agusetempRepository = agusetempRepository;
this.agtempitemRepository = agtempitemRepository; this.agtempitemRepository = agtempitemRepository;
...@@ -56,6 +66,7 @@ PersonService personService ...@@ -56,6 +66,7 @@ PersonService personService
this.perapramountRepository = perapramountRepository; this.perapramountRepository = perapramountRepository;
this.rescomputeRepository = rescomputeRepository; this.rescomputeRepository = rescomputeRepository;
this.personService = personService; this.personService = personService;
_userService = userService;
} }
#region 横向纵向模板详情 #region 横向纵向模板详情
...@@ -580,6 +591,33 @@ public List<ag_othersource> GetOtherTempDetails(int userId, int secondId, int is ...@@ -580,6 +591,33 @@ public List<ag_othersource> GetOtherTempDetails(int userId, int secondId, int is
var employees = personService.GetPersons(secondAllot.AllotId.Value, userId)?.Where(t => t.UnitType == secondAllot.UnitType).ToList(); var employees = personService.GetPersons(secondAllot.AllotId.Value, userId)?.Where(t => t.UnitType == secondAllot.UnitType).ToList();
var role = _userService.GetUserFirstRole(userId);
//行政科室 只有两种逻辑,或从保存中加载,或加载EXCEL表
if (role?.Type == _application.OfficeRole)
{
// 如果已经保存>>走保存加载逻辑
if (employeeSource == (int)EmployeeSource.Initial)
{
result = savedDataList.OrderBy(t => t.Id).ToList();
}
// 如果没保存>>走加载im_employee_logistics人员名单逻辑
else
{
var types = new string[] { "行政后勤", "行政工勤" };
var logistics = _imemployeelogisticsRepository.GetEntities(w => w.AllotID == secondAllot.AllotId && types.Contains(w.AccountType) && w.AccountingUnit == secondAllot.Department);
result = (logistics ?? new List<im_employee_logistics>()).Select(w => new ag_othersource
{
SecondId = secondId,
WorkNumber = w.PersonnelNumber,
Name = w.DoctorName,
Department = w.AccountingUnit,
WorkPost = w.JobTitle,
}).ToDistinct().ToList();
}
}
//非行政科室 有三种逻辑,或从保存中加载,或从人员字典加载,或从上次绩效中加载
else
{
switch (employeeSource) switch (employeeSource)
{ {
case (int)EmployeeSource.Initial: case (int)EmployeeSource.Initial:
...@@ -614,11 +652,8 @@ public List<ag_othersource> GetOtherTempDetails(int userId, int secondId, int is ...@@ -614,11 +652,8 @@ public List<ag_othersource> GetOtherTempDetails(int userId, int secondId, int is
}).ToList(); }).ToList();
} }
break; break;
default:
break;
} }
}
var originalEmployees = personService.GetPerEmployee(secondAllot.AllotId.Value); var originalEmployees = personService.GetPerEmployee(secondAllot.AllotId.Value);
SupplementSecondDetail(secondAllot, originalEmployees, result, isSupplementTitlePerformance); SupplementSecondDetail(secondAllot, originalEmployees, result, isSupplementTitlePerformance);
...@@ -634,30 +669,33 @@ public List<ag_othersource> GetOtherTempDetails(int userId, int secondId, int is ...@@ -634,30 +669,33 @@ public List<ag_othersource> GetOtherTempDetails(int userId, int secondId, int is
/// <param name="isTitlePerformance">是否补全职称绩效</param> /// <param name="isTitlePerformance">是否补全职称绩效</param>
private void SupplementSecondDetail(ag_secondallot second, List<per_employee> employees, List<ag_othersource> result, bool isTitlePerformance = true) private void SupplementSecondDetail(ag_secondallot second, List<per_employee> employees, List<ag_othersource> result, bool isTitlePerformance = true)
{ {
//if (employees == null || !employees.Any(t => t.UnitType == second.UnitType))
// return;
// 补充医院其他绩效 及 预留比例 // 补充医院其他绩效 及 预留比例
var perapramounts = perapramountRepository.GetEntities(t => t.AllotId == second.AllotId && t.Status == 3); var perapramounts = perapramountRepository.GetEntities(t => t.AllotId == second.AllotId && t.Status == 3);
Func<per_employee, decimal?> getAprAmount = (t) => second.Department == t.AccountingUnit ? perapramounts var distPerformance = rescomputeRepository.GetEntities(t => t.AllotID == second.AllotId);
?.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;
if (second.UnitType == UnitType.行政后勤.ToString())
getDistPerformance = (t) => second.Department == t.AccountingUnit ? distPerformance
?.Where(w => w.JobNumber?.Trim() == t.PersonnelNumber?.Trim())
?.Sum(w => w.GiveFee) : 0;
foreach (var item in result) foreach (var item in result)
{ {
var empl = employees.FirstOrDefault(w => w.PersonnelNumber?.Trim() == item.WorkNumber?.Trim()); var empl = employees?.FirstOrDefault(w => w.PersonnelNumber?.Trim() == item.WorkNumber?.Trim());
if (empl != null) item.ReservedRatio = empl?.ReservedRatio ?? 0;
// 如果是行政后勤,则把绩效放在工作量上
if (isTitlePerformance && second.UnitType == UnitType.行政后勤.ToString())
{
item.WorkPerformance = distPerformance?.Where(w => w.AccountingUnit == item.Department && w.JobNumber?.Trim() == item.WorkNumber?.Trim())?.Sum(w => w.GiveFee);
if (string.IsNullOrEmpty(item.WorkNumber))
item.WorkPerformance = distPerformance?.Where(w => w.AccountingUnit == item.Department && w.JobNumber?.Trim() == item.WorkNumber?.Trim() && w.EmployeeName?.Trim() == item.Name?.Trim())?.Sum(w => w.GiveFee);
}
if (second.UnitType == UnitType.行政后勤.ToString())
{
item.OtherPerformance = perapramounts?.Where(w => w.AccountingUnit == item.Department && w.PersonnelNumber?.Trim() == item.WorkNumber?.Trim())?.Sum(w => w.Amount);
if (string.IsNullOrEmpty(item.WorkNumber))
item.OtherPerformance = perapramounts?.Where(w => w.AccountingUnit == item.Department && w.PersonnelNumber?.Trim() == item.WorkNumber?.Trim() && w.DoctorName?.Trim() == item.Name?.Trim())?.Sum(w => w.Amount);
}
else if (!string.IsNullOrEmpty(empl?.AccountingUnit))
{ {
item.ReservedRatio = empl.ReservedRatio; item.OtherPerformance = perapramounts?.Where(w => w.AccountingUnit == empl?.AccountingUnit && w.PersonnelNumber?.Trim() == item.WorkNumber?.Trim())?.Sum(w => w.Amount);
item.OtherPerformance = getAprAmount(empl); if (string.IsNullOrEmpty(item.WorkNumber))
if (isTitlePerformance) item.OtherPerformance = perapramounts?.Where(w => w.AccountingUnit == empl?.AccountingUnit && w.PersonnelNumber?.Trim() == item.WorkNumber?.Trim() && w.DoctorName?.Trim() == item.Name?.Trim())?.Sum(w => w.Amount);
item.TitlePerformance = getDistPerformance(empl);
} }
} }
} }
......
...@@ -41,7 +41,7 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader) ...@@ -41,7 +41,7 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
{ {
object @object = row.GetCell(point).GetValue(); object @object = row.GetCell(point).GetValue();
if (item.IsNumber) if (item.IsNumber)
@object = ConvertHelper.To<decimal?>(@object); @object = ConvertHelper.TryDecimal(@object?.ToString());
if (dic.Keys.Contains(item.Field)) if (dic.Keys.Contains(item.Field))
dic[item.Field] = @object; dic[item.Field] = @object;
......
...@@ -109,6 +109,24 @@ public UserIdentity GetUser(int userId) ...@@ -109,6 +109,24 @@ public UserIdentity GetUser(int userId)
} }
/// <summary> /// <summary>
/// 获取用户第一个角色
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public sys_role GetUserFirstRole(int userId)
{
var user = _userRepository.GetEntity(t => t.ID == userId);
if (user == null)
throw new PerformanceException("用户信息查询失败");
var userrole = _userroleRepository.GetEntity(t => t.UserID == userId);
if (userrole == null)
throw new PerformanceException("角色信息查询失败");
var role = _roleRepository.GetEntity(t => t.ID == userrole.RoleID);
return role;
}
/// <summary>
/// 查询用户列表 /// 查询用户列表
/// </summary> /// </summary>
/// <param name="userID"></param> /// <param name="userID"></param>
......
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