Prechádzať zdrojové kódy

更新绩效点数规则

luocaiyang 3 rokov pred
rodič
commit
ab35493bbc

+ 4 - 1
wispro.sp.api/Controllers/PerformanceItemController.cs

@@ -50,6 +50,7 @@ namespace wispro.sp.api.Controllers
                     if (item.CalMonth != null)
                     {
                         var calMonth = Context.CalMonths.Where<CalMonth>(c => c.Year  == item.CalMonth.Year && c.Month == item.CalMonth.Month).FirstOrDefault();
+                        
                         if(calMonth == null)
                         {
                             Context.CalMonths.Add(item.CalMonth);
@@ -59,6 +60,7 @@ namespace wispro.sp.api.Controllers
                         {
                             item.CalMonth = calMonth;
                         }
+
                         item.CalMonthId = item.CalMonth.Id;
                         item.CalMonth = null;
                     }
@@ -218,7 +220,7 @@ namespace wispro.sp.api.Controllers
                     }
                 }
                 
-                Utility.Utility.CalBasePoint(item, Context.BasePointRules.ToList());
+                 Utility.Utility.CalBasePoint(item, Context.BasePointRules.ToList());
 
                 Context.SaveChanges();
             }
@@ -281,6 +283,7 @@ namespace wispro.sp.api.Controllers
                     (s.ItemStaffs.Where<ItemStaff>(iStaff => iStaff.DoPerson.Id  == userid ).Count() > 0 || s.Reviewer.Id  == userid )
                     && s.CalMonth.Status == type);
 
+            
             ret.TotalCount = results.Count();
 
             List<PerformanceItem> retList = results

+ 33 - 5
wispro.sp.api/Job/ImportReportJob.cs

@@ -94,15 +94,18 @@ namespace wispro.sp.api.Job
 
             }
 
-            
+
             //每月绩效统计--发客户超过一个月未完成案件
-            NewMethod("506aa7ad-c3f4-4ec6-9ec8-ff6b92dcd7c1", "每月绩效统计--发客户超过一个月未完成案件.xlsx", calMonth);
+            DownloadReport( "每月绩效统计--发客户超过一个月未完成案件", calMonth,false);
+            //NewMethod("506aa7ad-c3f4-4ec6-9ec8-ff6b92dcd7c1", "每月绩效统计--发客户超过一个月未完成案件.xlsx", calMonth);
 
             //每月绩效统计--上个月递交完成案件
-            NewMethod("d7308cd2-71e4-4444-9f47-f4d731ddb26a", "每月绩效统计--上个月递交完成案件.xlsx", calMonth);
+            DownloadReport("每月绩效统计--上个月递交完成案件", calMonth, true);
+            //NewMethod("d7308cd2-71e4-4444-9f47-f4d731ddb26a", "每月绩效统计--上个月递交完成案件.xlsx", calMonth);
 
             //每月绩效统计--中国一次OA授权表
-            NewMethod("72454834-afdd-4b98-b42a-0bc912d07610", "每月绩效统计--中国一次OA授权表.xlsx", calMonth,true);
+            DownloadReport("每月绩效统计--中国一次OA授权表", calMonth, true,true);
+            //NewMethod("72454834-afdd-4b98-b42a-0bc912d07610", "每月绩效统计--中国一次OA授权表.xlsx", calMonth,true);
 
 
             var Staffs = spDb.Staffs.Join(spDb.ItemStaffs.Where<ItemStaff>(p=>p.Item.CalMonthId == calMonth.Id), 
@@ -131,6 +134,18 @@ namespace wispro.sp.api.Job
             return Task.CompletedTask;
         }
 
+        private void DownloadReport(string ReportName,CalMonth calMonth,bool isModifyDate,bool isFirstOA=false)
+        {
+            string strFileSavePath = utility.ConfigHelper.GetSectionValue("IPEasySetting:DownloadFileSavePath");
+
+            wispro.sp.utility.IPEasyUtility.DownloadReport(ReportName, isModifyDate);
+            System.Threading.Thread.Sleep(5000);
+            string filename = $"{ReportName.Trim()}.xlsx";
+            string strFilePath = System.IO.Path.Combine(strFileSavePath, filename);
+            string strFinalPath = System.IO.Path.Combine(strFileSavePath, $"{calMonth.Year}{calMonth.Month}-{filename}");
+            InputPerformanceItem(strFilePath, true, false, 1, calMonth, isFirstOA);
+            System.IO.File.Move(strFilePath, strFinalPath);
+        }
         private void NewMethod(string reportId,string filename, CalMonth calMonth,bool isFirstOA = false)
         {
             string strFileSavePath = utility.ConfigHelper.GetSectionValue("IPEasySetting:DownloadFileSavePath");
@@ -164,8 +179,10 @@ namespace wispro.sp.api.Job
 
             List<BasePointRule> rules = spDb.BasePointRules.ToList<BasePointRule>();
 
+            int iRow = 0;
             foreach (DataRow row in temdt.Rows)
             {
+                string strDebug = $"{++iRow}\t{row["我方文号"]}";
                 PerformanceItem item = null;
                 if (isFirstOAFile)
                 {
@@ -181,8 +198,19 @@ namespace wispro.sp.api.Job
                     if (!InValidDoItem.Contains(item.DoItem))
                     {
                         SavePerformanceItem(item,rules);
+                        strDebug = $"{strDebug}\t保存成功";
+                    }
+                    else
+                    {
+                        strDebug = $"{strDebug}\t无效处理事项";
                     }
                 }
+                else
+                {
+                    strDebug = $"{strDebug}\t转换Item为Null";
+                }
+
+                System.Diagnostics.Debug.WriteLine(strDebug);
             }
 
             return Task.CompletedTask;
@@ -198,7 +226,7 @@ namespace wispro.sp.api.Job
             }
             catch (Exception ex)
             {
-
+                System.Diagnostics.Debug.WriteLine(ex.Message);
             }
 
             return Task.CompletedTask;

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 2331
wispro.sp.api/Migrations/20211104013549_add-appealDB.Designer.cs


+ 0 - 846
wispro.sp.api/Migrations/20211104013549_add-appealDB.cs

@@ -1,846 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace wispro.sp.api.Migrations
-{
-    public partial class addappealDB : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "AppealType",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "int", nullable: false)
-                        .Annotation("SqlServer:Identity", "1, 1"),
-                    Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    CanDoExpress = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
-                    ReviewerExpress = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AppealType", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "BasePointRule",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "int", nullable: false)
-                        .Annotation("SqlServer:Identity", "1, 1"),
-                    Rule = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true),
-                    PointExpress = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
-                    Priority = table.Column<int>(type: "int", nullable: false),
-                    Type = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_BasePointRule", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "CalMonth",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "int", nullable: false)
-                        .Annotation("SqlServer:Identity", "1, 1"),
-                    year = table.Column<int>(type: "int", nullable: false),
-                    month = table.Column<int>(type: "int", nullable: false),
-                    status = table.Column<int>(type: "int", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_CalMonth", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "StaffGrade",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "int", nullable: false)
-                        .Annotation("SqlServer:Identity", "1, 1"),
-                    Grade = table.Column<string>(type: "nchar(5)", fixedLength: true, maxLength: 5, nullable: false),
-                    Coefficient = table.Column<double>(type: "float", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_StaffGrade", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "InputField",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "int", nullable: false)
-                        .Annotation("SqlServer:Identity", "1, 1"),
-                    FieldName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    FieldType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    FieldValue = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
-                    MapObjectField = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    AppealTypeId = table.Column<int>(type: "int", nullable: false),
-                    AppealState = table.Column<int>(type: "int", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_InputField", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_InputField_AppealType_AppealTypeId",
-                        column: x => x.AppealTypeId,
-                        principalTable: "AppealType",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "Staff",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "int", nullable: false)
-                        .Annotation("SqlServer:Identity", "1, 1"),
-                    Account = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
-                    Password = table.Column<string>(type: "nvarchar(max)", nullable: false),
-                    Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
-                    Sex = table.Column<string>(type: "nvarchar(max)", nullable: true),
-                    Tel = table.Column<string>(type: "nvarchar(max)", nullable: true),
-                    Mobile = table.Column<string>(type: "nvarchar(max)", nullable: true),
-                    IsOnJob = table.Column<bool>(type: "bit", nullable: false),
-                    Status = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: false),
-                    isCalPerformsnce = table.Column<bool>(type: "bit", nullable: false),
-                    StaffGradeId = table.Column<int>(type: "int", nullable: true),
-                    Department = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    WorkPlace = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    EntyDate = table.Column<DateTime>(type: "date", nullable: true),
-                    Mail = table.Column<string>(type: "nvarchar(max)", nullable: true),
-                    Memo = table.Column<string>(type: "nvarchar(max)", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Staff", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_Staff_StaffGrade",
-                        column: x => x.StaffGradeId,
-                        principalTable: "StaffGrade",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "VerifyCoefficient",
-                columns: table => new
-                {
-                    CheckerId = table.Column<int>(type: "int", nullable: false),
-                    DoPersonId = table.Column<int>(type: "int", nullable: false),
-                    Coefficient = table.Column<double>(type: "float", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_VerifyCoefficient", x => new { x.CheckerId, x.DoPersonId });
-                    table.ForeignKey(
-                        name: "FK_VerifyCoefficient_StaffGrade",
-                        column: x => x.CheckerId,
-                        principalTable: "StaffGrade",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "FK_VerifyCoefficient_StaffGrade1",
-                        column: x => x.DoPersonId,
-                        principalTable: "StaffGrade",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "AppealRecord",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "int", nullable: false)
-                        .Annotation("SqlServer:Identity", "1, 1"),
-                    CreaterId = table.Column<int>(type: "int", nullable: false),
-                    CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
-                    Reason = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
-                    State = table.Column<int>(type: "int", nullable: false),
-                    ReviewerId = table.Column<int>(type: "int", nullable: false),
-                    ReviewerMemo = table.Column<string>(type: "nvarchar(max)", nullable: true),
-                    ReviewTime = table.Column<DateTime>(type: "datetime2", nullable: true),
-                    TypeId = table.Column<int>(type: "int", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AppealRecord", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_AppealRecord_AppealType_TypeId",
-                        column: x => x.TypeId,
-                        principalTable: "AppealType",
-                        principalColumn: "Id");
-                    table.ForeignKey(
-                        name: "FK_AppealRecord_Staff_CreaterId",
-                        column: x => x.CreaterId,
-                        principalTable: "Staff",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_AppealRecord_Staff_ReviewerId",
-                        column: x => x.ReviewerId,
-                        principalTable: "Staff",
-                        principalColumn: "Id");
-                });
-
-            migrationBuilder.CreateTable(
-                name: "Customer",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "int", nullable: false)
-                        .Annotation("SqlServer:Identity", "1, 1"),
-                    Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
-                    ContactMan = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    Address = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
-                    Phone = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    ResponseManId = table.Column<int>(type: "int", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Customer", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_Customer_Staff",
-                        column: x => x.ResponseManId,
-                        principalTable: "Staff",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "Message",
-                columns: table => new
-                {
-                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
-                    MessageInfo = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
-                    Type = table.Column<int>(type: "int", nullable: false),
-                    FromId = table.Column<int>(type: "int", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Message", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_From_Staff",
-                        column: x => x.FromId,
-                        principalTable: "Staff",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "AttachFile",
-                columns: table => new
-                {
-                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
-                    Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
-                    SavePath = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
-                    UploadUserId = table.Column<int>(type: "int", nullable: false),
-                    AppealRecordId = table.Column<int>(type: "int", nullable: false),
-                    AppealRecordId1 = table.Column<int>(type: "int", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_AttachFile", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_AttachFile_AppealRecord",
-                        column: x => x.AppealRecordId,
-                        principalTable: "AppealRecord",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_AttachFile_AppealRecord_AppealRecordId1",
-                        column: x => x.AppealRecordId1,
-                        principalTable: "AppealRecord",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "FK_AttachFile_UpdateUser",
-                        column: x => x.UploadUserId,
-                        principalTable: "Staff",
-                        principalColumn: "Id");
-                });
-
-            migrationBuilder.CreateTable(
-                name: "InputFieldValue",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "int", nullable: false)
-                        .Annotation("SqlServer:Identity", "1, 1"),
-                    InputFieldId = table.Column<int>(type: "int", nullable: false),
-                    Value = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
-                    AppealRecordId = table.Column<int>(type: "int", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_InputFieldValue", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_InputFieldValue_AppealRecord_AppealRecordId",
-                        column: x => x.AppealRecordId,
-                        principalTable: "AppealRecord",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_InputFieldValue_InputField_InputFieldId",
-                        column: x => x.InputFieldId,
-                        principalTable: "InputField",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "PerformanceItem",
-                columns: table => new
-                {
-                    Id = table.Column<int>(type: "int", nullable: false)
-                        .Annotation("SqlServer:Identity", "1, 1"),
-                    CaseNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    ApplicationType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    BusinessType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    AgentFeedbackMemo = table.Column<string>(type: "nvarchar(max)", nullable: true),
-                    DoItem = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    CaseStage = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    CaseCoefficient = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true),
-                    DoItemCoefficient = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    PreOAStaffId = table.Column<int>(type: "int", nullable: true),
-                    ReviewerId = table.Column<int>(type: "int", nullable: true),
-                    CustomerId = table.Column<int>(type: "int", nullable: true),
-                    ApplicationName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
-                    FinishedDate = table.Column<DateTime>(type: "date", nullable: true),
-                    FinalizationDate = table.Column<DateTime>(type: "date", nullable: true),
-                    ReturnDate = table.Column<DateTime>(type: "date", nullable: true),
-                    CaseType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    CaseState = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    DoItemMemo = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
-                    DoItemState = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
-                    CaseName = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
-                    CustomerLimitDate = table.Column<DateTime>(type: "date", nullable: true),
-                    EntrustingDate = table.Column<DateTime>(type: "date", nullable: true),
-                    InternalDate = table.Column<DateTime>(type: "date", nullable: true),
-                    FirstDraftDate = table.Column<DateTime>(type: "date", nullable: true),
-                    OverDueMemo = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
-                    BasePoint = table.Column<decimal>(type: "numeric(18,2)", nullable: true),
-                    Status = table.Column<int>(type: "int", nullable: true),
-                    CaseMemo = table.Column<string>(type: "nvarchar(max)", nullable: true),
-                    WordCount = table.Column<int>(type: "int", nullable: true),
-                    ReturnCasseNo = table.Column<string>(type: "nvarchar(max)", nullable: true),
-                    Type = table.Column<string>(type: "nvarchar(max)", nullable: true),
-                    CalMonthId = table.Column<int>(type: "int", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_PerformanceItem", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_PerformanceItem_CalMonth",
-                        column: x => x.CalMonthId,
-                        principalTable: "CalMonth",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_PerformanceItem_Customer",
-                        column: x => x.CustomerId,
-                        principalTable: "Customer",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "FK_PerformanceItem_Reviewer",
-                        column: x => x.ReviewerId,
-                        principalTable: "Staff",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "FK_PerformanceItem_Staff",
-                        column: x => x.PreOAStaffId,
-                        principalTable: "Staff",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "MessageReadRecord",
-                columns: table => new
-                {
-                    MessageId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
-                    StaffId = table.Column<int>(type: "int", nullable: false),
-                    isReaded = table.Column<bool>(type: "bit", nullable: false),
-                    MessageId1 = table.Column<Guid>(type: "uniqueidentifier", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_MessageReadRecord", x => new { x.MessageId, x.StaffId });
-                    table.ForeignKey(
-                        name: "FK_MessageReadRecord_Message",
-                        column: x => x.MessageId,
-                        principalTable: "Message",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "FK_MessageReadRecord_Message_MessageId1",
-                        column: x => x.MessageId1,
-                        principalTable: "Message",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "FK_MessageReadRecord_Staff",
-                        column: x => x.StaffId,
-                        principalTable: "Staff",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "ItemStaff",
-                columns: table => new
-                {
-                    ItemId = table.Column<int>(type: "int", nullable: false),
-                    DoPersonId = table.Column<int>(type: "int", nullable: false),
-                    PerformancePoint = table.Column<double>(type: "float", nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_ItemStaff", x => new { x.ItemId, x.DoPersonId });
-                    table.ForeignKey(
-                        name: "FK_ItemStaff_PerformanceItem",
-                        column: x => x.ItemId,
-                        principalTable: "PerformanceItem",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "FK_ItemStaff_Staff",
-                        column: x => x.DoPersonId,
-                        principalTable: "Staff",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "MessagePerformanceItems",
-                columns: table => new
-                {
-                    MessageId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
-                    ItemId = table.Column<int>(type: "int", nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_MessagePerformanceItems", x => new { x.ItemId, x.MessageId });
-                    table.ForeignKey(
-                        name: "FK_MessagePerformanceItem_Item",
-                        column: x => x.ItemId,
-                        principalTable: "PerformanceItem",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                    table.ForeignKey(
-                        name: "FK_MessagePerformanceItem_Message",
-                        column: x => x.MessageId,
-                        principalTable: "Message",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.InsertData(
-                table: "BasePointRule",
-                columns: new[] { "Id", "PointExpress", "Priority", "Rule", "Type" },
-                values: new object[,]
-                {
-                    { 1, "0.2", 1, "p.ApplicationType==\"外观设计\"", "新申请" },
-                    { 97, "0.3", 97, "p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"形式\" && p.AgentFeedbackMemo==\"内-外\"", "其它" },
-                    { 96, "0.5", 96, "p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"外-内\"", "其它" },
-                    { 95, "0.7", 95, "p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"内-外\"", "其它" },
-                    { 94, "0.2", 94, "p.DoItem==\"发明一次OA授权\" && p.ApplicationType==\"发明\"", "一次OA授权" },
-                    { 93, "0.0", 93, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PCTCN\") &&  (p.CaseStage==\"三通\" || p.CaseStage==\"四通\" || p.CaseStage==\"五通\")", "OA" },
-                    { 92, "0.0", 92, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") &&  (p.CaseStage==\"三通\" || p.CaseStage==\"四通\" || p.CaseStage==\"五通\")", "OA" },
-                    { 91, "0.2", 91, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PCTCN\") && p.CaseStage==\"二通\"", "OA" },
-                    { 90, "0.2", 90, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"二通\"", "OA" },
-                    { 89, "0.2", 89, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PCTCN\") && p.CaseStage==\"一通\"", "OA" },
-                    { 88, "0.5", 88, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PCTCN\")  && p.CaseStage==\"一通\"", "OA" },
-                    { 87, "0.3", 87, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"非实质\" && p.CaseNo.StartsWith(\"PCTCN\") && p.CaseStage==\"一通\"", "OA" },
-                    { 86, "0.2", 86, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"一通\"", "OA" },
-                    { 85, "0.5", 85, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PACN\")  && p.CaseStage==\"一通\"", "OA" },
-                    { 84, "0.3", 84, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"非实质\" && p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"一通\"", "OA" },
-                    { 83, "0.2", 83, "p.DoItem==\"意见陈述\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"复审\"", "OA" },
-                    { 82, "0.5", 82, "p.DoItem==\"请求复审\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\")", "OA" },
-                    { 81, "0.2", 81, "p.DoItem==\"申復\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PATW\")", "OA" },
-                    { 80, "0.5", 80, "p.DoItem==\"申復\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PATW\")", "OA" },
-                    { 79, "0.2", 79, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAIN\")", "OA" },
-                    { 78, "0.2", 78, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAGB\")", "OA" },
-                    { 77, "0.2", 77, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAEPO\")", "OA" },
-                    { 76, "0.3", 76, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PADE\")", "OA" },
-                    { 75, "0.2", 75, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAAU\")", "OA" },
-                    { 74, "1.5", 74, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAIN\")", "OA" },
-                    { 72, "1.5", 72, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAEPO\")", "OA" },
-                    { 71, "1.6", 71, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PADE\")", "OA" },
-                    { 70, "1.5", 70, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAAU\")", "OA" },
-                    { 69, "0.2", 69, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAUS\")", "OA" },
-                    { 68, "1.5", 68, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAUS\")", "OA" },
-                    { 98, "0.2", 98, "p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"形式\" && p.AgentFeedbackMemo==\"外-内\"", "其它" },
-                    { 67, "1.5", 67, "p.DoItem==\"口审评估\" && p.DoItemCoefficient==\"实质\"", "OA" },
-                    { 99, "0.1", 99, "p.AgentFeedbackMemo==\"检索结案\"", "其它" },
-                    { 101, "0.2", 101, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAAU\")", "其它" },
-                    { 130, "0.0", 130, "p.AgentFeedbackMemo==\"已核算绩效\"", "其它" },
-                    { 129, "p.WordCount/1000*0.18", 129, "p.DoItem==\"翻译\") && p.AgentFeedbackMemo==\"中-德\"", "其它" },
-                    { 128, "p.WordCount/1000*0.16", 128, "p.DoItem==\"翻译\") && p.AgentFeedbackMemo==\"中-英\"", "其它" },
-                    { 127, "p.WordCount/1000*0.1", 127, "p.DoItem==\"翻译\") && p.AgentFeedbackMemo==\"英-中\"", "其它" },
-                    { 126, "0.0", 126, "p.DoItem==\"请求优先审查\"", "其它" },
-                    { 125, "0.0", 125, "p.DoItem==\"提交ids\"", "其它" },
-                    { 124, "0.2", 124, "p.ApplicationType==\"外观设计\"", "其它" },
-                    { 123, "0.0", 123, "p.DoItem==\"专利挖掘与布局\"", "其它" }
-                });
-
-            migrationBuilder.InsertData(
-                table: "BasePointRule",
-                columns: new[] { "Id", "PointExpress", "Priority", "Rule", "Type" },
-                values: new object[,]
-                {
-                    { 122, "0.0", 122, "p.DoItem==\"知识点总结\"", "其它" },
-                    { 121, "0.0", 121, "p.DoItem==\"询问放弃或复审\"", "其它" },
-                    { 120, "0.1", 120, "p.DoItem==\"提交ids\"", "其它" },
-                    { 119, "0.0", 119, "p.DoItem==\"技术确认\"", "其它" },
-                    { 118, "0.0", 118, "p.DoItem==\"绘图\"", "其它" },
-                    { 117, "0.2", 117, "p.DoItem==\"分案评估+分案\"", "其它" },
-                    { 116, "0.1", 116, "p.DoItem==\"分案评估\"", "其它" },
-                    { 115, "0.2", 115, "p.DoItem==\"电询\"  && p.CaseNo.StartsWith(\"PAUS\")", "其它" },
-                    { 114, "0.2", 114, "p.DoItem==\"电询\"  && p.CaseNo.StartsWith(\"PAEPO\") ", "其它" },
-                    { 113, "0.0", 113, "p.DoItem==\"电询\"  && p.CaseNo.StartsWith(\"PACN\")", "其它" },
-                    { 112, "0.1", 112, "p.DoItem==\"PPH\"", "其它" },
-                    { 111, "0.2", 111, "p.DoItem==\"OA答辩校核\"", "其它" },
-                    { 110, "0.2", 110, "p.DoItem==\"Election Action\"", "其它" },
-                    { 109, "0.2", 109, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAUS\")", "其它" },
-                    { 108, "0.2", 108, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAIN\")", "其它" },
-                    { 107, "0.2", 107, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAGB\")", "其它" },
-                    { 106, "0.2", 106, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAEPO\")", "其它" },
-                    { 105, "0.2", 105, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PADE\")", "其它" },
-                    { 104, "0.0", 104, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"WOCN\")", "其它" },
-                    { 103, "0.0", 103, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PCTCN\")", "其它" },
-                    { 102, "0.0", 102, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PACN\")", "其它" },
-                    { 100, "0.0", 100, "p.DoItem==\"内部检索\"", "其它" },
-                    { 66, "0.2", 66, "p.DoItem==\"口审评估\" && p.DoItemCoefficient==\"非实质\"", "OA" },
-                    { 73, "1.5", 73, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAGB\")", "OA" },
-                    { 64, "1.5", 64, "p.DoItem==\"欧洲案答辩\" && p.DoItemCoefficient==\"实质\"", "OA" },
-                    { 30, "0.7", 29, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PACN\")", "新申请" },
-                    { 29, "1.0", 30, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PACN\") && p.Customer.Name.Contains(\"OPPO\")", "新申请" },
-                    { 28, "1.0", 28, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\")", "新申请" },
-                    { 27, "0.1", 27, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseNo.EndsWith(\"-TS\")", "新申请" },
-                    { 65, "0.2", 65, "p.DoItem==\"欧洲案答辩\" && p.DoItemCoefficient==\"形式\"", "OA" },
-                    { 25, "0.5", 25, "p.CaseNo.StartsWith(\"PAUS\") && (p.CaseNo.EndsWith(\"-同套\") || p.CaseNo.EndsWith(\"CA\") || p.CaseNo.EndsWith(\"CIP\") || p.CaseNo.EndsWith(\"分案\")) ", "新申请" },
-                    { 24, "0.3", 24, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseNo.EndsWith(\"-分案\")", "新申请" },
-                    { 23, "1.8", 23, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAEPO\")", "新申请" },
-                    { 22, "0.2", 22, "p.DoItem==\"新申请\" && p.CaseNo.StartsWith(\"PATW\") && p.AgentFeedbackMemo==\"大陆案转台湾案\"", "新申请" },
-                    { 21, "1.0", 21, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\"  && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"", "新申请" },
-                    { 20, "0.2", 20, "p.DoItem==\"新申请\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"台湾案转大陆案\"", "新申请" },
-                    { 19, "0.1", 19, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" && p.CaseNo.StartsWith(\"PATW\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"", "新申请" },
-                    { 18, "0.7", 18, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"", "新申请" },
-                    { 17, "0.1", 17, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\"  && p.CaseNo.StartsWith(\"PATW\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"", "新申请" },
-                    { 16, "0.1", 16, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"转格式\"", "新申请" },
-                    { 15, "1.5", 15, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"外-内首次申请\"", "新申请" },
-                    { 14, "1.0", 14, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"首次中文案\"", "新申请" }
-                });
-
-            migrationBuilder.InsertData(
-                table: "BasePointRule",
-                columns: new[] { "Id", "PointExpress", "Priority", "Rule", "Type" },
-                values: new object[,]
-                {
-                    { 13, "0.7", 13, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"涉外实质改权\"", "新申请" },
-                    { 12, "0.5", 12, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"改权+改说明书\"", "新申请" },
-                    { 11, "0.3", 11, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"改权\"", "新申请" },
-                    { 10, "1.8", 10, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"PCT首次英文案\"", "新申请" },
-                    { 9, "0.2", 9, "p.AgentFeedbackMemo==\"我方转格式、复核\"", "新申请" },
-                    { 8, "0.0", 8, "p.AgentFeedbackMemo==\"我方代交\"", "新申请" },
-                    { 7, "1.26", 7, "p.CaseNo.StartsWith(\"PAUS\")  && p.AgentFeedbackMemo==\"发文后客户原因取消申请,系统结案\"", "新申请" },
-                    { 6, "1.33", 6, "p.CaseNo.StartsWith(\"PADE\")  && p.AgentFeedbackMemo==\"发文后客户原因取消申请,系统结案\"", "新申请" },
-                    { 5, "0.7", 5, "p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"发文后客户取消申请\"", "新申请" },
-                    { 4, "0.49", 4, "p.ApplicationType==\"实用新型\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"发文后客户取消申请\"", "新申请" },
-                    { 3, "0.0", 3, "p.AgentFeedbackMemo==\"撰写中客户取消申请\"", "新申请" },
-                    { 2, "0.2", 2, "p.AgentFeedbackMemo==\"检索结案\"", "新申请" },
-                    { 31, "1.9", 31, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PADE\")", "新申请" },
-                    { 32, "1.9", 32, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PADE\")", "新申请" },
-                    { 26, "1.0", 26, "p.DoItem==\"新申请\"  && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseNo.EndsWith(\"-TS\")", "新申请" },
-                    { 34, "1.8", 34, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAGB\")", "新申请" },
-                    { 63, "0.2", 63, "p.DoItem==\"RCE\" && p.DoItemCoefficient==\"形式\"", "OA" },
-                    { 62, "1.5", 62, "p.DoItem==\"RCE\" && p.DoItemCoefficient==\"实质\"", "OA" },
-                    { 61, "0.2", 61, "p.DoItem==\"Non Final Action\" && p.DoItemCoefficient==\"形式\"", "OA" },
-                    { 60, "1.5", 60, "p.DoItem==\"Non Final Action\" && p.DoItemCoefficient==\"实质\"", "OA" },
-                    { 59, "0.1", 59, "p.DoItem==\"form 3-8(2)\" ||  p.DoItem==\"Form 3-8(2)\"", "OA" },
-                    { 58, "0.1", 58, "p.DoItem==\"form 3\"", "OA" },
-                    { 33, "0.2", 33, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAEPO\")", "新申请" },
-                    { 56, "1.5", 56, "p.DoItem==\"Final Action\" && p.DoItemCoefficient==\"实质\"", "OA" },
-                    { 55, "0.2", 55, "p.DoItem==\"Advisory Action\" && p.DoItemCoefficient==\"形式\"", "OA" },
-                    { 54, "1.5", 54, "p.DoItem==\"Advisory Action\" && p.DoItemCoefficient==\"实质\"", "OA" },
-                    { 53, "0.8", 53, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"客户未提供答辩点,撰写英文报导函\"", "OA" },
-                    { 52, "0.5", 52, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"客户提供答辩点,撰写英文报导函\"", "OA" },
-                    { 51, "0.2", 51, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.DoItemCoefficient==\"形式\" && p.AgentFeedbackMemo==\"外所/他人首次转入OA\"", "OA" },
-                    { 50, "0.5", 50, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"外所/他人首次转入OA\"", "OA" },
-                    { 57, "0.2", 57, "p.DoItem==\"Final Action\" && p.DoItemCoefficient==\"形式\"", "OA" },
-                    { 48, "0.35", 48, "p.DoItem==\"请求复审\" && p.ApplicationType==\"实用新型\"  && p.AgentFeedbackMemo==\"请款\"", "OA" },
-                    { 49, "0.3", 49, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.DoItemCoefficient==\"非实质\"  && p.AgentFeedbackMemo==\"外所/他人首次转入OA\"", "OA" },
-                    { 35, "1.7", 36, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAUS\") && p.Customer.Name.Contains(\"OPPO\")", "新申请" },
-                    { 36, "1.8", 35, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAUS\")", "新申请" },
-                    { 37, "1.5", 37, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PCTCN\")", "新申请" },
-                    { 38, "0.0", 38, "(p.ApplicationType==\"实用新型\" || p.ApplicationType==\"发明\") && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"客户不进行答辩\"", "新申请" },
-                    { 40, "p.WordCount/1000*0.16", 40, "p.DoItem==\"新申请\") && p.AgentFeedbackMemo==\"中-英\" && p.WordCount !=null", "新申请" },
-                    { 39, "p.WordCount/1000*0.1", 39, "p.DoItem==\"新申请\") && p.AgentFeedbackMemo==\"英-中\" && p.WordCount !=null", "新申请" },
-                    { 42, "0.1", 42, "p.AgentFeedbackMemo==\"涉外OA不答辩,发报导函结案\"", "OA" },
-                    { 43, "0.2", 43, "p.ApplicationType==\"外观设计\"", "OA" },
-                    { 44, "0.0", 44, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"实用新型\"  && p.AgentFeedbackMemo==\"不请款\"", "OA" }
-                });
-
-            migrationBuilder.InsertData(
-                table: "BasePointRule",
-                columns: new[] { "Id", "PointExpress", "Priority", "Rule", "Type" },
-                values: new object[,]
-                {
-                    { 45, "0.0", 45, "p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"实质\" && (p.CaseStage==\"三通\" || p.CaseStage==\"四通\" || p.CaseStage==\"五通\" || p.CaseStage==\"六通\" || p.CaseStage==\"七通\" || p.CaseStage==\"八通\") ", "OA" },
-                    { 46, "0.14", 46, "p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"实质\" && p.CaseStage==\"二通\" && p.AgentFeedbackMemo==\"请款\"", "OA" },
-                    { 47, "0.35", 47, "p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"实质\" && p.CaseStage==\"一通\" && p.AgentFeedbackMemo==\"请款\"", "OA" },
-                    { 41, "p.WordCount/1000*0.18", 41, "p.DoItem==\"新申请\") && p.AgentFeedbackMemo==\"中-德\" && p.WordCount !=null", "新申请" }
-                });
-
-            migrationBuilder.InsertData(
-                table: "StaffGrade",
-                columns: new[] { "Id", "Coefficient", "Grade" },
-                values: new object[,]
-                {
-                    { 14, 1.1000000000000001, "A级" },
-                    { 9, 0.69999999999999996, "C2级" },
-                    { 13, 0.5, "D1级" },
-                    { 12, 0.59999999999999998, "D2级" },
-                    { 11, 0.59999999999999998, "D3级" },
-                    { 10, 0.69999999999999996, "C1级" },
-                    { 8, 0.90000000000000002, "C3级" },
-                    { 1, 1.2, "S级" },
-                    { 6, 1.0, "B2级" },
-                    { 5, 1.0, "B3级" },
-                    { 4, 1.1000000000000001, "A1级" },
-                    { 3, 1.1000000000000001, "A2级" },
-                    { 2, 1.1000000000000001, "A3级" },
-                    { 15, 1.0, "C级" },
-                    { 7, 0.90000000000000002, "B1级" },
-                    { 16, 0.90000000000000002, "D级" }
-                });
-
-            migrationBuilder.InsertData(
-                table: "VerifyCoefficient",
-                columns: new[] { "CheckerId", "DoPersonId", "Coefficient" },
-                values: new object[,]
-                {
-                    { 1, 5, 0.29999999999999999 },
-                    { 6, 9, 0.29999999999999999 },
-                    { 1, 10, 0.40000000000000002 },
-                    { 2, 10, 0.29999999999999999 },
-                    { 3, 10, 0.29999999999999999 },
-                    { 4, 10, 0.29999999999999999 },
-                    { 5, 10, 0.29999999999999999 },
-                    { 6, 10, 0.29999999999999999 },
-                    { 1, 11, 0.5 },
-                    { 2, 11, 0.40000000000000002 },
-                    { 3, 11, 0.40000000000000002 },
-                    { 4, 11, 0.40000000000000002 },
-                    { 5, 11, 0.40000000000000002 },
-                    { 6, 11, 0.40000000000000002 },
-                    { 1, 12, 0.5 },
-                    { 2, 12, 0.40000000000000002 },
-                    { 3, 12, 0.40000000000000002 },
-                    { 4, 12, 0.40000000000000002 },
-                    { 5, 12, 0.40000000000000002 },
-                    { 6, 12, 0.40000000000000002 },
-                    { 1, 13, 0.59999999999999998 },
-                    { 2, 13, 0.5 },
-                    { 3, 13, 0.5 },
-                    { 4, 13, 0.5 },
-                    { 5, 9, 0.29999999999999999 },
-                    { 4, 9, 0.29999999999999999 },
-                    { 3, 9, 0.29999999999999999 },
-                    { 2, 9, 0.29999999999999999 },
-                    { 2, 5, 0.20000000000000001 },
-                    { 3, 5, 0.20000000000000001 },
-                    { 4, 5, 0.20000000000000001 },
-                    { 5, 5, 0.20000000000000001 },
-                    { 1, 6, 0.29999999999999999 },
-                    { 2, 6, 0.20000000000000001 },
-                    { 3, 6, 0.20000000000000001 },
-                    { 4, 6, 0.20000000000000001 },
-                    { 5, 6, 0.20000000000000001 },
-                    { 6, 5, 0.20000000000000001 },
-                    { 6, 6, 0.20000000000000001 },
-                    { 5, 13, 0.5 },
-                    { 1, 7, 0.29999999999999999 },
-                    { 3, 7, 0.20000000000000001 }
-                });
-
-            migrationBuilder.InsertData(
-                table: "VerifyCoefficient",
-                columns: new[] { "CheckerId", "DoPersonId", "Coefficient" },
-                values: new object[,]
-                {
-                    { 4, 7, 0.20000000000000001 },
-                    { 5, 7, 0.20000000000000001 },
-                    { 6, 7, 0.20000000000000001 },
-                    { 1, 8, 0.29999999999999999 },
-                    { 2, 8, 0.20000000000000001 },
-                    { 3, 8, 0.20000000000000001 },
-                    { 4, 8, 0.20000000000000001 },
-                    { 5, 8, 0.20000000000000001 },
-                    { 6, 8, 0.20000000000000001 },
-                    { 1, 9, 0.40000000000000002 },
-                    { 2, 7, 0.20000000000000001 },
-                    { 6, 13, 0.5 }
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AppealRecord_CreaterId",
-                table: "AppealRecord",
-                column: "CreaterId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AppealRecord_ReviewerId",
-                table: "AppealRecord",
-                column: "ReviewerId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AppealRecord_TypeId",
-                table: "AppealRecord",
-                column: "TypeId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AttachFile_AppealRecordId",
-                table: "AttachFile",
-                column: "AppealRecordId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AttachFile_AppealRecordId1",
-                table: "AttachFile",
-                column: "AppealRecordId1");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_AttachFile_UploadUserId",
-                table: "AttachFile",
-                column: "UploadUserId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Customer_ResponseManId",
-                table: "Customer",
-                column: "ResponseManId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_InputField_AppealTypeId",
-                table: "InputField",
-                column: "AppealTypeId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_InputFieldValue_AppealRecordId",
-                table: "InputFieldValue",
-                column: "AppealRecordId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_InputFieldValue_InputFieldId",
-                table: "InputFieldValue",
-                column: "InputFieldId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_ItemStaff_DoPersonId",
-                table: "ItemStaff",
-                column: "DoPersonId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Message_FromId",
-                table: "Message",
-                column: "FromId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_MessagePerformanceItems_MessageId",
-                table: "MessagePerformanceItems",
-                column: "MessageId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_MessageReadRecord_MessageId1",
-                table: "MessageReadRecord",
-                column: "MessageId1");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_MessageReadRecord_StaffId",
-                table: "MessageReadRecord",
-                column: "StaffId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_PerformanceItem_CalMonthId",
-                table: "PerformanceItem",
-                column: "CalMonthId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_PerformanceItem_CustomerId",
-                table: "PerformanceItem",
-                column: "CustomerId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_PerformanceItem_PreOAStaffId",
-                table: "PerformanceItem",
-                column: "PreOAStaffId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_PerformanceItem_ReviewerId",
-                table: "PerformanceItem",
-                column: "ReviewerId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Staff_StaffGradeId",
-                table: "Staff",
-                column: "StaffGradeId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_VerifyCoefficient_DoPersonId",
-                table: "VerifyCoefficient",
-                column: "DoPersonId");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "AttachFile");
-
-            migrationBuilder.DropTable(
-                name: "BasePointRule");
-
-            migrationBuilder.DropTable(
-                name: "InputFieldValue");
-
-            migrationBuilder.DropTable(
-                name: "ItemStaff");
-
-            migrationBuilder.DropTable(
-                name: "MessagePerformanceItems");
-
-            migrationBuilder.DropTable(
-                name: "MessageReadRecord");
-
-            migrationBuilder.DropTable(
-                name: "VerifyCoefficient");
-
-            migrationBuilder.DropTable(
-                name: "AppealRecord");
-
-            migrationBuilder.DropTable(
-                name: "InputField");
-
-            migrationBuilder.DropTable(
-                name: "PerformanceItem");
-
-            migrationBuilder.DropTable(
-                name: "Message");
-
-            migrationBuilder.DropTable(
-                name: "AppealType");
-
-            migrationBuilder.DropTable(
-                name: "CalMonth");
-
-            migrationBuilder.DropTable(
-                name: "Customer");
-
-            migrationBuilder.DropTable(
-                name: "Staff");
-
-            migrationBuilder.DropTable(
-                name: "StaffGrade");
-        }
-    }
-}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 2329
wispro.sp.api/Migrations/spDbContextModelSnapshot.cs


+ 1 - 1
wispro.sp.api/Utility/Utility.cs

@@ -28,7 +28,7 @@ namespace wispro.sp.api.Utility
 
                 if (result)
                 {
-                    interpreter.SetVariable("p", item);
+                    //interpreter.SetVariable("p", item);
                     item.BasePoint = (double?)interpreter.Eval(rule.PointExpress);
                     item.Type = rule.Type;
                     break;

+ 1 - 1
wispro.sp.api/appsettings.json

@@ -26,7 +26,7 @@
     "Account": "caiyangl",
     "Password": "j)wx*lier*@3",
     "ChormeDriverPath": "D:\\source\\repos\\ConsoleApp2\\ConsoleApp2\\bin\\Debug",
-    "ScheduleSetting": "30 15 17 * * ? *"
+    "ScheduleSetting": "00 03 11 * * ? *"
   },
 
   "MailSetting": {

+ 64 - 4
wispro.sp.api/spDbContext.cs

@@ -1,5 +1,6 @@
 using Microsoft.EntityFrameworkCore;
 using Microsoft.Extensions.Configuration;
+using System.Collections.Generic;
 using System.Configuration;
 using wispro.sp.entity;
 
@@ -43,6 +44,8 @@ namespace wispro.sp.api
 
         public virtual DbSet<AppealRecord> AppealRecords { get; set; }
 
+        public virtual DbSet<SelectValue> SelectValues { get; set; }
+
         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
         {
             if (!optionsBuilder.IsConfigured)
@@ -363,8 +366,7 @@ namespace wispro.sp.api
                 entity.ToTable("InputField");
 
                 entity.Property(e=>e.FieldName).HasMaxLength(50);
-                entity.Property(e => e.FieldType).HasMaxLength(50);
-                entity.Property(e => e.FieldValue).HasMaxLength(500);
+                entity.Property(e => e.FieldType).HasMaxLength(50);                
                 entity.Property(e => e.MapObjectField).HasMaxLength(50);
 
                 entity.HasOne(d => d.AppealType)
@@ -375,6 +377,17 @@ namespace wispro.sp.api
 
             });
 
+            modelBuilder.Entity<SelectValue>(entity => {
+                entity.ToTable("SelectValue");
+                
+                entity.HasOne(d => d.InputField)
+                    .WithMany(s=>s.SelectValues)
+                    .HasForeignKey(d => d.InputFieldId);
+
+                //entity.HasKey(d=>new { d.AppealTypeId,d.AppealState});
+
+            });
+
             modelBuilder.Entity<InputFieldValue>(entity => {
                 entity.ToTable("InputFieldValue");
 
@@ -482,7 +495,7 @@ namespace wispro.sp.api
 
             BasePointRule[] rules = new BasePointRule[]
             {
-                new BasePointRule(){Rule="p.DoItem==\"发明一次OA授权\" && p.ApplicationType==\"发明\"",PointExpress="0.2",Type="一次OA授权",Priority=1},
+                new BasePointRule(){Rule="p.DoItem==\"发明一次OA授权\" && p.ApplicationType==\"发明\"",PointExpress="0.2",Type="其它",Priority=1},
                 new BasePointRule(){Rule="p.ApplicationType==\"实用新型\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"发文后客户取消申请\"",PointExpress="0.49",Type="新申请",Priority=2},
                 new BasePointRule(){Rule="p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"发文后客户取消申请\"",PointExpress="0.7",Type="新申请",Priority=3},
                 new BasePointRule(){Rule="p.CaseNo.StartsWith(\"PADE\")  && p.AgentFeedbackMemo==\"发文后客户原因取消申请,系统结案\"",PointExpress="1.33",Type="新申请",Priority=4},
@@ -550,7 +563,7 @@ namespace wispro.sp.api
                 new BasePointRule(){Rule="p.DoItem==\"分案评估+分案\"",PointExpress="0.2",Type="其它",Priority=66},
                 new BasePointRule(){Rule="p.DoItem==\"绘图\"",PointExpress="0",Type="其它",Priority=67},
                 new BasePointRule(){Rule="p.DoItem==\"技术确认\"",PointExpress="0",Type="其它",Priority=68},
-                new BasePointRule(){Rule="p.DoItem==\"提交ids\"",PointExpress="0.1",Type="其它",Priority=69},
+                new BasePointRule(){Rule="p.DoItem==\"提交ids\" || p.DoItem==\"提交IDS\"",PointExpress="0.1",Type="其它",Priority=69},
                 new BasePointRule(){Rule="p.DoItem==\"询问放弃或复审\"",PointExpress="0",Type="其它",Priority=70},
                 new BasePointRule(){Rule="p.DoItem==\"知识点总结\"",PointExpress="0",Type="其它",Priority=71},
                 new BasePointRule(){Rule="p.DoItem==\"专利挖掘与布局\"",PointExpress="0",Type="其它",Priority=72},
@@ -619,6 +632,53 @@ namespace wispro.sp.api
 
             modelBuilder.Entity<BasePointRule>().HasData(rules);
 
+            
+            AppealType[] appealTypes = new AppealType[]
+            {
+                new AppealType(){Id=1, Name ="绩效点数分配比率",CanDoExpress = "p.ItemStaffs.Count()>1"},
+                new AppealType(){Id=2,Name ="案件系数复核",CanDoExpress = "p.DoItem==\"新申请\"",ReviewerExpress ="p.Reviewer"},
+                new AppealType(){Id=3,Name ="处理事项系数复核",CanDoExpress = "p.DoItem==\"新申请\"",ReviewerExpress ="p.Reviewer"},
+                new AppealType(){Id=4,Name ="案件缺漏申诉",CanDoExpress ="",ReviewerExpress ="p.Reviewer",Type =1}
+            };
+
+            InputField[] inputFields = new InputField[] {
+                new InputField(){Id=1,AppealTypeId =1,AppealState =0,FieldName ="分配比率", MapObjectField ="ItemStaffs.PerformancePoint",FieldType = typeof(double).ToString() },
+                new InputField(){Id=2,AppealTypeId =1,AppealState =0,FieldName ="处理人", MapObjectField ="ItemStaffs.DoPerson.Name" ,FieldType =typeof(string).ToString() },
+                new InputField(){Id=3,AppealTypeId =1,AppealState =0,FieldName ="原因",FieldType =typeof(string).ToString() },
+                new InputField(){Id=4,AppealTypeId =1,AppealState =1,FieldName ="备注",FieldType =typeof(string).ToString() },
+                new InputField(){Id=5,AppealTypeId =1,AppealState =1,FieldName ="审核意见",FieldType =typeof(string).ToString()},
+
+                
+                new InputField(){Id=6,AppealTypeId =2,AppealState =0,FieldName ="案件系数", MapObjectField ="CaseCoefficient",FieldType = typeof(double).ToString() },
+                new InputField(){Id=9,AppealTypeId =2,AppealState =1,FieldName ="备注",FieldType =typeof(string).ToString() },
+                new InputField(){Id=10,AppealTypeId =2,AppealState =1,FieldName ="审核意见",FieldType =typeof(string).ToString()},
+
+
+                new InputField(){Id=11,AppealTypeId =3,AppealState =0,FieldName ="处理事项系数", MapObjectField ="DoItemCoefficient",FieldType = typeof(double).ToString() },
+                new InputField(){Id=12,AppealTypeId =3,AppealState =1,FieldName ="备注",FieldType =typeof(string).ToString() },
+                new InputField(){Id=13,AppealTypeId =3,AppealState =1,FieldName ="审核意见",FieldType =typeof(string).ToString()},
+
+                new InputField(){Id=14,AppealTypeId =4,AppealState =0,FieldName ="我方文号", FieldType = typeof(double).ToString() },
+                new InputField(){Id=15,AppealTypeId =4,AppealState =0,FieldName ="处理事项", FieldType = typeof(double).ToString() },
+                new InputField(){Id=16,AppealTypeId =4,AppealState =1,FieldName ="备注",FieldType =typeof(string).ToString() },
+                new InputField(){Id=17,AppealTypeId =4,AppealState =1,FieldName ="审核意见",FieldType =typeof(string).ToString()}
+            };
+
+            List<SelectValue> selectValues = new List<SelectValue>() {
+                new SelectValue(){Id =1, InputFieldId =5, Value ="同意" },
+                new SelectValue(){Id =2, InputFieldId =5, Value ="拒绝" },
+                new SelectValue(){Id =3, InputFieldId =10, Value ="同意" },
+                new SelectValue(){Id =4, InputFieldId =10, Value ="拒绝" },
+                new SelectValue(){Id =5, InputFieldId =13, Value ="同意" },
+                new SelectValue(){Id =6, InputFieldId =13, Value ="拒绝" },
+                new SelectValue(){Id =7, InputFieldId =17, Value ="同意" },
+                new SelectValue(){Id =8, InputFieldId =17, Value ="拒绝" }
+            };
+
+            modelBuilder.Entity<AppealType>().HasData(appealTypes);
+            modelBuilder.Entity<InputField>().HasData(inputFields);
+            modelBuilder.Entity<SelectValue>().HasData(selectValues);
+
             OnModelCreatingPartial(modelBuilder);
         }
 

+ 123 - 0
wispro.sp.utility/IPEasyUtility.cs

@@ -78,5 +78,128 @@ namespace wispro.sp.utility
 
             }
         }
+
+        /// <summary>
+        /// 根据报表名称导出报表
+        /// </summary>
+        /// <param name="ReportName">报告名称</param>
+        /// <param name="isModifyDate">是否手动修改日期范围</param>
+        public static void DownloadReport(string ReportName,bool isModifyDate)
+        {
+            string strFileSavePath = ConfigHelper.GetSectionValue("IPEasySetting:DownloadFileSavePath");
+            bool isheadless =  (ConfigHelper.GetSectionValue("IPEasySetting:isHeadless") == "true");
+            string Account = ConfigHelper.GetSectionValue("IPEasySetting:Account");
+            string Password = ConfigHelper.GetSectionValue("IPEasySetting:Password");
+
+            OpenQA.Selenium.Chrome.ChromeOptions options = new OpenQA.Selenium.Chrome.ChromeOptions();
+
+
+            options.AddUserProfilePreference("download.default_directory", strFileSavePath);
+            options.AddUserProfilePreference("intl.accept_languages", "nl");
+            options.AddUserProfilePreference("disable-popup-blocking", "true");
+            if (isheadless)
+            {
+                options.AddArgument("headless");
+            }
+
+            using (IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver(ConfigHelper.GetSectionValue("IPEasySetting:ChormeDriverPath"), options))
+            {
+
+                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(50);
+                driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(500);
+
+                //进入登录界面
+                driver.Navigate().GoToUrl("http://47.106.221.167/Login.aspx");
+
+                //输入用户名和密码
+                driver.FindElement(By.Id("txtUser")).SendKeys(Account);
+                driver.FindElement(By.Id("txtPwd")).SendKeys(Password);
+
+                //点击登录按钮
+                driver.FindElement(By.Id("btnLogin")).Click();
+
+                //关闭提示遮罩层
+                driver.FindElement(By.Id("jpwClose")).Click();
+
+                //点击顶部菜单栏中的报表管理菜单
+                driver.FindElement(By.Name("970d33d5-c728-41b8-a060-4330610706b9")).Click();
+
+                //点击左侧 自定义报表 菜单
+                driver.FindElement(By.Name("642fa96f-1e1f-46fd-aaa4-cb461ee8df5b")).Click();
+
+                //切换到自定义报表Frame
+                driver.SwitchTo().Frame(1);
+
+                var inputSearch = driver.FindElement(By.Id("customizedList_TxtSheetSearchKey"));
+
+                inputSearch.SendKeys(ReportName);
+                var btnSearch = driver.FindElement(By.ClassName("btn-search"));
+                btnSearch.Click();
+
+                var reportRecord = driver.FindElement(By.XPath($"//td[contains(text(),'{ReportName}')]"));
+                reportRecord.Click();
+
+                System.Threading.Thread.Sleep(1000);
+
+                if (isModifyDate)
+                {
+                    var btnEdit = driver.FindElement(By.ClassName("edit"));
+                    btnEdit.Click();
+                    System.Threading.Thread.Sleep(500);
+
+                    var doItemFinished = driver.FindElement(By.XPath("//span[contains(@objcvalue,'_date') and contains(@id,'ST;')]"));
+                    doItemFinished.Click();
+                    System.Threading.Thread.Sleep(500);
+
+                    var startDate = driver.FindElement(By.XPath("//input[contains(@id,'dt_s_')]"));
+                    
+                    startDate.Click();
+                    System.Threading.Thread.Sleep(500);
+
+                    startDate.SendKeys($"{DateTime.Now.AddMonths(-1).Year }-{DateTime.Now.AddMonths(-1).Month}-01");
+
+                    var endDate = driver.FindElement(By.XPath("//input[contains(@id,'dt_e_')]"));//.Id("dt_e_4F8FE88D-9040-45F1-9723-45699BCD4CAF"));
+                    endDate.Click();
+                    System.Threading.Thread.Sleep(500);
+                    endDate.SendKeys(new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(-1).ToString("yyyy-MM-dd"));
+
+                    var addDate = driver.FindElement(By.XPath("//a[contains(@onclick,'ReportSub.ConditionDTSelect')]"));
+                    addDate.Click();
+                    System.Threading.Thread.Sleep(500);
+
+                    var btnSave = driver.FindElement(By.Id("save"));
+                    btnSave.Click();
+                    System.Threading.Thread.Sleep(3000);
+
+                }
+
+                var linkExport = driver.FindElement(By.XPath("//a[contains(@onclick,'-') and @class='tbexcel']"));
+                linkExport.Click();
+                
+
+                //切换到弹出的导出报表窗口,点击导出按钮
+                driver.SwitchTo().DefaultContent();
+                var ihg_export = driver.FindElement(By.Name("ihg_export"));
+                driver.SwitchTo().Frame(ihg_export);
+                driver.FindElement(By.Id("btnSubmit")).Click();
+
+                string strFilePath = System.IO.Path.Combine(strFileSavePath, $"{ReportName.Trim()}.xlsx");
+
+
+                while (true)
+                {
+
+                    System.IO.FileInfo file = new System.IO.FileInfo(strFilePath);
+                    if (!file.Exists || file.Length == 0)
+                    {
+                        System.Threading.Thread.Sleep(5000);
+                    }
+                    else
+                    {
+                        break;
+                    }
+                }
+            }
+        }
     }
 }

+ 2 - 0
wispro.sp.winClient/App.config

@@ -8,4 +8,6 @@
 	<add key ="IPEasyAccount" value ="caiyangl"/>
 	<add key ="IPEasyPassword" value ="j)wx*lier*@3"/>
   </appSettings>
+
+
 </configuration>

BIN
wispro.sp.winClient/ExcelFiles/20211109-绩效点数规则-lcy-v1.xlsx


+ 13 - 0
wispro.sp.winClient/Form1.Designer.cs

@@ -32,6 +32,7 @@ namespace wispro.sp.winClient
             this.button1 = new System.Windows.Forms.Button();
             this.button2 = new System.Windows.Forms.Button();
             this.button3 = new System.Windows.Forms.Button();
+            this.button4 = new System.Windows.Forms.Button();
             this.SuspendLayout();
             // 
             // button1
@@ -64,11 +65,22 @@ namespace wispro.sp.winClient
             this.button3.UseVisualStyleBackColor = true;
             this.button3.Click += new System.EventHandler(this.button3_Click);
             // 
+            // button4
+            // 
+            this.button4.Location = new System.Drawing.Point(295, 164);
+            this.button4.Name = "button4";
+            this.button4.Size = new System.Drawing.Size(171, 45);
+            this.button4.TabIndex = 1;
+            this.button4.Text = "测试IPEasy";
+            this.button4.UseVisualStyleBackColor = true;
+            this.button4.Click += new System.EventHandler(this.button4_Click);
+            // 
             // Form1
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.ClientSize = new System.Drawing.Size(925, 215);
+            this.Controls.Add(this.button4);
             this.Controls.Add(this.button3);
             this.Controls.Add(this.button2);
             this.Controls.Add(this.button1);
@@ -85,6 +97,7 @@ namespace wispro.sp.winClient
         private System.Windows.Forms.Button button1;
         private System.Windows.Forms.Button button2;
         private System.Windows.Forms.Button button3;
+        private System.Windows.Forms.Button button4;
     }
 }
 

+ 73 - 140
wispro.sp.winClient/Form1.cs

@@ -1,4 +1,5 @@
-using Microsoft.International.Converters.PinYinConverter;
+using DynamicExpresso;
+using Microsoft.International.Converters.PinYinConverter;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -94,146 +95,61 @@ namespace wispro.sp.winClient
             "专利权人发明人申请人信息变更+代理所变更"
         };
 
-        private async Task InitRules()
+        private async Task InitRules(bool isSave)
         {
-            List<BasePointRule> rules = new List<BasePointRule>()
-            {
-                new BasePointRule(){Rule="p.ApplicationType==\"外观设计\"",PointExpress="0.2",Type="新申请",Priority=1},
-                new BasePointRule(){Rule="p.AgentFeedbackMemo==\"检索结案\"",PointExpress="0.2",Type="新申请",Priority=2},
-                new BasePointRule(){Rule="p.AgentFeedbackMemo==\"撰写中客户取消申请\"",PointExpress="0.0",Type="新申请",Priority=3},
-                new BasePointRule(){Rule="p.ApplicationType==\"实用新型\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"发文后客户取消申请\"",PointExpress="0.49",Type="新申请",Priority=4},
-                new BasePointRule(){Rule="p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"发文后客户取消申请\"",PointExpress="0.7",Type="新申请",Priority=5},
-                new BasePointRule(){Rule="p.CaseNo.StartsWith(\"PADE\")  && p.AgentFeedbackMemo==\"发文后客户原因取消申请,系统结案\"",PointExpress="1.33",Type="新申请",Priority=6},
-                new BasePointRule(){Rule="p.CaseNo.StartsWith(\"PAUS\")  && p.AgentFeedbackMemo==\"发文后客户原因取消申请,系统结案\"",PointExpress="1.26",Type="新申请",Priority=7},
-                new BasePointRule(){Rule="p.AgentFeedbackMemo==\"我方代交\"",PointExpress="0.0",Type="新申请",Priority=8},
-                new BasePointRule(){Rule="p.AgentFeedbackMemo==\"我方转格式、复核\"",PointExpress="0.2",Type="新申请",Priority=9},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"PCT首次英文案\"",PointExpress="1.8",Type="新申请",Priority=10},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"改权\"",PointExpress="0.3",Type="新申请",Priority=11},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"改权+改说明书\"",PointExpress="0.5",Type="新申请",Priority=12},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"涉外实质改权\"",PointExpress="0.7",Type="新申请",Priority=13},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"首次中文案\"",PointExpress="1.0",Type="新申请",Priority=14},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"外-内首次申请\"",PointExpress="1.5",Type="新申请",Priority=15},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"转格式\"",PointExpress="0.1",Type="新申请",Priority=16},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\"  && p.CaseNo.StartsWith(\"PATW\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"",PointExpress="0.1",Type="新申请",Priority=17},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"",PointExpress="0.7",Type="新申请",Priority=18},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" && p.CaseNo.StartsWith(\"PATW\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"",PointExpress="0.1",Type="新申请",Priority=19},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"台湾案转大陆案\"",PointExpress="0.2",Type="新申请",Priority=20},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\"  && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"",PointExpress="1.0",Type="新申请",Priority=21},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.CaseNo.StartsWith(\"PATW\") && p.AgentFeedbackMemo==\"大陆案转台湾案\"",PointExpress="0.2",Type="新申请",Priority=22},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAEPO\")",PointExpress="1.8",Type="新申请",Priority=23},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseNo.EndsWith(\"-分案\")",PointExpress="0.3",Type="新申请",Priority=24},
-                new BasePointRule(){Rule="p.CaseNo.StartsWith(\"PAUS\") && (p.CaseNo.EndsWith(\"-同套\") || p.CaseNo.EndsWith(\"CA\") || p.CaseNo.EndsWith(\"CIP\") || p.CaseNo.EndsWith(\"分案\")) ",PointExpress="0.5",Type="新申请",Priority=25},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\"  && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseNo.EndsWith(\"-TS\")",PointExpress="1.0",Type="新申请",Priority=26},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseNo.EndsWith(\"-TS\")",PointExpress="0.1",Type="新申请",Priority=27},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\")",PointExpress="1.0",Type="新申请",Priority=28},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PACN\") && p.Customer.Name.Contains(\"OPPO\")",PointExpress="1.0",Type="新申请",Priority=30},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PACN\")",PointExpress="0.7",Type="新申请",Priority=29},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PADE\")",PointExpress="1.9",Type="新申请",Priority=31},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PADE\")",PointExpress="1.9",Type="新申请",Priority=32},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAEPO\")",PointExpress="0.2",Type="新申请",Priority=33},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAGB\")",PointExpress="1.8",Type="新申请",Priority=34},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAUS\") && p.Customer.Name.Contains(\"OPPO\")",PointExpress="1.7",Type="新申请",Priority=36},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAUS\")",PointExpress="1.8",Type="新申请",Priority=35},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PCTCN\")",PointExpress="1.5",Type="新申请",Priority=37},
-                new BasePointRule(){Rule="(p.ApplicationType==\"实用新型\" || p.ApplicationType==\"发明\") && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"客户不进行答辩\"",PointExpress="0.0",Type="新申请",Priority=38},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\") && p.AgentFeedbackMemo==\"英-中\" && p.WordCount !=null",PointExpress="p.WordCount/1000*0.1",Type="新申请",Priority=39},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\") && p.AgentFeedbackMemo==\"中-英\" && p.WordCount !=null",PointExpress="p.WordCount/1000*0.16",Type="新申请",Priority=40},
-                new BasePointRule(){Rule="p.DoItem==\"新申请\") && p.AgentFeedbackMemo==\"中-德\" && p.WordCount !=null",PointExpress="p.WordCount/1000*0.18",Type="新申请",Priority=41},
-
-                new BasePointRule(){Rule="p.AgentFeedbackMemo==\"涉外OA不答辩,发报导函结案\"",PointExpress="0.1",Type="OA",Priority=42},
-                new BasePointRule(){Rule="p.ApplicationType==\"外观设计\"",PointExpress="0.2",Type="OA",Priority=43},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"实用新型\"  && p.AgentFeedbackMemo==\"不请款\"",PointExpress="0.0",Type="OA",Priority=44},
-                new BasePointRule(){Rule="p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"实质\" && (p.CaseStage==\"三通\" || p.CaseStage==\"四通\" || p.CaseStage==\"五通\" || p.CaseStage==\"六通\" || p.CaseStage==\"七通\" || p.CaseStage==\"八通\") ",PointExpress="0.0",Type="OA",Priority=45},
-                new BasePointRule(){Rule="p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"实质\" && p.CaseStage==\"二通\" && p.AgentFeedbackMemo==\"请款\"",PointExpress="0.14",Type="OA",Priority=46},
-                new BasePointRule(){Rule="p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"实质\" && p.CaseStage==\"一通\" && p.AgentFeedbackMemo==\"请款\"",PointExpress="0.35",Type="OA",Priority=47},
-                new BasePointRule(){Rule="p.DoItem==\"请求复审\" && p.ApplicationType==\"实用新型\"  && p.AgentFeedbackMemo==\"请款\"",PointExpress="0.35",Type="OA",Priority=48},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.DoItemCoefficient==\"非实质\"  && p.AgentFeedbackMemo==\"外所/他人首次转入OA\"",PointExpress="0.3",Type="OA",Priority=49},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"外所/他人首次转入OA\"",PointExpress="0.5",Type="OA",Priority=50},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.DoItemCoefficient==\"形式\" && p.AgentFeedbackMemo==\"外所/他人首次转入OA\"",PointExpress="0.2",Type="OA",Priority=51},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"客户提供答辩点,撰写英文报导函\"",PointExpress="0.5",Type="OA",Priority=52},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"客户未提供答辩点,撰写英文报导函\"",PointExpress="0.8",Type="OA",Priority=53},
-                new BasePointRule(){Rule="p.DoItem==\"Advisory Action\" && p.DoItemCoefficient==\"实质\"",PointExpress="1.5",Type="OA",Priority=54},
-                new BasePointRule(){Rule="p.DoItem==\"Advisory Action\" && p.DoItemCoefficient==\"形式\"",PointExpress="0.2",Type="OA",Priority=55},
-                new BasePointRule(){Rule="p.DoItem==\"Final Action\" && p.DoItemCoefficient==\"实质\"",PointExpress="1.5",Type="OA",Priority=56},
-                new BasePointRule(){Rule="p.DoItem==\"Final Action\" && p.DoItemCoefficient==\"形式\"",PointExpress="0.2",Type="OA",Priority=57},
-                new BasePointRule(){Rule="p.DoItem==\"form 3\"",PointExpress="0.1",Type="OA",Priority=58},
-                new BasePointRule(){Rule="p.DoItem==\"form 3-8(2)\" ||  p.DoItem==\"Form 3-8(2)\"",PointExpress="0.1",Type="OA",Priority=59},
-                new BasePointRule(){Rule="p.DoItem==\"Non Final Action\" && p.DoItemCoefficient==\"实质\"",PointExpress="1.5",Type="OA",Priority=60},
-                new BasePointRule(){Rule="p.DoItem==\"Non Final Action\" && p.DoItemCoefficient==\"形式\"",PointExpress="0.2",Type="OA",Priority=61},
-                new BasePointRule(){Rule="p.DoItem==\"RCE\" && p.DoItemCoefficient==\"实质\"",PointExpress="1.5",Type="OA",Priority=62},
-                new BasePointRule(){Rule="p.DoItem==\"RCE\" && p.DoItemCoefficient==\"形式\"",PointExpress="0.2",Type="OA",Priority=63},
-                new BasePointRule(){Rule="p.DoItem==\"欧洲案答辩\" && p.DoItemCoefficient==\"实质\"",PointExpress="1.5",Type="OA",Priority=64},
-                new BasePointRule(){Rule="p.DoItem==\"欧洲案答辩\" && p.DoItemCoefficient==\"形式\"",PointExpress="0.2",Type="OA",Priority=65},
-                new BasePointRule(){Rule="p.DoItem==\"口审评估\" && p.DoItemCoefficient==\"非实质\"",PointExpress="0.2",Type="OA",Priority=66},
-                new BasePointRule(){Rule="p.DoItem==\"口审评估\" && p.DoItemCoefficient==\"实质\"",PointExpress="1.5",Type="OA",Priority=67},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAUS\")",PointExpress="1.5",Type="OA",Priority=68},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAUS\")",PointExpress="0.2",Type="OA",Priority=69},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAAU\")",PointExpress="1.5",Type="OA",Priority=70},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PADE\")",PointExpress="1.6",Type="OA",Priority=71},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAEPO\")",PointExpress="1.5",Type="OA",Priority=72},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAGB\")",PointExpress="1.5",Type="OA",Priority=73},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAIN\")",PointExpress="1.5",Type="OA",Priority=74},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAAU\")",PointExpress="0.2",Type="OA",Priority=75},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PADE\")",PointExpress="0.3",Type="OA",Priority=76},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAEPO\")",PointExpress="0.2",Type="OA",Priority=77},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAGB\")",PointExpress="0.2",Type="OA",Priority=78},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAIN\")",PointExpress="0.2",Type="OA",Priority=79},
-                new BasePointRule(){Rule="p.DoItem==\"申復\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PATW\")",PointExpress="0.5",Type="OA",Priority=80},
-                new BasePointRule(){Rule="p.DoItem==\"申復\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PATW\")",PointExpress="0.2",Type="OA",Priority=81},
-                new BasePointRule(){Rule="p.DoItem==\"请求复审\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\")",PointExpress="0.5",Type="OA",Priority=82},
-                new BasePointRule(){Rule="p.DoItem==\"意见陈述\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"复审\"",PointExpress="0.2",Type="OA",Priority=83},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"非实质\" && p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"一通\"",PointExpress="0.3",Type="OA",Priority=84},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PACN\")  && p.CaseStage==\"一通\"",PointExpress="0.5",Type="OA",Priority=85},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"一通\"",PointExpress="0.2",Type="OA",Priority=86},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"非实质\" && p.CaseNo.StartsWith(\"PCTCN\") && p.CaseStage==\"一通\"",PointExpress="0.3",Type="OA",Priority=87},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PCTCN\")  && p.CaseStage==\"一通\"",PointExpress="0.5",Type="OA",Priority=88},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PCTCN\") && p.CaseStage==\"一通\"",PointExpress="0.2",Type="OA",Priority=89},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"二通\"",PointExpress="0.2",Type="OA",Priority=90},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PCTCN\") && p.CaseStage==\"二通\"",PointExpress="0.2",Type="OA",Priority=91},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") &&  (p.CaseStage==\"三通\" || p.CaseStage==\"四通\" || p.CaseStage==\"五通\")",PointExpress="0.0",Type="OA",Priority=92},
-                new BasePointRule(){Rule="p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PCTCN\") &&  (p.CaseStage==\"三通\" || p.CaseStage==\"四通\" || p.CaseStage==\"五通\")",PointExpress="0.0",Type="OA",Priority=93},
-                new BasePointRule(){Rule="p.DoItem==\"发明一次OA授权\" && p.ApplicationType==\"发明\"",PointExpress="0.2",Type="一次OA授权",Priority=94},
-                new BasePointRule(){Rule="p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"内-外\"",PointExpress="0.7",Type="其它",Priority=95},
-                new BasePointRule(){Rule="p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"外-内\"",PointExpress="0.5",Type="其它",Priority=96},
-                new BasePointRule(){Rule="p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"形式\" && p.AgentFeedbackMemo==\"内-外\"",PointExpress="0.3",Type="其它",Priority=97},
-                new BasePointRule(){Rule="p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"形式\" && p.AgentFeedbackMemo==\"外-内\"",PointExpress="0.2",Type="其它",Priority=98},
-                new BasePointRule(){Rule="p.AgentFeedbackMemo==\"检索结案\"",PointExpress="0.1",Type="其它",Priority=99},
-                new BasePointRule(){Rule="p.DoItem==\"内部检索\"",PointExpress="0.0",Type="其它",Priority=100},
-                new BasePointRule(){Rule="p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAAU\")",PointExpress="0.2",Type="其它",Priority=101},
-                new BasePointRule(){Rule="p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PACN\")",PointExpress="0.0",Type="其它",Priority=102},
-                new BasePointRule(){Rule="p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PCTCN\")",PointExpress="0.0",Type="其它",Priority=103},
-                new BasePointRule(){Rule="p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"WOCN\")",PointExpress="0.0",Type="其它",Priority=104},
-                new BasePointRule(){Rule="p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PADE\")",PointExpress="0.2",Type="其它",Priority=105},
-                new BasePointRule(){Rule="p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAEPO\")",PointExpress="0.2",Type="其它",Priority=106},
-                new BasePointRule(){Rule="p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAGB\")",PointExpress="0.2",Type="其它",Priority=107},
-                new BasePointRule(){Rule="p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAIN\")",PointExpress="0.2",Type="其它",Priority=108},
-                new BasePointRule(){Rule="p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAUS\")",PointExpress="0.2",Type="其它",Priority=109},
-                new BasePointRule(){Rule="p.DoItem==\"Election Action\"",PointExpress="0.2",Type="其它",Priority=110},
-                new BasePointRule(){Rule="p.DoItem==\"OA答辩校核\"",PointExpress="0.2",Type="其它",Priority=111},
-                new BasePointRule(){Rule="p.DoItem==\"PPH\"",PointExpress="0.1",Type="其它",Priority=112},
-                new BasePointRule(){Rule="p.DoItem==\"电询\"  && p.CaseNo.StartsWith(\"PACN\")",PointExpress="0.0",Type="其它",Priority=113},
-                new BasePointRule(){Rule="p.DoItem==\"电询\"  && p.CaseNo.StartsWith(\"PAEPO\") ",PointExpress="0.2",Type="其它",Priority=114},
-                new BasePointRule(){Rule="p.DoItem==\"电询\"  && p.CaseNo.StartsWith(\"PAUS\")",PointExpress="0.2",Type="其它",Priority=115},
-                new BasePointRule(){Rule="p.DoItem==\"分案评估\"",PointExpress="0.1",Type="其它",Priority=116},
-                new BasePointRule(){Rule="p.DoItem==\"分案评估+分案\"",PointExpress="0.2",Type="其它",Priority=117},
-                new BasePointRule(){Rule="p.DoItem==\"绘图\"",PointExpress="0.0",Type="其它",Priority=118},
-                new BasePointRule(){Rule="p.DoItem==\"技术确认\"",PointExpress="0.0",Type="其它",Priority=119},
-                new BasePointRule(){Rule="p.DoItem==\"提交ids\"",PointExpress="0.1",Type="其它",Priority=120},
-                new BasePointRule(){Rule="p.DoItem==\"询问放弃或复审\"",PointExpress="0.0",Type="其它",Priority=121},
-                new BasePointRule(){Rule="p.DoItem==\"知识点总结\"",PointExpress="0.0",Type="其它",Priority=122},
-                new BasePointRule(){Rule="p.DoItem==\"专利挖掘与布局\"",PointExpress="0.0",Type="其它",Priority=123},
-                new BasePointRule(){Rule="p.ApplicationType==\"外观设计\"",PointExpress="0.2",Type="其它",Priority=124},
-                new BasePointRule(){Rule="p.DoItem==\"提交ids\"",PointExpress="0.0",Type="其它",Priority=125},
-                new BasePointRule(){Rule="p.DoItem==\"请求优先审查\"",PointExpress="0.0",Type="其它",Priority=126},
-                new BasePointRule(){Rule="p.DoItem==\"翻译\") && p.AgentFeedbackMemo==\"英-中\"",PointExpress="p.WordCount/1000*0.1",Type="其它",Priority=127},
-                new BasePointRule(){Rule="p.DoItem==\"翻译\") && p.AgentFeedbackMemo==\"中-英\"",PointExpress="p.WordCount/1000*0.16",Type="其它",Priority=128},
-                new BasePointRule(){Rule="p.DoItem==\"翻译\") && p.AgentFeedbackMemo==\"中-德\"",PointExpress="p.WordCount/1000*0.18",Type="其它",Priority=129},
-                new BasePointRule(){Rule="p.AgentFeedbackMemo==\"已核算绩效\"",PointExpress="0.0",Type="其它",Priority=130}
-            };
+            List<BasePointRule> rules = new List<BasePointRule>();
+            DataTable dt = wispro.sp.utility.NPOIExcel.ExcelToDataTable("ExcelFiles\\20211109-绩效点数规则-lcy-v1.xlsx", true);
+
+            PerformanceItem item = new PerformanceItem() { CaseNo = "PAEPO2016277", DoItem= "提交检索主题声明", };
+            foreach(DataRow row in dt.Rows)
+            {
+                BasePointRule rule = new BasePointRule()
+                {
+                    Rule = row["规则"].ToString(),
+                    PointExpress = row["点数计算"].ToString(),
+                    Priority = int.Parse(row["优先级修订"].ToString()),
+                    Type = row["类型"].ToString()
+
+                };
+
+                try
+                {
+                    var interpreter = new Interpreter();
+
+                    
+                    //item.ApplicationType
+                    Func<PerformanceItem, bool> func = interpreter.ParseAsDelegate<Func<PerformanceItem, bool>>(rule.Rule, "p");
+
+                    bool result = func.Invoke(item);
+
+                    if (result)
+                    {
+                        item.BasePoint = (double?)interpreter.Eval(rule.PointExpress);
+                        item.Type = rule.Type;
+                        System.Diagnostics.Debug.WriteLine("");
+                    }
+
+                    rules.Add(rule);
+                }
+                catch(Exception ex)
+                {
+                    System.Diagnostics.Debug.WriteLine(rule.Rule  + "\r\n" + ex.ToString());
+                }
+
+                
+            }
 
-            foreach(BasePointRule rule in rules)
+            if (isSave)
             {
-                await SaveBasePointRule(rule);
+                foreach (BasePointRule rule in rules)
+                {
+                    double d;
+                    if(double.TryParse(rule.PointExpress,out d))
+                    {
+                        rule.PointExpress = d.ToString("0.00");
+                    }
+                    await SaveBasePointRule(rule);
+                }
             }
         }
 
@@ -251,13 +167,15 @@ namespace wispro.sp.winClient
             //System.Diagnostics.Debug.WriteLine(filter.ConditionTree.ToExpressString("s")); ;
 
         }
+
+
         private async void button3_Click(object sender, EventArgs e)
         {
             //await TestQueryFilter();
 
-            //await InitRules();
+            await InitRules(true);
 
-            //return;
+            return;
 
             await ImportUsers();
             await InputPerformanceItem("ExcelFiles\\21.01-21.06 工程师绩效报表-总表.xlsx", true, false, 0);
@@ -772,5 +690,20 @@ namespace wispro.sp.winClient
 
 
         }
+
+        private void button4_Click(object sender, EventArgs e)
+        {
+            wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--上个月递交完成案件", true);
+            wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--发客户超过一个月未完成案件", false);
+            wispro.sp.utility.IPEasyUtility.DownloadReport("每月绩效统计--中国一次OA授权表", true);
+            ////每月绩效统计--发客户超过一个月未完成案件
+            //NewMethod("506aa7ad-c3f4-4ec6-9ec8-ff6b92dcd7c1", "每月绩效统计--发客户超过一个月未完成案件.xlsx", calMonth);
+
+            ////每月绩效统计--上个月递交完成案件
+            //NewMethod("d7308cd2-71e4-4444-9f47-f4d731ddb26a", "每月绩效统计--上个月递交完成案件.xlsx", calMonth);
+
+            ////每月绩效统计--中国一次OA授权表
+            //NewMethod("72454834-afdd-4b98-b42a-0bc912d07610", "每月绩效统计--中国一次OA授权表.xlsx", calMonth, true);
+        }
     }
 }

+ 10 - 0
wispro.sp.winClient/appsettings.json

@@ -0,0 +1,10 @@
+{
+  "IPEasySetting": {
+    "DownloadFileSavePath": "c:\\temp",
+    "isHeadless": "false",
+    "Account": "caiyangl",
+    "Password": "j)wx*lier*@3",
+    "ChormeDriverPath": "D:\\source\\repos\\ConsoleApp2\\ConsoleApp2\\bin\\Debug",
+    "ScheduleSetting": "30 15 17 * * ? *"
+  }
+}

+ 8 - 4
wispro.sp.winClient/wispro.sp.winClient.csproj

@@ -16,16 +16,23 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <None Remove="appsettings.json" />
     <None Remove="ExcelFiles\20210903-威世博常用绩效点数计算规则-v2-lcy.xls" />
+    <None Remove="ExcelFiles\20210903-威世博常用绩效点数计算规则-v3-lcy.xls" />
+    <None Remove="ExcelFiles\20211109-绩效点数规则-lcy-v1.xlsx" />
   </ItemGroup>
 
   <ItemGroup>
-    <Content Include="ExcelFiles\20210903-威世博常用绩效点数计算规则-v2-lcy.xls">
+    <Content Include="appsettings.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="ExcelFiles\20211109-绩效点数规则-lcy-v1.xlsx">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
   </ItemGroup>
 
   <ItemGroup>
+    <PackageReference Include="DynamicExpresso.Core" Version="2.9.3" />
     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.9">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -41,9 +48,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <None Update="ExcelFiles\20210903-威世博常用绩效点数计算规则-v3-lcy.xls">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
     <None Update="ExcelFiles\21.01-21.06 工程师绩效报表-总表.xlsx">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>

+ 7 - 0
wospro.sp.entity/AppealType.cs

@@ -26,6 +26,13 @@ namespace wispro.sp.entity
         /// </summary>
         public string ReviewerExpress { get; set; }
 
+        /// <summary>
+        /// 申诉类型,
+        /// 0:绩效记录
+        /// 1:公共
+        /// </summary>
+        public int Type { get; set; }
+
         
     }
 }

+ 10 - 4
wospro.sp.entity/InputField.cs

@@ -19,10 +19,6 @@ namespace wispro.sp.entity
         /// </summary>
         public string FieldType { get; set; }
 
-        /// <summary>
-        /// 栏位值
-        /// </summary>
-        public string FieldValue { get; set; }
 
         /// <summary>
         /// 对应绩效事项的值
@@ -42,6 +38,16 @@ namespace wispro.sp.entity
         /// </summary>
         public int AppealState { get; set; }
 
+        /// <summary>
+        /// 是否可以多选
+        /// </summary>
+        public bool CanMuliSelect { get; set; }
+
         
+        /// <summary>
+        /// 可选择的值
+        /// </summary>
+        public virtual List<SelectValue> SelectValues { get; set; }
     }
+   
 }

+ 4 - 2
wospro.sp.entity/InputFieldValue.cs

@@ -18,8 +18,10 @@ namespace wispro.sp.entity
 
         public virtual AppealRecord AppealRecord { get; set; }
 
-        
-
+        /// <summary>
+        /// 映射表达式,用于映射栏位为多值时定位映射到那个值
+        /// </summary>
+        public string mapExpress { get; set; }
         
     }
 }

+ 18 - 0
wospro.sp.entity/SelectValue.cs

@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace wispro.sp.entity
+{
+    public class SelectValue
+    {
+        public int Id { get; set; }
+        public string Value { get; set; }
+
+        public virtual InputField InputField { get; set; }
+
+        public int InputFieldId { get; set; }
+    }
+}