|
@@ -494,10 +494,10 @@ namespace wispro.sp.api.Controllers
|
|
{
|
|
{
|
|
if (item.Item != null)
|
|
if (item.Item != null)
|
|
{
|
|
{
|
|
- if(item.Item.CaseNo == "PACN2220066")
|
|
|
|
- {
|
|
|
|
- System.Diagnostics.Debug.WriteLine("");
|
|
|
|
- }
|
|
|
|
|
|
+ //if(item.Item.CaseNo == "PACN2220066")
|
|
|
|
+ //{
|
|
|
|
+ // System.Diagnostics.Debug.WriteLine("");
|
|
|
|
+ //}
|
|
//合写人数
|
|
//合写人数
|
|
decimal CaseNumber = 1M;
|
|
decimal CaseNumber = 1M;
|
|
|
|
|
|
@@ -508,7 +508,11 @@ namespace wispro.sp.api.Controllers
|
|
item.Item .ItemStaffs = spDb.ItemStaffs.Include(p => p.DoPerson).Where(p => p.ItemId == item.ItemId).ToList();
|
|
item.Item .ItemStaffs = spDb.ItemStaffs.Include(p => p.DoPerson).Where(p => p.ItemId == item.ItemId).ToList();
|
|
}
|
|
}
|
|
|
|
|
|
- CaseNumber = CaseNumber / (item.Item.ItemStaffs.Where(i=> i.DoPerson.IsCalPerformsnce==true || (i.DoPerson.Status !="试用期" && i.DoPerson.IsCalPerformsnce ==false)).Count());
|
|
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ CaseNumber = CaseNumber / (item.Item.ItemStaffs.Where(i => i.DoPerson.IsCalPerformsnce == true || (i.DoPerson.Status != "试用期" && i.DoPerson.IsCalPerformsnce == false)).Count());
|
|
|
|
+ }
|
|
|
|
+ catch { }
|
|
}
|
|
}
|
|
|
|
|
|
string strCaseCeoffcient = item.Item.CaseCoefficient;
|
|
string strCaseCeoffcient = item.Item.CaseCoefficient;
|
|
@@ -2101,7 +2105,7 @@ namespace wispro.sp.api.Controllers
|
|
|
|
|
|
string temJxType = $"{item.Type}审核";
|
|
string temJxType = $"{item.Type}审核";
|
|
|
|
|
|
- var temReviewerStatic = itemStatistics.Where<StaffStatistics>(s => s.StaffId == item.ReviewerId && s.jxType == temJxType && s.CalMonth.Id == item.CalMonthId).FirstOrDefault();
|
|
|
|
|
|
+ var temReviewerStatic = itemStatistics.Where<StaffStatistics>(s => s.StaffId == item.ReviewerId && s.jxType == temJxType && s.CalMonthId == item.CalMonthId).FirstOrDefault();
|
|
if (temReviewerStatic != null)
|
|
if (temReviewerStatic != null)
|
|
{
|
|
{
|
|
temReviewerStatic.totalBasePoint += reviewerBasePoint;
|
|
temReviewerStatic.totalBasePoint += reviewerBasePoint;
|
|
@@ -2341,8 +2345,9 @@ namespace wispro.sp.api.Controllers
|
|
|
|
|
|
calMonth.Status = 4;
|
|
calMonth.Status = 4;
|
|
spDb.SaveChanges();
|
|
spDb.SaveChanges();
|
|
-
|
|
|
|
- StatisticsCount(calMonth.Id,spDb); //等级核算案件统计
|
|
|
|
|
|
+
|
|
|
|
+ //等级核算案件统计
|
|
|
|
+ _StatisticsLevelCount(calMonth.Year, calMonth.Month, spDb);
|
|
|
|
|
|
#region 将待审核的申诉全部修改为已审核
|
|
#region 将待审核的申诉全部修改为已审核
|
|
var aList = spDb.AppealRecords.Where(a => a.State == 0).ToList();
|
|
var aList = spDb.AppealRecords.Where(a => a.State == 0).ToList();
|
|
@@ -2614,6 +2619,7 @@ namespace wispro.sp.api.Controllers
|
|
|
|
|
|
if (item.ReviewerId != null && item.BasePoint.HasValue)
|
|
if (item.ReviewerId != null && item.BasePoint.HasValue)
|
|
{
|
|
{
|
|
|
|
+ System.Diagnostics.Debug.WriteLine($"{item.ReviewerId}");
|
|
var jxList = _calItemJX( verifyCoefficients, item, new spDbContext());
|
|
var jxList = _calItemJX( verifyCoefficients, item, new spDbContext());
|
|
|
|
|
|
row["核稿系数"] = "";
|
|
row["核稿系数"] = "";
|
|
@@ -3019,7 +3025,7 @@ namespace wispro.sp.api.Controllers
|
|
{
|
|
{
|
|
if (temObj.Reviewer != null)
|
|
if (temObj.Reviewer != null)
|
|
{
|
|
{
|
|
- string strReViewer = temObj.Reviewer.ToString();
|
|
|
|
|
|
+ string strReViewer = temObj.Reviewer.ToString().Replace("-君龙", "");
|
|
var temReviewer = Context.Staffs.Where(s => s.Name == strReViewer.Trim()).FirstOrDefault();
|
|
var temReviewer = Context.Staffs.Where(s => s.Name == strReViewer.Trim()).FirstOrDefault();
|
|
if (temReviewer != null)
|
|
if (temReviewer != null)
|
|
{
|
|
{
|
|
@@ -3037,7 +3043,8 @@ namespace wispro.sp.api.Controllers
|
|
List<ItemStaff> itemStaffs = new List<ItemStaff>();
|
|
List<ItemStaff> itemStaffs = new List<ItemStaff>();
|
|
foreach (var doPerson in Persons)
|
|
foreach (var doPerson in Persons)
|
|
{
|
|
{
|
|
- itemStaffs.Add(new ItemStaff() { DoPerson = new Staff() { Name = doPerson } });
|
|
|
|
|
|
+ string strName = doPerson.Replace("-君龙","");
|
|
|
|
+ itemStaffs.Add(new ItemStaff() { DoPerson = new Staff() { Name = strName } });
|
|
}
|
|
}
|
|
retObj.ItemStaffs = itemStaffs;
|
|
retObj.ItemStaffs = itemStaffs;
|
|
}
|
|
}
|
|
@@ -3124,17 +3131,65 @@ namespace wispro.sp.api.Controllers
|
|
var retlist = new List<StaffStatisticsforLevel>();
|
|
var retlist = new List<StaffStatisticsforLevel>();
|
|
|
|
|
|
#region 新申请
|
|
#region 新申请
|
|
- var newList = spDb.PerformanceItems.Include(p => p.ItemStaffs)
|
|
|
|
|
|
+ var newList = spDb.PerformanceItems.Include(p => p.ItemStaffs).ThenInclude(p=>p.DoPerson)
|
|
|
|
+ .Include(p=>p.CalMonth)
|
|
.Where(p=>p.CalMonthId == calMonthId && p.BasePoint >0
|
|
.Where(p=>p.CalMonthId == calMonthId && p.BasePoint >0
|
|
&& (p.Type =="新申请" || p.Type =="专案" || (p.Type == "其它" && p.WordCount >0 && (p.DoItem =="新申请" || p.DoItem == "翻译")))
|
|
&& (p.Type =="新申请" || p.Type =="专案" || (p.Type == "其它" && p.WordCount >0 && (p.DoItem =="新申请" || p.DoItem == "翻译")))
|
|
).ToList();
|
|
).ToList();
|
|
|
|
|
|
foreach(var p in newList)
|
|
foreach(var p in newList)
|
|
{
|
|
{
|
|
|
|
+ #region 严重延期降系数
|
|
|
|
+ string strCaseCeoffcient = p.CaseCoefficient;
|
|
|
|
+ if (string.IsNullOrEmpty(strCaseCeoffcient))
|
|
|
|
+ {
|
|
|
|
+ strCaseCeoffcient = "B";
|
|
|
|
+ }
|
|
|
|
+ if (p.isDanger() && string.IsNullOrEmpty(p.OverDueMemo))
|
|
|
|
+ {
|
|
|
|
+ switch (p.CaseCoefficient)
|
|
|
|
+ {
|
|
|
|
+ case "S":
|
|
|
|
+ strCaseCeoffcient = "A";
|
|
|
|
+ break;
|
|
|
|
+ case "A":
|
|
|
|
+ strCaseCeoffcient = "B";
|
|
|
|
+ break;
|
|
|
|
+ case "B":
|
|
|
|
+ strCaseCeoffcient = "C";
|
|
|
|
+ break;
|
|
|
|
+ case "C":
|
|
|
|
+ strCaseCeoffcient = "D";
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ #endregion
|
|
var pointList = spDb.StaffStatistics.Include(i=>i.Staff).Where(i=>i.ItemId == p.Id).ToList();
|
|
var pointList = spDb.StaffStatistics.Include(i=>i.Staff).Where(i=>i.ItemId == p.Id).ToList();
|
|
|
|
|
|
#region 新申请处理
|
|
#region 新申请处理
|
|
var doList = pointList.Where(i => i.jxType.Contains("处理"));
|
|
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;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
foreach(var h in doList)
|
|
foreach(var h in doList)
|
|
{
|
|
{
|
|
var temObj = retlist.FirstOrDefault(s=>s.StaffId == h.StaffId && s.Type == "新申请" && s.isReview == false);
|
|
var temObj = retlist.FirstOrDefault(s=>s.StaffId == h.StaffId && s.Type == "新申请" && s.isReview == false);
|
|
@@ -3155,7 +3210,7 @@ namespace wispro.sp.api.Controllers
|
|
retlist.Add(temObj);
|
|
retlist.Add(temObj);
|
|
}
|
|
}
|
|
|
|
|
|
- switch (p.CaseCoefficient)
|
|
|
|
|
|
+ switch (strCaseCeoffcient)
|
|
{
|
|
{
|
|
case "S":
|
|
case "S":
|
|
if(p.Type == "专案")
|
|
if(p.Type == "专案")
|
|
@@ -3164,7 +3219,7 @@ namespace wispro.sp.api.Controllers
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- temObj.S+=(double)(1.0M/ (decimal)doList.Count());
|
|
|
|
|
|
+ temObj.S+=(double)(1.0M/ (decimal)doPersons);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case "A":
|
|
case "A":
|
|
@@ -3174,7 +3229,7 @@ namespace wispro.sp.api.Controllers
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- temObj.A += (double)(1.0M / (decimal)doList.Count());
|
|
|
|
|
|
+ temObj.A += (double)(1.0M / (decimal)doPersons);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case "B":
|
|
case "B":
|
|
@@ -3184,7 +3239,7 @@ namespace wispro.sp.api.Controllers
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- temObj.B += (double)(1.0M / (decimal)doList.Count());
|
|
|
|
|
|
+ temObj.B += (double)(1.0M / (decimal)doPersons);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case "C":
|
|
case "C":
|
|
@@ -3194,7 +3249,7 @@ namespace wispro.sp.api.Controllers
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- temObj.C += (double)(1.0M / (decimal)doList.Count());
|
|
|
|
|
|
+ temObj.C += (double)(1.0M / (decimal)doPersons);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case "D":
|
|
case "D":
|
|
@@ -3204,7 +3259,7 @@ namespace wispro.sp.api.Controllers
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- temObj.D += (double)(1.0M / (decimal)doList.Count());
|
|
|
|
|
|
+ temObj.D += (double)(1.0M / (decimal)doPersons);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -3234,7 +3289,7 @@ namespace wispro.sp.api.Controllers
|
|
retlist.Add(temObj);
|
|
retlist.Add(temObj);
|
|
}
|
|
}
|
|
|
|
|
|
- switch (p.CaseCoefficient)
|
|
|
|
|
|
+ switch (strCaseCeoffcient)
|
|
{
|
|
{
|
|
case "S":
|
|
case "S":
|
|
temObj.S += 1;
|
|
temObj.S += 1;
|
|
@@ -3246,7 +3301,7 @@ namespace wispro.sp.api.Controllers
|
|
temObj.B += 1;
|
|
temObj.B += 1;
|
|
break;
|
|
break;
|
|
case "C":
|
|
case "C":
|
|
- temObj.D += 1;
|
|
|
|
|
|
+ temObj.C += 1;
|
|
break;
|
|
break;
|
|
case "D":
|
|
case "D":
|
|
temObj.D += 1;
|
|
temObj.D += 1;
|
|
@@ -3259,10 +3314,13 @@ namespace wispro.sp.api.Controllers
|
|
|
|
|
|
#region 国内OA
|
|
#region 国内OA
|
|
var cnOA = spDb.PerformanceItems.Include(x=>x.ItemStaffs)
|
|
var cnOA = spDb.PerformanceItems.Include(x=>x.ItemStaffs)
|
|
- .Where(x => x.CalMonthId == calMonthId && x.Type == "OA" && x.CaseNo.Contains("CN") && x.BasePoint > 0
|
|
|
|
- && (x.CaseStage == "一通" || x.DoItemCoefficient.Contains("首次转入"))).ToList();
|
|
|
|
|
|
+ .Where(x => x.CalMonthId == calMonthId && x.Type == "OA" && x.CaseNo.Contains("CN") && x.BasePoint > 0.3
|
|
|
|
+ ).ToList();
|
|
|
|
|
|
- foreach(var p in cnOA)
|
|
|
|
|
|
+ //因为不是所有的OA案件都是答复审查意见,所以有些应该没有一通或首次转入信息,去掉这个条件:
|
|
|
|
+ //&& (x.CaseStage == "一通" || x.DoItemCoefficient.Contains("首次转入"))
|
|
|
|
+
|
|
|
|
+ foreach (var p in cnOA)
|
|
{
|
|
{
|
|
var pointList = spDb.StaffStatistics.Include(i => i.Staff).Where(i=> i.ItemId == p.Id).ToList();
|
|
var pointList = spDb.StaffStatistics.Include(i => i.Staff).Where(i=> i.ItemId == p.Id).ToList();
|
|
|
|
|
|
@@ -3302,6 +3360,9 @@ namespace wispro.sp.api.Controllers
|
|
case "D":
|
|
case "D":
|
|
temObj.D += (double)(1.0M / (decimal)doList.Count());
|
|
temObj.D += (double)(1.0M / (decimal)doList.Count());
|
|
break;
|
|
break;
|
|
|
|
+ default:
|
|
|
|
+ temObj.B += (double)(1.0M / (decimal)doList.Count());
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -3341,7 +3402,7 @@ namespace wispro.sp.api.Controllers
|
|
temObj.B += 1;
|
|
temObj.B += 1;
|
|
break;
|
|
break;
|
|
case "C":
|
|
case "C":
|
|
- temObj.D += 1;
|
|
|
|
|
|
+ temObj.C += 1;
|
|
break;
|
|
break;
|
|
case "D":
|
|
case "D":
|
|
temObj.D += 1;
|
|
temObj.D += 1;
|
|
@@ -3354,7 +3415,7 @@ namespace wispro.sp.api.Controllers
|
|
|
|
|
|
#region 涉外OA
|
|
#region 涉外OA
|
|
var gwOA = spDb.PerformanceItems.Include(x => x.ItemStaffs)
|
|
var gwOA = spDb.PerformanceItems.Include(x => x.ItemStaffs)
|
|
- .Where(x => x.CalMonthId == calMonthId && x.Type == "OA" && !x.CaseNo.Contains("CN") && x.BasePoint>0
|
|
|
|
|
|
+ .Where(x => x.CalMonthId == calMonthId && x.Type == "OA" && !x.CaseNo.Contains("CN") && x.BasePoint>0.5
|
|
&& (x.DoItemCoefficient.Contains("实质"))).ToList();
|
|
&& (x.DoItemCoefficient.Contains("实质"))).ToList();
|
|
|
|
|
|
foreach (var p in gwOA)
|
|
foreach (var p in gwOA)
|
|
@@ -3397,6 +3458,9 @@ namespace wispro.sp.api.Controllers
|
|
case "D":
|
|
case "D":
|
|
temObj.D += (double)(1.0M / (decimal)doList.Count());
|
|
temObj.D += (double)(1.0M / (decimal)doList.Count());
|
|
break;
|
|
break;
|
|
|
|
+ default:
|
|
|
|
+ temObj.B += (double)(1.0M / (decimal)doList.Count());
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -3436,11 +3500,15 @@ namespace wispro.sp.api.Controllers
|
|
temObj.B += 1;
|
|
temObj.B += 1;
|
|
break;
|
|
break;
|
|
case "C":
|
|
case "C":
|
|
- temObj.D += 1;
|
|
|
|
|
|
+ temObj.C += 1;
|
|
break;
|
|
break;
|
|
case "D":
|
|
case "D":
|
|
temObj.D += 1;
|
|
temObj.D += 1;
|
|
break;
|
|
break;
|
|
|
|
+ default:
|
|
|
|
+ temObj.C += 1;
|
|
|
|
+ break;
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#endregion
|
|
@@ -3536,21 +3604,32 @@ namespace wispro.sp.api.Controllers
|
|
public LevelStatisticsResult CalAgentLevel(int year,int quarter,string GradeCode)
|
|
public LevelStatisticsResult CalAgentLevel(int year,int quarter,string GradeCode)
|
|
{
|
|
{
|
|
LevelStatisticsResult result = new LevelStatisticsResult();
|
|
LevelStatisticsResult result = new LevelStatisticsResult();
|
|
-
|
|
|
|
|
|
+ DateTime tempDate=DateTime.Parse($"{year}-01-01");
|
|
var Months = new List<int>() { 1,2,3};
|
|
var Months = new List<int>() { 1,2,3};
|
|
switch (quarter)
|
|
switch (quarter)
|
|
{
|
|
{
|
|
case 1:
|
|
case 1:
|
|
- Months = new List<int>() { 1, 2, 3 };
|
|
|
|
|
|
+ if(year == 2022)
|
|
|
|
+ {
|
|
|
|
+ Months = new List<int>() { 2, 3 };
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ Months = new List<int>() { 1, 2, 3 };
|
|
|
|
+ }
|
|
|
|
+ tempDate = DateTime.Parse($"{year}-01-01");
|
|
break;
|
|
break;
|
|
case 2:
|
|
case 2:
|
|
Months = new List<int>() { 4,5,6 };
|
|
Months = new List<int>() { 4,5,6 };
|
|
|
|
+ tempDate = DateTime.Parse($"{year}-04-01");
|
|
break;
|
|
break;
|
|
case 3:
|
|
case 3:
|
|
Months = new List<int>() { 7,8,9};
|
|
Months = new List<int>() { 7,8,9};
|
|
|
|
+ tempDate = DateTime.Parse($"{year}-07-01");
|
|
break;
|
|
break;
|
|
case 4:
|
|
case 4:
|
|
Months = new List<int>() { 10,11,12 };
|
|
Months = new List<int>() { 10,11,12 };
|
|
|
|
+ tempDate = DateTime.Parse($"{year}-10-01");
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -3562,7 +3641,7 @@ namespace wispro.sp.api.Controllers
|
|
var resp = Context.StaffStatisticsforLevels
|
|
var resp = Context.StaffStatisticsforLevels
|
|
.Include(p => p.Staff)
|
|
.Include(p => p.Staff)
|
|
.Include(p => p.Grade)
|
|
.Include(p => p.Grade)
|
|
- .Where(p => Months.Contains(p.CalMonth.Month) && p.CalMonth.Year == year);
|
|
|
|
|
|
+ .Where(p => Months.Contains(p.CalMonth.Month) && p.CalMonth.Year == year && p.Staff.RegularDate.Value < tempDate && p.Staff.IsGradeAssess);
|
|
var temtList = resp.ToList();
|
|
var temtList = resp.ToList();
|
|
|
|
|
|
bool isReview = (GradeCode == "A");
|
|
bool isReview = (GradeCode == "A");
|
|
@@ -3604,22 +3683,27 @@ namespace wispro.sp.api.Controllers
|
|
{
|
|
{
|
|
try
|
|
try
|
|
{
|
|
{
|
|
- var temObj = Context.CalMonths.FirstOrDefault(l => l.Year == year && l.Month == month);
|
|
|
|
|
|
+ _StatisticsLevelCount(year,month,Context);
|
|
|
|
|
|
- if (temObj != null)
|
|
|
|
- {
|
|
|
|
- var temList = Context.StaffStatisticsforLevels.Where(l => l.CalMonthId == temObj.Id);
|
|
|
|
- Context.StaffStatisticsforLevels.RemoveRange(temList);
|
|
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ catch { return false; }
|
|
|
|
+ }
|
|
|
|
|
|
- var NewList = StatisticsCount(temObj.Id,Context);
|
|
|
|
|
|
+ private void _StatisticsLevelCount(int year, int month,spDbContext spDb)
|
|
|
|
+ {
|
|
|
|
+ var temObj = spDb.CalMonths.FirstOrDefault(l => l.Year == year && l.Month == month);
|
|
|
|
|
|
- Context.StaffStatisticsforLevels.AddRange(NewList);
|
|
|
|
- Context.SaveChanges();
|
|
|
|
- }
|
|
|
|
|
|
+ if (temObj != null)
|
|
|
|
+ {
|
|
|
|
+ var temList = spDb.StaffStatisticsforLevels.Where(l => l.CalMonthId == temObj.Id);
|
|
|
|
+ Context.StaffStatisticsforLevels.RemoveRange(temList);
|
|
|
|
|
|
- return true;
|
|
|
|
|
|
+ var NewList = StatisticsCount(temObj.Id, spDb);
|
|
|
|
+
|
|
|
|
+ spDb.StaffStatisticsforLevels.AddRange(NewList);
|
|
|
|
+ spDb.SaveChanges();
|
|
}
|
|
}
|
|
- catch { return false; }
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
#endregion
|
|
}
|
|
}
|