Ver Fonte

1、其他新申请案件延迟案件申诉审核界面添加最终延迟天数和显示延迟天数
2、绩效计算如果有审核后的最终延迟天数,案子最终延迟天数计算最终绩效
3、案件详情中显示最终绩效金额和分配比率

luocaiyang há 8 meses atrás
pai
commit
9a197fa0c1

+ 83 - 50
wispro.sp.api/Controllers/CaseFileCompareController.cs

@@ -362,15 +362,15 @@ namespace wispro.sp.api.Controllers
                 double? oneSim = getCalValue(item,type,0);
                 double? twoSim = getCalValue(item, type, 1); ;
 
-                if(oneSim == null)
-                {
-                    oneSim = 1;
-                }
+                //if(oneSim == null)
+                //{
+                //    oneSim = 1;
+                //}
 
-                if (twoSim == null)
-                {
-                    twoSim = 1; 
-                }
+                //if (twoSim == null)
+                //{
+                //    twoSim = 1; 
+                //}
 
                 DataRow row = dt.NewRow();
                 row["我方文号"] = item.CaseNo;
@@ -378,73 +378,87 @@ namespace wispro.sp.api.Controllers
                 row["客户"] = item.Customer?.Name;
                 row["核稿人"] = item.Reviewer?.Name;
                 row["处理人"] = item.Handlers;
-                var zScoreA = (oneSim -one.Average)/one.Std_Deviation;
+                double? zScoreA = null;
+                if (oneSim != null)
+                {
+                    zScoreA = (oneSim - one.Average) / one.Std_Deviation;
+                    
+                }
+                row["内部核稿分数"] = zScoreA;
+
                 row["内部核稿相似度或差异度"] = oneSim;
                 row["内部客户平均值"] = one.Average;
                 row["内部客户标准偏差"] = one.Std_Deviation;
-                row["内部核稿分数"] = zScoreA;
-
-                var zScoreB = (twoSim -two.Average)/two.Std_Deviation;
+                
                 row["外部核稿相似度或差异度"] = twoSim;
                 row["外部客户平均值"] = two.Average;
                 row["外部客户标准偏差"] = two.Std_Deviation;
-                row["外部核稿分数"] = zScoreB;
 
-                var distince = Math.Sqrt(zScoreB.Value * zScoreB.Value + zScoreA.Value * zScoreA.Value);
+                double? zScoreB = null;
+                if (twoSim != null)
+                {
+                    zScoreB = (twoSim - two.Average) / two.Std_Deviation;
+                    
+                }
+                row["外部核稿分数"] = zScoreB;
 
-                if (type == 0 || type==2)
+                if (zScoreA != null && zScoreB != null)
                 {
-                    if (distince > 3)
+                    var distince = Math.Sqrt(zScoreB.Value * zScoreB.Value + zScoreA.Value * zScoreA.Value);
+
+                    if (type == 0 || type == 2)
                     {
-                        if (zScoreA.Value > 0 && zScoreB.Value > 0)
+                        if (distince > 3)
                         {
-                            row["备注"] = "内部核稿、外部核稿修改都较少![撰稿人给力或客户友好]";
-                        }
+                            if (zScoreA.Value > 0 && zScoreB.Value > 0)
+                            {
+                                row["备注"] = "内部核稿、外部核稿修改都较少![撰稿人给力或客户友好]";
+                            }
 
-                        if (zScoreA.Value > 0 && zScoreB.Value < 0)
-                        {
-                            row["备注"] = "内部核稿较少、外部核稿修改较多![核稿人没有尽责!]";
-                        }
+                            if (zScoreA.Value > 0 && zScoreB.Value < 0)
+                            {
+                                row["备注"] = "内部核稿较少、外部核稿修改较多![核稿人没有尽责!]";
+                            }
 
-                        if (zScoreA.Value < 0 && zScoreB.Value > 0)
-                        {
-                            row["备注"] = "内部核稿较多、外部核稿修改都较少![核稿人给力]";
-                        }
+                            if (zScoreA.Value < 0 && zScoreB.Value > 0)
+                            {
+                                row["备注"] = "内部核稿较多、外部核稿修改都较少![核稿人给力]";
+                            }
 
-                        if (zScoreA.Value < 0 && zScoreB.Value < 0)
-                        {
-                            row["备注"] = "内部核稿和外部核稿修改都较多![案件沟通问题?]";
+                            if (zScoreA.Value < 0 && zScoreB.Value < 0)
+                            {
+                                row["备注"] = "内部核稿和外部核稿修改都较多![案件沟通问题?]";
+                            }
                         }
                     }
-                }
-                else
-                {
-                    if (distince > 3)
+                    else
                     {
-                        if (zScoreA.Value > 0 && zScoreB.Value > 0)
+                        if (distince > 3)
                         {
-                            row["备注"] = "内部核稿和外部核稿修改都较多![案件沟通问题?]";
-                            
-                        }
+                            if (zScoreA.Value > 0 && zScoreB.Value > 0)
+                            {
+                                row["备注"] = "内部核稿和外部核稿修改都较多![案件沟通问题?]";
 
-                        if (zScoreA.Value > 0 && zScoreB.Value < 0)
-                        {
-                            row["备注"] = "内部核稿较多、外部核稿修改都较少![核稿人给力]";
-                        }
+                            }
 
-                        if (zScoreA.Value < 0 && zScoreB.Value > 0)
-                        {
-                            row["备注"] = "内部核稿较少、外部核稿修改较多![核稿人没有尽责!]";
-                        }
+                            if (zScoreA.Value > 0 && zScoreB.Value < 0)
+                            {
+                                row["备注"] = "内部核稿较多、外部核稿修改都较少![核稿人给力]";
+                            }
 
-                        if (zScoreA.Value < 0 && zScoreB.Value < 0)
-                        {
-                            row["备注"] = "内部核稿、外部核稿修改都较少![撰稿人给力或客户友好]";
+                            if (zScoreA.Value < 0 && zScoreB.Value > 0)
+                            {
+                                row["备注"] = "内部核稿较少、外部核稿修改较多![核稿人没有尽责!]";
+                            }
+
+                            if (zScoreA.Value < 0 && zScoreB.Value < 0)
+                            {
+                                row["备注"] = "内部核稿、外部核稿修改都较少![撰稿人给力或客户友好]";
+                            }
                         }
                     }
                 }
                 
-                
                 dt.Rows.Add(row);
 
                 retList.Add(
@@ -577,6 +591,23 @@ namespace wispro.sp.api.Controllers
                         }
                     }
                     break;
+                case 3:
+                    if (stage == 0)
+                    {
+                        
+                        if (caseInfo.DRRCalim != null)
+                        {
+                            calValue = caseInfo.DRRCalim.TextSimilarity;
+                        }
+                    }
+                    else
+                    {
+                        if (caseInfo.RFRCalim != null)
+                        {
+                            calValue = caseInfo.RFRCalim.TextSimilarity;
+                        }
+                    }
+                    break;
             }
 
             return calValue;
@@ -592,6 +623,8 @@ namespace wispro.sp.api.Controllers
                     return "字符修改计算";
                 case 2:
                     return "权要权重70说明书30";
+                case 3:
+                    return "权要相似度计算";
 
             }
 

+ 240 - 116
wispro.sp.api/Controllers/PerformanceItemController.cs

@@ -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
 

+ 13 - 1
wispro.sp.web/Components/ReviewerAppeal.razor

@@ -19,6 +19,14 @@
                     <AntDesign.Col Span="20">@_Model.Item.CaseName</AntDesign.Col>
                 </Row>
 
+                @if (_Model.AppealRecord.Type.Name == "案件严重超期说明" && _Model.Item.Type == "其他新申请")
+                {
+                    <Row>
+                        <AntDesign.Col Span="4"><b>延迟天数:</b></AntDesign.Col>
+                        <AntDesign.Col Span="20">@_Model.Item.getDelayDays()</AntDesign.Col>
+                    </Row>
+                }
+
                 @if (_Model.AppealRecord.Type.Name == "案件系数复核")
                 {
                     <Row>
@@ -108,6 +116,11 @@
 
         @foreach (InputField field in context.inputFields)
         {
+            @if (field.FieldName == "最终延迟天数" && _Model.Item.Type != "其他新申请")
+            {
+                continue;
+            }
+
             List<InputFieldValue> fValues = context.inputFieldValues.Where<InputFieldValue>(iv => iv.InputFieldId == field.Id).ToList();
 
             if (!string.IsNullOrEmpty(field.MapObjectField) && !string.IsNullOrEmpty(field.MapObjectFieldLabel))
@@ -117,7 +130,6 @@
 
                 @foreach (InputFieldValue temValue in fValues)
                 {
-
                     <FormItem Label="@temValue.Label">
                         @switch (temValue.InputField.FieldType)
                         {

+ 1 - 0
wispro.sp.web/Components/SSTable.razor

@@ -10,6 +10,7 @@
                      OnRow="OnRow"
                      Total="_total"
                      ScrollX="1150" Size="TableSize.Small" Bordered
+                     OnChange="onChange"
                      >
         <ChildContent>
             <AntDesign.Column Title="序号" TData="string" Width="80">

+ 49 - 0
wispro.sp.web/Components/SSTable.razor.cs

@@ -96,6 +96,7 @@ namespace wispro.sp.web.Components
             //}
 
             var queryModel = table.GetQueryModel();
+            
 
             if (table.SortDirections.Count() > 0)
             {
@@ -108,6 +109,54 @@ namespace wispro.sp.web.Components
             //return iIndex;
         }
 
+        private bool isSameQuery(IList<ITableFilterModel> frist, IList<ITableFilterModel> second)
+        {
+            if (frist != null && second != null)
+            {
+                if (frist.Count != second.Count)
+                {
+                    return false;
+                }
+                else
+                {
+                    for (int i = 0; i < frist.Count; i++)
+                    {
+                        if (frist[i].FieldName != second[i].FieldName)
+                        {
+                            return false;
+                        }
+                        else
+                        {
+                            if(frist[i].SelectedValues != second[i].SelectedValues)
+                            {
+                                return false;
+                            }
+                        }
+                    }
+
+                    return true;
+                }
+            }
+            else
+            {
+                return true;
+            }
+        }
+
+        private IList<ITableFilterModel> lastQuery = null;
+        private void onChange()
+        {
+            //var queryModel = table.GetQueryModel();
+            //if (isSameQuery(queryModel.FilterModel,lastQuery))
+            //{
+            //    Console.WriteLine(queryModel.FilterModel);
+            //    lastQuery = queryModel.FilterModel;
+            //    _pageIndex = 1;
+            //    //_pageIndex = queryModel.PageSize;
+            //}
+            
+            //StateHasChanged();
+        }
         private void HandlePageChange(PaginationEventArgs args)
         {
             if (_pageIndex != args.Page)

+ 1 - 0
wispro.sp.web/Pages/AppCase/CaseManager.razor

@@ -279,6 +279,7 @@ RenderFragment gdIcon =
                                             @if(context.Data.Type == "其他新申请")
                                             {
                                                 <DescriptionsItem Title="绩效分配比率" Span="3">
+                                                    实际绩效金额: @ActualAmount(context.Data);<br/>
                                                     @if(isExistAllocationRatios(context.Data))
                                                     {
                                                         @AllocationRatioString(context.Data)

+ 14 - 1
wispro.sp.web/Pages/AppCase/CaseManager.razor.cs

@@ -396,6 +396,19 @@ namespace wispro.sp.web.Pages.AppCase
             return (item.AllocationRatios != null && item.AllocationRatios.Count > 0);
         }
 
+        private Double ActualAmount(PerformanceItem item)
+        {
+            double ret = 0.0;
+            if (item.AllocationRatios != null)
+            {
+                foreach (var ra in item.AllocationRatios)
+                {
+                    ret += ra.ActualAmount.Value;
+                }
+            }
+
+            return ret;
+        }
         private string AllocationRatioString(PerformanceItem item)
         {
             string strTem = string.Empty;
@@ -403,7 +416,7 @@ namespace wispro.sp.web.Pages.AppCase
             {
                 foreach (var ra in item.AllocationRatios)
                 {
-                    strTem = $"{strTem},{ra.Person.Name}【{ra.Ratio}%】";
+                    strTem = $"{strTem},{ra.Person.Name}【实际金额:{ra.ActualAmount},比率:{ra.Ratio}%】";
                 }
             }
 

+ 2 - 0
wispro.sp.web/Pages/AppCase/MyCaselist.razor

@@ -231,6 +231,8 @@
                                             @if(context.Data.Type == "其他新申请")
                                             {
                                                 <DescriptionsItem Title="绩效分配比率" Span="3">
+                                                    实际绩效金额: @ActualAmount(context.Data);<br />
+                                                    
                                                     @if(isExistAllocationRatios(context.Data))
                                                     {
                                                         @AllocationRatioString(context.Data)

+ 14 - 1
wispro.sp.web/Pages/AppCase/MyCaselist.razor.cs

@@ -413,7 +413,20 @@ namespace wispro.sp.web.Pages.AppCase
         {
             return (item.AllocationRatios != null && item.AllocationRatios.Count >0);
         }
-        
+
+        private Double ActualAmount(PerformanceItem item)
+        {
+            double ret = 0.0;
+            if (item.AllocationRatios != null)
+            {
+                foreach (var ra in item.AllocationRatios)
+                {
+                    ret += ra.ActualAmount.Value;
+                }
+            }
+
+            return ret;
+        }
         private string AllocationRatioString(PerformanceItem item)
         {
             string strTem = string.Empty;

+ 4 - 1
wispro.sp.winClient/APIService.cs

@@ -105,7 +105,10 @@ namespace wispro.sp.winClient
                 http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", Token?.Token);
                 try
                 {
-                    var data = await http.GetAsync($"{strAPIBaseUri}/api/CaseFileCompare/CalCustomer_mean?start=2024-10-01&end=2025-12-27&type=2");
+                    var data = await http.GetAsync($"{strAPIBaseUri}/api/CaseFileCompare/CalCustomer_mean?start=2024-10-01&end=2025-12-27&type=0");
+                    data = await http.GetAsync($"{strAPIBaseUri}/api/CaseFileCompare/CalCustomer_mean?start=2024-10-01&end=2025-12-27&type=1");
+                    data = await http.GetAsync($"{strAPIBaseUri}/api/CaseFileCompare/CalCustomer_mean?start=2024-10-01&end=2025-12-27&type=2");
+                    data = await http.GetAsync($"{strAPIBaseUri}/api/CaseFileCompare/CalCustomer_mean?start=2024-10-01&end=2025-12-27&type=3");
 
                     if (data.IsSuccessStatusCode)
                     {

+ 65 - 26
wospro.sp.entity/PerformanceItem.cs

@@ -232,56 +232,89 @@ namespace wispro.sp.entity
 
         public int CalMonthId { get; set; }
 
-        public bool isDanger()
+        /// <summary>
+        /// 最终延迟天数,延迟申诉后由审核人确定
+        /// </summary>
+        public int? FinallyDelayDays { get; set; }
+
+        public double getDelayDays()
         {
             if (!String.IsNullOrEmpty(DoItem) && DoItem.ToString() == "新申请")
             {
-                if(Type == "其他新申请")
+                if (Type == "其他新申请")
                 {
-                    return _OtherAppCalDanger();
-                }
+                    //最终延迟天数大于0
+                    if (FinallyDelayDays != null && FinallyDelayDays.Value > 00)
+                    {
+                        return FinallyDelayDays.Value;
+                    }
 
-                DateTime dt1 = DateTime.Now;
-                if (ReturnDate != null)
-                {
-                    dt1 = ReturnDate.Value;
-                }
-                else
-                {
-                    if (FinishedDate != null)
+                    DateTime? dt1 = this.EntrustingDate;
+                    DateTime? dt2 = this.FinishedDate;
+
+                    if (dt2 == null)
                     {
-                        dt1 = FinishedDate.Value;
+                        dt2 = DateTime.Now;
                     }
-                }
 
-                DateTime dt2 = DateTime.MinValue;
-                if (CustomerLimitDate != null)
-                {
-                    dt2 = CustomerLimitDate.Value;
+                    return (dt2.Value - dt1.Value).TotalDays - 45;
                 }
                 else
                 {
-                    if (InternalDate != null)
+                    DateTime dt1 = DateTime.Now;
+                    if (ReturnDate != null)
+                    {
+                        dt1 = ReturnDate.Value;
+                    }
+                    else
+                    {
+                        if (FinishedDate != null)
+                        {
+                            dt1 = FinishedDate.Value;
+                        }
+                    }
+
+                    DateTime dt2 = DateTime.MinValue;
+                    if (CustomerLimitDate != null)
                     {
-                        dt2 = InternalDate.Value;
+                        dt2 = CustomerLimitDate.Value;
                     }
                     else
                     {
-                        if (EntrustingDate != null)
+                        if (InternalDate != null)
+                        {
+                            dt2 = InternalDate.Value;
+                        }
+                        else
                         {
-                            dt2 = EntrustingDate.Value;
+                            if (EntrustingDate != null)
+                            {
+                                dt2 = EntrustingDate.Value;
+                            }
                         }
                     }
+
+                    return (dt1 - dt2).TotalDays;
+                    
                 }
 
-                if ((dt1 - dt2).TotalDays > 30)
-                {
+                
+            }
 
-                    return true;
+            return 0.0;
+        }
+        public bool isDanger()
+        {
+            if (!String.IsNullOrEmpty(DoItem) && DoItem.ToString() == "新申请")
+            {
+                if(Type == "其他新申请")
+                {
+                    return getDelayDays() > 0;
+                    //return _OtherAppCalDanger();
                 }
                 else
                 {
-                    return false;
+                    return getDelayDays() > 30;
                 }
             }
 
@@ -290,6 +323,12 @@ namespace wispro.sp.entity
 
         private bool _OtherAppCalDanger()
         {
+            //最终延迟天数大于0
+            if (FinallyDelayDays != null && FinallyDelayDays.Value > 00)
+            {
+                return true;
+            }
+
             DateTime? dt1 = this.EntrustingDate;
             DateTime? dt2 = this.FinishedDate;