|
@@ -1,4 +1,5 @@
|
|
|
-using DocumentFormat.OpenXml.Office2010.ExcelAc;
|
|
|
+using DocumentFormat.OpenXml.Drawing.Diagrams;
|
|
|
+using DocumentFormat.OpenXml.Office2010.ExcelAc;
|
|
|
using DynamicExpresso;
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
using Microsoft.AspNetCore.Http;
|
|
@@ -2376,19 +2377,32 @@ namespace wispro.sp.api.Controllers
|
|
|
|
|
|
if (DateTime.Parse($"{item.CalMonth.Year}-{item.CalMonth.Month}-01") > DateTime.Parse("2024-11-01"))
|
|
|
{
|
|
|
- if (item.isDanger() && item.OverDueMemo == null)
|
|
|
+ if (item.isDanger())
|
|
|
{
|
|
|
- #region 完成日期-委托日期>45天为延迟,每延迟一天绩效减去0.5个百分点
|
|
|
- DateTime? dt1 = item.EntrustingDate;
|
|
|
- DateTime? dt2 = item.FinishedDate;
|
|
|
+ double delayDays = 0.0;
|
|
|
+ if (item.OverDueMemo == null)
|
|
|
+ {
|
|
|
+ #region 完成日期-委托日期>45天为延迟,每延迟一天绩效减去0.5个百分点
|
|
|
+ DateTime? dt1 = item.EntrustingDate;
|
|
|
+ DateTime? dt2 = item.FinishedDate;
|
|
|
|
|
|
- if (dt2 == null)
|
|
|
+ if (dt2 == null)
|
|
|
+ {
|
|
|
+ dt2 = DateTime.Now;
|
|
|
+ }
|
|
|
+ delayDays = (dt2.Value - dt1.Value).TotalDays-45;
|
|
|
+
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
- dt2 = DateTime.Now;
|
|
|
+ if (item.FinallyDelayDays != null)
|
|
|
+ {
|
|
|
+ delayDays = item.FinallyDelayDays.Value;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- baseMony = baseMony * (100 - ((dt2.Value - dt1.Value).TotalDays - 45) * 0.5) / 100.00;
|
|
|
- #endregion
|
|
|
+ baseMony = baseMony * (100 - delayDays * 0.5) / 100.00;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -4037,8 +4051,8 @@ namespace wispro.sp.api.Controllers
|
|
|
|
|
|
if(p.Type == "其他新申请")
|
|
|
{
|
|
|
- //宁德时代的案件按照B统计
|
|
|
- strCaseCeoffcient = "B";
|
|
|
+ //宁德时代的案件按照A统计
|
|
|
+ strCaseCeoffcient = "A";
|
|
|
}
|
|
|
|
|
|
if (string.IsNullOrEmpty(strCaseCeoffcient))
|
|
@@ -4064,146 +4078,256 @@ namespace wispro.sp.api.Controllers
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
- var pointList = spDb.StaffStatistics.Include(i=>i.Staff).Where(i=>i.ItemId == p.Id).ToList();
|
|
|
|
|
|
- #region 新申请处理
|
|
|
- var doList = pointList.Where(i => i.jxType.Contains("处理"));
|
|
|
-
|
|
|
- int doPersons = doList.Count();
|
|
|
- if (p.ItemStaffs.Count() > doList.Count())
|
|
|
+ if (p.Type == "其他新申请")
|
|
|
{
|
|
|
- doPersons = p.ItemStaffs.Count;
|
|
|
- foreach (ItemStaff itemStaff in p.ItemStaffs)
|
|
|
+ var aList = spDb.AllocationRatios
|
|
|
+ .Include(i=>i.Person)
|
|
|
+ .ThenInclude(i=>i.StaffGrade)
|
|
|
+ .Where(i=>i.ItemId == p.Id).ToList();
|
|
|
+
|
|
|
+ int doPersons = aList.Count();
|
|
|
+ if (p.ItemStaffs.Count() > aList.Count())
|
|
|
{
|
|
|
- Staff staff = itemStaff.DoPerson;
|
|
|
- if (staff == null)
|
|
|
+ doPersons = p.ItemStaffs.Count;
|
|
|
+ foreach (ItemStaff itemStaff in p.ItemStaffs)
|
|
|
{
|
|
|
- staff = spDb.Staffs.FirstOrDefault(s => s.Id == itemStaff.DoPersonId);
|
|
|
- }
|
|
|
+ Staff staff = itemStaff.DoPerson;
|
|
|
+ if (staff == null)
|
|
|
+ {
|
|
|
+ staff = spDb.Staffs.FirstOrDefault(s => s.Id == itemStaff.DoPersonId);
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
+ if (staff.Status == "试用期")
|
|
|
+ {
|
|
|
+ doPersons = doPersons - 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if (staff.Status == "试用期")
|
|
|
+ if (doPersons > 0)
|
|
|
+ {
|
|
|
+ foreach (var h in aList)
|
|
|
{
|
|
|
- doPersons =doPersons- 1;
|
|
|
+ var doPerson = p.ItemStaffs.Where(i => i.DoPersonId == h.PersonId).FirstOrDefault();
|
|
|
+
|
|
|
+ if (doPerson == null)
|
|
|
+ {
|
|
|
+ var temObj = retlist.FirstOrDefault(s => s.StaffId == h.PersonId && s.Type == "新申请" && s.isReview == false);
|
|
|
+ if (temObj == null)
|
|
|
+ {
|
|
|
+ temObj = new StaffStatisticsforLevel();
|
|
|
+ temObj.StaffId = h.PersonId;
|
|
|
+
|
|
|
+ temObj.GradeId = h.Person.StaffGradeId.Value;
|
|
|
+
|
|
|
+ temObj.CalMonthId = p.CalMonthId;
|
|
|
+ temObj.Type = "新申请";
|
|
|
+ retlist.Add(temObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (strCaseCeoffcient)
|
|
|
+ {
|
|
|
+ case "S":
|
|
|
+ temObj.S += (double)(1.0M / (decimal)doPersons);
|
|
|
+ break;
|
|
|
+ case "A":
|
|
|
+ temObj.A += (double)(1.0M / (decimal)doPersons);
|
|
|
+ break;
|
|
|
+ case "B":
|
|
|
+ temObj.B += (double)(1.0M / (decimal)doPersons);
|
|
|
+ break;
|
|
|
+ case "C":
|
|
|
+ temObj.C += (double)(1.0M / (decimal)doPersons);
|
|
|
+ break;
|
|
|
+ case "D":
|
|
|
+ temObj.D += (double)(1.0M / (decimal)doPersons);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var temObj = retlist.FirstOrDefault(s => s.StaffId == h.PersonId && s.Type == "新申请" && s.isReview == true);
|
|
|
+
|
|
|
+ if (temObj == null)
|
|
|
+ {
|
|
|
+ temObj = new StaffStatisticsforLevel();
|
|
|
+ temObj.StaffId = h.PersonId;
|
|
|
+ temObj.GradeId = h.Person.StaffGradeId.Value;
|
|
|
+
|
|
|
+
|
|
|
+ temObj.CalMonthId = p.CalMonthId;
|
|
|
+ temObj.Type = "新申请";
|
|
|
+ temObj.isReview = true;
|
|
|
+ retlist.Add(temObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (strCaseCeoffcient)
|
|
|
+ {
|
|
|
+ case "S":
|
|
|
+ temObj.S += 1;
|
|
|
+ break;
|
|
|
+ case "A":
|
|
|
+ temObj.A += 1;
|
|
|
+ break;
|
|
|
+ case "B":
|
|
|
+ temObj.B += 1;
|
|
|
+ break;
|
|
|
+ case "C":
|
|
|
+ temObj.C += 1;
|
|
|
+ break;
|
|
|
+ case "D":
|
|
|
+ temObj.D += 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- if(doPersons >0)
|
|
|
+ else
|
|
|
{
|
|
|
- foreach(var h in doList)
|
|
|
+ var pointList = spDb.StaffStatistics.Include(i => i.Staff).Where(i => i.ItemId == p.Id).ToList();
|
|
|
+
|
|
|
+ #region 新申请处理
|
|
|
+ var doList = pointList.Where(i => i.jxType.Contains("处理"));
|
|
|
+
|
|
|
+ int doPersons = doList.Count();
|
|
|
+ if (p.ItemStaffs.Count() > doList.Count())
|
|
|
+ {
|
|
|
+ doPersons = p.ItemStaffs.Count;
|
|
|
+ foreach (ItemStaff itemStaff in p.ItemStaffs)
|
|
|
+ {
|
|
|
+ Staff staff = itemStaff.DoPerson;
|
|
|
+ if (staff == null)
|
|
|
+ {
|
|
|
+ staff = spDb.Staffs.FirstOrDefault(s => s.Id == itemStaff.DoPersonId);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (staff.Status == "试用期")
|
|
|
+ {
|
|
|
+ doPersons = doPersons - 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (doPersons > 0)
|
|
|
+ {
|
|
|
+ foreach (var h in doList)
|
|
|
+ {
|
|
|
+ var temObj = retlist.FirstOrDefault(s => s.StaffId == h.StaffId && s.Type == "新申请" && s.isReview == false);
|
|
|
+ if (temObj == null)
|
|
|
+ {
|
|
|
+ temObj = new StaffStatisticsforLevel();
|
|
|
+ temObj.StaffId = h.StaffId;
|
|
|
+
|
|
|
+ temObj.GradeId = h.Staff.StaffGradeId.Value;
|
|
|
+
|
|
|
+ temObj.CalMonthId = p.CalMonthId;
|
|
|
+ temObj.Type = "新申请";
|
|
|
+ retlist.Add(temObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (strCaseCeoffcient)
|
|
|
+ {
|
|
|
+ case "S":
|
|
|
+ if (p.Type == "专案")
|
|
|
+ {
|
|
|
+ temObj.S += h.totalBasePoint.Value;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ temObj.S += (double)(1.0M / (decimal)doPersons);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "A":
|
|
|
+ if (p.Type == "专案")
|
|
|
+ {
|
|
|
+ temObj.A += h.totalBasePoint.Value;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ temObj.A += (double)(1.0M / (decimal)doPersons);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "B":
|
|
|
+ if (p.Type == "专案")
|
|
|
+ {
|
|
|
+ temObj.B += h.totalBasePoint.Value;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ temObj.B += (double)(1.0M / (decimal)doPersons);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "C":
|
|
|
+ if (p.Type == "专案")
|
|
|
+ {
|
|
|
+ temObj.C += h.totalBasePoint.Value;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ temObj.C += (double)(1.0M / (decimal)doPersons);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "D":
|
|
|
+ if (p.Type == "专案")
|
|
|
+ {
|
|
|
+ temObj.D += h.totalBasePoint.Value;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ temObj.D += (double)(1.0M / (decimal)doPersons);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 新申请审核
|
|
|
+ var reviewer = pointList.FirstOrDefault(i => i.jxType.Contains("审核"));
|
|
|
+ if (reviewer != null)
|
|
|
{
|
|
|
- var temObj = retlist.FirstOrDefault(s=>s.StaffId == h.StaffId && s.Type == "新申请" && s.isReview == false);
|
|
|
- if(temObj == null)
|
|
|
+ var temObj = retlist.FirstOrDefault(s => s.StaffId == reviewer.StaffId && s.Type == "新申请" && s.isReview == true);
|
|
|
+
|
|
|
+ if (temObj == null)
|
|
|
{
|
|
|
temObj = new StaffStatisticsforLevel();
|
|
|
- temObj.StaffId = h.StaffId;
|
|
|
-
|
|
|
- temObj.GradeId = h.Staff.StaffGradeId.Value ;
|
|
|
+ temObj.StaffId = reviewer.StaffId;
|
|
|
+ temObj.GradeId = reviewer.Staff.StaffGradeId.Value;
|
|
|
+
|
|
|
|
|
|
temObj.CalMonthId = p.CalMonthId;
|
|
|
temObj.Type = "新申请";
|
|
|
+ temObj.isReview = true;
|
|
|
retlist.Add(temObj);
|
|
|
}
|
|
|
|
|
|
switch (strCaseCeoffcient)
|
|
|
{
|
|
|
case "S":
|
|
|
- if(p.Type == "专案")
|
|
|
- {
|
|
|
- temObj.S += h.totalBasePoint.Value;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- temObj.S+=(double)(1.0M/ (decimal)doPersons);
|
|
|
- }
|
|
|
+ temObj.S += 1;
|
|
|
break;
|
|
|
case "A":
|
|
|
- if (p.Type == "专案")
|
|
|
- {
|
|
|
- temObj.A += h.totalBasePoint.Value;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- temObj.A += (double)(1.0M / (decimal)doPersons);
|
|
|
- }
|
|
|
+ temObj.A += 1;
|
|
|
break;
|
|
|
case "B":
|
|
|
- if (p.Type == "专案")
|
|
|
- {
|
|
|
- temObj.B += h.totalBasePoint.Value;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- temObj.B += (double)(1.0M / (decimal)doPersons);
|
|
|
- }
|
|
|
+ temObj.B += 1;
|
|
|
break;
|
|
|
case "C":
|
|
|
- if (p.Type == "专案")
|
|
|
- {
|
|
|
- temObj.C += h.totalBasePoint.Value;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- temObj.C += (double)(1.0M / (decimal)doPersons);
|
|
|
- }
|
|
|
+ temObj.C += 1;
|
|
|
break;
|
|
|
case "D":
|
|
|
- if (p.Type == "专案")
|
|
|
- {
|
|
|
- temObj.D += h.totalBasePoint.Value;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- temObj.D += (double)(1.0M / (decimal)doPersons);
|
|
|
- }
|
|
|
+ temObj.D += 1;
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- #endregion
|
|
|
-
|
|
|
- #region 新申请审核
|
|
|
- var reviewer = pointList.FirstOrDefault(i => i.jxType.Contains("审核"));
|
|
|
- if(reviewer != null)
|
|
|
- {
|
|
|
- var temObj = retlist.FirstOrDefault(s => s.StaffId == reviewer.StaffId && s.Type == "新申请" && s.isReview == true);
|
|
|
-
|
|
|
- if(temObj == null)
|
|
|
- {
|
|
|
- temObj = new StaffStatisticsforLevel();
|
|
|
- temObj.StaffId = reviewer.StaffId;
|
|
|
- temObj.GradeId = reviewer.Staff.StaffGradeId.Value;
|
|
|
-
|
|
|
-
|
|
|
- temObj.CalMonthId = p.CalMonthId;
|
|
|
- temObj.Type = "新申请";
|
|
|
- temObj.isReview = true;
|
|
|
- retlist.Add(temObj);
|
|
|
- }
|
|
|
-
|
|
|
- switch (strCaseCeoffcient)
|
|
|
- {
|
|
|
- case "S":
|
|
|
- temObj.S += 1;
|
|
|
- break;
|
|
|
- case "A":
|
|
|
- temObj.A += 1;
|
|
|
- break;
|
|
|
- case "B":
|
|
|
- temObj.B += 1;
|
|
|
- break;
|
|
|
- case "C":
|
|
|
- temObj.C += 1;
|
|
|
- break;
|
|
|
- case "D":
|
|
|
- temObj.D += 1;
|
|
|
- break;
|
|
|
}
|
|
|
+ #endregion
|
|
|
}
|
|
|
- #endregion
|
|
|
}
|
|
|
#endregion
|
|
|
|