using System;
using Microsoft.EntityFrameworkCore.Migrations;

namespace wispro.sp.api.Migrations
{
    public partial class spdatabase : 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),
                    Type = table.Column<int>(type: "int", nullable: false)
                },
                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: "CaseCeofficient",
                columns: table => new
                {
                    Ceoffcient = table.Column<string>(type: "nvarchar(450)", nullable: false),
                    Value = table.Column<double>(type: "float", nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_CaseCeofficient", x => x.Ceoffcient);
                });

            migrationBuilder.CreateTable(
                name: "Department",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    ancestors = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    order_num = table.Column<int>(type: "int", nullable: true),
                    Memo = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    parentId = table.Column<int>(type: "int", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Department", x => x.Id);
                });

            migrationBuilder.CreateTable(
                name: "Position",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    Memo = table.Column<string>(type: "nvarchar(max)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Position", 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),
                    MapObjectField = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
                    MapObjectFieldLabel = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    AppealTypeId = table.Column<int>(type: "int", nullable: false),
                    AppealState = table.Column<int>(type: "int", nullable: false),
                    CanMuliSelect = table.Column<bool>(type: "bit", nullable: false),
                    MaxSize = table.Column<int>(type: "int", nullable: true),
                    MapSaveCondition = table.Column<string>(type: "nvarchar(max)", nullable: true)
                },
                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: "SelectValue",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    Value = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    InputFieldId = table.Column<int>(type: "int", nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_SelectValue", x => x.Id);
                    table.ForeignKey(
                        name: "FK_SelectValue_InputField_InputFieldId",
                        column: x => x.InputFieldId,
                        principalTable: "InputField",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                });

            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: "DepartmentPosition",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    departmentId = table.Column<int>(type: "int", nullable: false),
                    PositionId = table.Column<int>(type: "int", nullable: false),
                    StaffId = table.Column<int>(type: "int", nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_DepartmentPosition", x => x.Id);
                    table.ForeignKey(
                        name: "FK_DepartmentPosition_Department_departmentId",
                        column: x => x.departmentId,
                        principalTable: "Department",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                    table.ForeignKey(
                        name: "FK_DepartmentPosition_Position_PositionId",
                        column: x => x.PositionId,
                        principalTable: "Position",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                    table.ForeignKey(
                        name: "FK_DepartmentPosition_Staff_StaffId",
                        column: x => x.StaffId,
                        principalTable: "Staff",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                });

            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: "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: "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: true),
                    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),
                    ItemId = 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_PerformanceItem_ItemId",
                        column: x => x.ItemId,
                        principalTable: "PerformanceItem",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                    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: "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.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: true),
                    AppealRecordId = 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.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),
                    Label = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    Value = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
                    AppealRecordId = table.Column<int>(type: "int", nullable: false),
                    mapExpress = table.Column<string>(type: "nvarchar(max)", nullable: true)
                },
                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: "InputValueSetting",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    DisplayName = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    valueType = table.Column<int>(type: "int", nullable: false),
                    bindField = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    bindFieldSavetoObjectCondition = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    actionId = table.Column<int>(type: "int", nullable: false),
                    Options = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    ParentSettingId = table.Column<int>(type: "int", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_InputValueSetting", x => x.Id);
                    table.ForeignKey(
                        name: "FK_InputValueSetting_InputValueSetting_ParentSettingId",
                        column: x => x.ParentSettingId,
                        principalTable: "InputValueSetting",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Restrict);
                });

            migrationBuilder.CreateTable(
                name: "Workflow",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    ContentObjectType = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    InitActionId = table.Column<int>(type: "int", nullable: false),
                    EndStepId = table.Column<int>(type: "int", nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Workflow", x => x.Id);
                });

            migrationBuilder.CreateTable(
                name: "Step",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    workflowId = table.Column<int>(type: "int", nullable: false),
                    stepType = table.Column<int>(type: "int", nullable: false),
                    defaultResponseSetting = table.Column<string>(type: "nvarchar(max)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Step", x => x.Id);
                    table.ForeignKey(
                        name: "FK_Step_Workflow_workflowId",
                        column: x => x.workflowId,
                        principalTable: "Workflow",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                });

            migrationBuilder.CreateTable(
                name: "WorkflowInstance",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    workflowId = table.Column<int>(type: "int", nullable: false),
                    ObjectId = table.Column<int>(type: "int", nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_WorkflowInstance", x => x.Id);
                    table.ForeignKey(
                        name: "FK_WorkflowInstance_Workflow_workflowId",
                        column: x => x.workflowId,
                        principalTable: "Workflow",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                });

            migrationBuilder.CreateTable(
                name: "Action",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    InputForm = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    StepId = table.Column<int>(type: "int", nullable: false),
                    OnActionObjectType = table.Column<string>(type: "nvarchar(max)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Action", x => x.Id);
                    table.ForeignKey(
                        name: "FK_Action_Step_StepId",
                        column: x => x.StepId,
                        principalTable: "Step",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                });

            migrationBuilder.CreateTable(
                name: "TrasferCondition",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    StepId = table.Column<int>(type: "int", nullable: false),
                    Condition = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    nextStepId = table.Column<int>(type: "int", nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_TrasferCondition", x => x.Id);
                    table.ForeignKey(
                        name: "FK_TrasferCondition_Step_nextStepId",
                        column: x => x.nextStepId,
                        principalTable: "Step",
                        principalColumn: "Id");
                    table.ForeignKey(
                        name: "FK_TrasferCondition_Step_StepId",
                        column: x => x.StepId,
                        principalTable: "Step",
                        principalColumn: "Id");
                });

            migrationBuilder.CreateTable(
                name: "InputValue",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    valueSettingId = table.Column<int>(type: "int", nullable: false),
                    value = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    workflowInstanceId = table.Column<int>(type: "int", nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_InputValue", x => x.Id);
                    table.ForeignKey(
                        name: "FK_InputValue_InputValueSetting_valueSettingId",
                        column: x => x.valueSettingId,
                        principalTable: "InputValueSetting",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                    table.ForeignKey(
                        name: "FK_InputValue_WorkflowInstance_workflowInstanceId",
                        column: x => x.workflowInstanceId,
                        principalTable: "WorkflowInstance",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                });

            migrationBuilder.CreateTable(
                name: "StepInstance",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    stepId = table.Column<int>(type: "int", nullable: false),
                    workflowInstanceId = table.Column<int>(type: "int", nullable: false),
                    PreviousStepId = table.Column<int>(type: "int", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_StepInstance", x => x.Id);
                    table.ForeignKey(
                        name: "FK_StepInstance_Step_stepId",
                        column: x => x.stepId,
                        principalTable: "Step",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                    table.ForeignKey(
                        name: "FK_StepInstance_WorkflowInstance_workflowInstanceId",
                        column: x => x.workflowInstanceId,
                        principalTable: "WorkflowInstance",
                        principalColumn: "Id");
                });

            migrationBuilder.InsertData(
                table: "AppealType",
                columns: new[] { "Id", "CanDoExpress", "Name", "ReviewerExpress", "Type" },
                values: new object[,]
                {
                    { 1, "p.ItemStaffs.Count()>1", "绩效点数分配比率", null, 0 },
                    { 2, "p.DoItem==\"新申请\"", "案件系数复核", "p.Reviewer", 0 },
                    { 3, "p.DoItem==\"新申请\"", "处理事项系数复核", "p.Reviewer", 0 },
                    { 4, "", "案件缺漏申诉", "p.Reviewer", 1 },
                    { 5, "p.isDanger()", "案件严重超期说明", null, 0 },
                    { 6, "p.DoItem==\"新申请\" || p.DoItem==\"翻译\"", "按照翻译字数算绩效备注", null, 0 }
                });

            migrationBuilder.InsertData(
                table: "BasePointRule",
                columns: new[] { "Id", "PointExpress", "Priority", "Rule", "Type" },
                values: new object[,]
                {
                    { 90, "0.2", 47, "p.DoItem==\"Non Final Action\" && p.DoItemCoefficient==\"形式\"", "OA" },
                    { 91, "1.5", 46, "p.DoItem==\"Non Final Action\" && p.DoItemCoefficient==\"实质\"", "OA" },
                    { 92, "0.1", 45, "p.DoItem==\"form 3-8（2）\" || p.DoItem==\"Form 3-8(2)\" || p.DoItem==\"Form 3-8(2)\"", "OA" },
                    { 93, "0.1", 44, "p.DoItem==\"form 3\"", "OA" },
                    { 94, "0.2", 43, "p.DoItem==\"Final Action\" && p.DoItemCoefficient==\"形式\"", "OA" },
                    { 95, "1.5", 42, "p.DoItem==\"Final Action\" && p.DoItemCoefficient==\"实质\"", "OA" },
                    { 98, "p.WordCount/1000*0.18", 39, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"中-德\" && p.WordCount !=null", "其它" },
                    { 97, "1.5", 40, "p.DoItem==\"Advisory Action\" && p.DoItemCoefficient==\"实质\"", "OA" },
                    { 89, "1.5", 48, "p.DoItem==\"RCE\" && p.DoItemCoefficient==\"实质\"", "OA" },
                    { 99, "p.WordCount/1000*0.16", 38, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"中-英\" && p.WordCount !=null", "其它" },
                    { 100, "p.WordCount/1000*0.1", 37, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"英-中\" && p.WordCount !=null", "其它" },
                    { 101, "0", 36, "(p.ApplicationType==\"实用新型\" || p.ApplicationType==\"发明\") && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"客户不进行答辩\"", "其它" },
                    { 102, "1.26", 35, "p.CaseNo.StartsWith(\"PAUS\")  && p.AgentFeedbackMemo==\"发文后客户原因取消申请，系统结案\"", "新申请" },
                    { 96, "0.2", 41, "p.DoItem==\"Advisory Action\" && p.DoItemCoefficient==\"形式\"", "OA" },
                    { 88, "0.2", 49, "p.DoItem==\"RCE\" && p.DoItemCoefficient==\"形式\"", "OA" },
                    { 85, "0.2", 52, "p.DoItem==\"口审评估\" && p.DoItemCoefficient==\"形式\"", "OA" },
                    { 86, "0.2", 51, "p.DoItem==\"欧洲案答辩\" && p.DoItemCoefficient==\"形式\"", "OA" },
                    { 71, "0.5", 66, "p.DoItem==\"申復\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PATW\")", "OA" },
                    { 72, "0.2", 65, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAIN\")", "OA" },
                    { 73, "0.2", 64, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAGB\")", "OA" },
                    { 74, "0.2", 63, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAEPO\")", "OA" },
                    { 75, "0.3", 62, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PADE\")", "OA" },
                    { 77, "1.5", 60, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAIN\")", "OA" },
                    { 87, "1.5", 50, "p.DoItem==\"欧洲案答辩\" && p.DoItemCoefficient==\"实质\"", "OA" },
                    { 78, "1.5", 59, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAGB\")", "OA" },
                    { 80, "1.6", 57, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PADE\")", "OA" },
                    { 81, "1.5", 56, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAAU\")", "OA" },
                    { 82, "0.2", 55, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAUS\")", "OA" },
                    { 83, "1.5", 54, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAUS\")", "OA" },
                    { 84, "1.5", 53, "p.DoItem==\"口审评估\" && p.DoItemCoefficient==\"实质\"", "OA" },
                    { 103, "1.33", 34, "p.CaseNo.StartsWith(\"PADE\")  && p.AgentFeedbackMemo==\"发文后客户原因取消申请，系统结案\"", "新申请" },
                    { 79, "1.5", 58, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PAEPO\")", "OA" },
                    { 104, "0.7", 33, "p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"发文后客户取消申请\"", "新申请" },
                    { 107, "1.5", 30, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PCTCN\") && p.AgentFeedbackMemo==\"外到内首次申请\"", "新申请" },
                    { 106, "0", 31, "p.AgentFeedbackMemo==\"撰写中客户取消申请\"", "其它" },
                    { 137, "0", 250, "p.CaseNo.StartsWith(\"S\")", "专案" }
                });

            migrationBuilder.InsertData(
                table: "BasePointRule",
                columns: new[] { "Id", "PointExpress", "Priority", "Rule", "Type" },
                values: new object[,]
                {
                    { 136, "1", 1, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\")", "新申请" },
                    { 135, "1", 2, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") && p.CaseNo.EndsWith(\"-TS\")", "新申请" },
                    { 134, "0.7", 3, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PACN\")", "新申请" },
                    { 133, "1", 4, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PACN\") && (p.Customer!=null && p.Customer.Name.Contains(\"OPPO\"))", "新申请" },
                    { 132, "0.1", 5, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseNo.EndsWith(\"-TS\")", "其它" },
                    { 131, "1.9", 6, "p.DoItem==\"新申请\" && p.CaseNo.StartsWith(\"PADE\")", "新申请" },
                    { 130, "0.2", 7, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAEPO\")", "其它" },
                    { 129, "1.8", 8, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAGB\")", "新申请" },
                    { 128, "1.8", 9, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAUS\")", "新申请" },
                    { 127, "1.7", 10, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAUS\") && (p.Customer!=null && p.Customer.Name.Contains(\"OPPO\"))", "新申请" },
                    { 126, "0.1", 11, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\"  && p.CaseNo.StartsWith(\"PATW\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"", "其它" },
                    { 125, "0.7", 12, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"", "新申请" },
                    { 124, "0.1", 13, "p.DoItem==\"新申请\" && p.ApplicationType==\"实用新型\" && p.CaseNo.StartsWith(\"PATW\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"", "其它" },
                    { 123, "0.2", 14, "p.DoItem==\"新申请\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"台湾案转大陆案\"", "其它" },
                    { 122, "1", 15, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\"  && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"同套大陆+台湾\"", "新申请" },
                    { 121, "0.2", 16, "p.DoItem==\"新申请\" && p.CaseNo.StartsWith(\"PATW\") && p.AgentFeedbackMemo==\"大陆案转台湾案\"", "其它" },
                    { 70, "0.2", 67, "p.DoItem==\"申復\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PATW\")", "OA" },
                    { 108, "0.1", 29, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"转格式\"", "其它" },
                    { 109, "1.5", 28, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"外-内首次申请\"", "新申请" },
                    { 110, "1", 27, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"首次中文案\"", "新申请" },
                    { 111, "0.7", 26, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"涉外实质改权\"", "新申请" },
                    { 112, "0.5", 25, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"改权+改说明书\"", "其它" },
                    { 105, "0.49", 32, "p.ApplicationType==\"实用新型\" && p.CaseNo.StartsWith(\"PACN\") && p.AgentFeedbackMemo==\"发文后客户取消申请\"", "新申请" },
                    { 113, "0.3", 24, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"改权\"", "其它" },
                    { 115, "0.2", 22, "p.AgentFeedbackMemo==\"我方转格式、复核\"", "其它" },
                    { 116, "0", 21, "p.AgentFeedbackMemo==\"我方代交\"", "其它" },
                    { 117, "0.5", 20, "p.CaseNo.StartsWith(\"PAUS\") && (p.CaseNo.EndsWith(\"-同套\") || p.CaseNo.EndsWith(\"CA\") || p.CaseNo.EndsWith(\"CIP\") || p.CaseNo.EndsWith(\"分案\")) ", "其它" },
                    { 118, "0.2", 19, "(p.CaseNo.StartsWith(\"PAMY \") || p.CaseNo.StartsWith(\"PADE\") || p.CaseNo.StartsWith(\"PAGB\") || p.CaseNo.StartsWith(\"PAIN\") || p.CaseNo.StartsWith(\"PAUS\") || p.CaseNo.StartsWith(\"PAEPO\") ) && p.AgentFeedbackMemo==\"同套\"", "其它" },
                    { 119, "0.3", 18, "p.DoItem==\"新申请\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseNo.EndsWith(\"-分案\")", "其它" },
                    { 120, "1.8", 17, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"欧洲案首次\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PAEPO\")", "新申请" },
                    { 114, "1.8", 23, "p.DoItem==\"新申请\" && p.AgentFeedbackMemo==\"PCT首次英文案\"", "新申请" },
                    { 69, "0.5", 68, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"客户提供答辩点，撰写英文报导函\"", "OA" },
                    { 76, "0.2", 61, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PAAU\")", "OA" },
                    { 67, "0.1", 70, "p.AgentFeedbackMemo==\"涉外OA不答辩，发报导函结案\"", "其它" },
                    { 31, "0", 106, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PACN\")", "其它" },
                    { 30, "0", 107, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PCTCN\")", "其它" },
                    { 29, "0", 108, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"WOCN\")", "其它" },
                    { 28, "0.2", 109, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PADE\")", "其它" },
                    { 27, "0.2", 110, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAEPO\")", "其它" },
                    { 26, "0.2", 111, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAGB\")", "其它" },
                    { 25, "0.2", 112, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAIN\")", "其它" },
                    { 68, "0.8", 69, "p.DoItem==\"处理审查意见\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"客户未提供答辩点，撰写英文报导函\"", "OA" }
                });

            migrationBuilder.InsertData(
                table: "BasePointRule",
                columns: new[] { "Id", "PointExpress", "Priority", "Rule", "Type" },
                values: new object[,]
                {
                    { 23, "0.2", 114, "p.DoItem==\"Election Action\"", "其它" },
                    { 22, "0.2", 115, "p.DoItem==\"OA答辩校核\"", "其它" },
                    { 21, "0.1", 116, "p.DoItem==\"PPH\"", "其它" },
                    { 20, "0", 117, "p.DoItem==\"电询\"  && p.CaseNo.StartsWith(\"PACN\")", "其它" },
                    { 19, "0.2", 118, "p.DoItem==\"电询\"  && p.CaseNo.StartsWith(\"PAEPO\") ", "其它" },
                    { 18, "0.2", 119, "p.DoItem==\"电询\"  && p.CaseNo.StartsWith(\"PAUS\")", "其它" },
                    { 17, "0.1", 120, "p.DoItem==\"分案评估\"", "其它" },
                    { 16, "0.2", 121, "p.DoItem==\"分案评估+分案\"", "其它" },
                    { 15, "0", 122, "p.DoItem==\"绘图\"", "其它" },
                    { 1, "0", 136, "p.CaseNo.StartsWith(\"J\")", "其它" },
                    { 2, "0", 135, "p.AgentFeedbackMemo==\"已算绩效\"", "其它" },
                    { 3, "p.WordCount/1000*0.18", 134, "p.DoItem==\"翻译\" && p.AgentFeedbackMemo==\"中-德\"", "其它" },
                    { 4, "p.WordCount/1000*0.16", 133, "p.DoItem==\"翻译\" && p.AgentFeedbackMemo==\"中-英\"", "其它" },
                    { 5, "p.WordCount/1000*0.1", 132, "p.DoItem==\"翻译\" && p.AgentFeedbackMemo==\"英-中\"", "其它" },
                    { 6, "0.2", 131, "(p.DoItem==\"提交检索主题申明\" || p.DoItem==\"提交检索主题声明\") && p.CaseNo.StartsWith(\"PAEPO\")", "其它" },
                    { 32, "0.2", 105, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAAU\")", "其它" },
                    { 7, "0", 130, "p.DoItem==\"请求优先审查\"", "其它" },
                    { 9, "0", 128, "p.DoItem==\"专利挖掘与布局\"", "其它" },
                    { 10, "0", 127, "p.DoItem==\"知识点总结\"", "其它" },
                    { 11, "0", 126, "p.DoItem==\"询问放弃或复审\"", "其它" },
                    { 12, "0", 125, "p.DoItem==\"申请时提交IDS\"", "其它" },
                    { 13, "0.1", 124, "p.DoItem==\"提交ids\" || p.DoItem==\"提交IDS\" ", "其它" },
                    { 14, "0", 123, "p.DoItem==\"技术确认\"", "其它" },
                    { 8, "0.2", 129, "p.ApplicationType==\"外观设计\" && p.DoItem==\"新申请\"", "其它" },
                    { 33, "0.2", 104, "p.AgentFeedbackMemo==\"检索结案\"", "其它" },
                    { 24, "0.2", 113, "p.DoItem.Contains(\"补正\")  && p.CaseNo.StartsWith(\"PAUS\")", "其它" },
                    { 35, "0.2", 102, "p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"形式\" && p.AgentFeedbackMemo==\"外-内\"", "其它" },
                    { 66, "0.5", 71, "p.DoItem==\"请求复审\" && p.ApplicationType==\"发明\"", "OA" },
                    { 65, "0.2", 72, "p.DoItem==\"意见陈述\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"复审\"", "OA" },
                    { 64, "0.3", 73, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"非实质\" && p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"一通\"", "OA" },
                    { 63, "0.5", 74, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PACN\")  && p.CaseStage==\"一通\"", "OA" },
                    { 62, "0.2", 75, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"一通\"", "OA" },
                    { 34, "0", 103, "p.DoItem==\"内部检索\"", "其它" },
                    { 60, "0.5", 77, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"实质\" && p.CaseNo.StartsWith(\"PCTCN\")  && p.CaseStage==\"一通\"", "OA" },
                    { 59, "0.2", 78, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"形式\" && p.CaseNo.StartsWith(\"PCTCN\") && p.CaseStage==\"一通\"", "OA" },
                    { 58, "0.2", 79, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PACN\") && p.CaseStage==\"二通\"", "OA" },
                    { 57, "0.2", 80, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.CaseNo.StartsWith(\"PCTCN\") && p.CaseStage==\"二通\"", "OA" },
                    { 56, "0", 81, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PACN\") &&  (p.CaseStage==\"三通\" || p.CaseStage==\"四通\" || p.CaseStage==\"五通\")", "OA" },
                    { 55, "0", 82, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.CaseNo.StartsWith(\"PCTCN\") &&  (p.CaseStage==\"三通\" || p.CaseStage==\"四通\" || p.CaseStage==\"五通\")", "OA" },
                    { 54, "0.3", 83, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.DoItemCoefficient==\"非实质\"  && p.AgentFeedbackMemo==\"外所/他人首次转入OA\"", "OA" },
                    { 53, "0.5", 84, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"外所/他人首次转入OA\"", "OA" },
                    { 52, "0.2", 85, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" && p.DoItemCoefficient==\"形式\" && p.AgentFeedbackMemo==\"外所/他人首次转入OA\"", "OA" }
                });

            migrationBuilder.InsertData(
                table: "BasePointRule",
                columns: new[] { "Id", "PointExpress", "Priority", "Rule", "Type" },
                values: new object[,]
                {
                    { 61, "0.3", 76, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"发明\" &&  p.DoItemCoefficient==\"非实质\" && p.CaseNo.StartsWith(\"PCTCN\") && p.CaseStage==\"一通\"", "OA" },
                    { 50, "0.14", 87, "p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"实质\" && p.CaseStage==\"二通\" && p.AgentFeedbackMemo==\"请款\"", "OA" },
                    { 36, "0.3", 101, "p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"形式\" && p.AgentFeedbackMemo==\"内-外\"", "其它" },
                    { 37, "0.5", 100, "p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"外-内\"", "其它" },
                    { 38, "0.7", 99, "p.DoItem==\"翻译校核\" && p.DoItemCoefficient==\"实质\" && p.AgentFeedbackMemo==\"内-外\"", "其它" },
                    { 39, "0.2", 98, "p.DoItem==\"发明一次OA授权\" && p.ApplicationType==\"发明\"", "其它" },
                    { 40, "0", 97, "p.DoItem==\"处理审查意见\" &&  p.AgentFeedbackMemo==\"客户不进行答辩\"", "OA" },
                    { 41, "0", 96, "p.DoItem==\"处理审查意见\" &&  p.AgentFeedbackMemo==\"电询/补正\"", "OA" },
                    { 42, "0", 95, "p.DoItem==\"处理审查意见\" && p.ApplicationType==\"实用新型\"  && p.AgentFeedbackMemo==\"不请款\"", "OA" },
                    { 44, "0", 93, "p.DoItem==\"请求复审\" && p.ApplicationType==\"实用新型\"  && p.AgentFeedbackMemo==\"不请款\"", "OA" },
                    { 45, "0.14", 92, "p.DoItem==\"意见陈述\" && p.ApplicationType==\"实用新型\" && p.AgentFeedbackMemo==\"请款\"", "OA" },
                    { 46, "0.35", 91, "p.DoItem==\"请求复审\" && p.ApplicationType==\"实用新型\"  && p.AgentFeedbackMemo==\"请款\"", "OA" },
                    { 47, "0.21", 90, "p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"非实质\" && p.CaseStage==\"一通\" && p.AgentFeedbackMemo==\"请款\"", "OA" },
                    { 48, "0.35", 89, "p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"实质\" && p.CaseStage==\"一通\" && p.AgentFeedbackMemo==\"请款\"", "OA" },
                    { 49, "0.14", 88, "p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"形式\" && p.CaseStage==\"一通\" && p.AgentFeedbackMemo==\"请款\"", "OA" },
                    { 43, "0", 94, "p.DoItem==\"意见陈述\" && p.ApplicationType==\"实用新型\" && p.AgentFeedbackMemo==\"不请款\"", "OA" },
                    { 51, "0", 86, "p.ApplicationType==\"实用新型\"  && p.DoItemCoefficient==\"实质\" && (p.CaseStage==\"三通\" || p.CaseStage==\"四通\" || p.CaseStage==\"五通\" || p.CaseStage==\"六通\" || p.CaseStage==\"七通\" || p.CaseStage==\"八通\") ", "OA" }
                });

            migrationBuilder.InsertData(
                table: "CaseCeofficient",
                columns: new[] { "Ceoffcient", "Value" },
                values: new object[,]
                {
                    { "C", 0.69999999999999996 },
                    { "D", 0.40000000000000002 },
                    { "B", 1.0 },
                    { "S", 2.5 },
                    { "A", 1.5 }
                });

            migrationBuilder.InsertData(
                table: "StaffGrade",
                columns: new[] { "Id", "Coefficient", "Grade" },
                values: new object[,]
                {
                    { 14, 1.1000000000000001, "A级" },
                    { 13, 0.5, "D1级" },
                    { 12, 0.59999999999999998, "D2级" },
                    { 11, 0.59999999999999998, "D3级" },
                    { 10, 0.69999999999999996, "C1级" },
                    { 9, 0.69999999999999996, "C2级" },
                    { 8, 0.90000000000000002, "C3级" },
                    { 7, 0.90000000000000002, "B1级" },
                    { 5, 1.0, "B3级" },
                    { 4, 1.1000000000000001, "A1级" },
                    { 3, 1.1000000000000001, "A2级" },
                    { 2, 1.1000000000000001, "A3级" },
                    { 1, 1.2, "S级" },
                    { 15, 1.0, "C级" },
                    { 6, 1.0, "B2级" },
                    { 16, 0.90000000000000002, "D级" }
                });

            migrationBuilder.InsertData(
                table: "InputField",
                columns: new[] { "Id", "AppealState", "AppealTypeId", "CanMuliSelect", "FieldName", "FieldType", "MapObjectField", "MapObjectFieldLabel", "MapSaveCondition", "MaxSize" },
                values: new object[,]
                {
                    { 1, 0, 1, false, "分配比率", "System.Double", "ItemStaffs.PerformancePoint", "ItemStaffs.DoPerson.Name", null, null },
                    { 24, 1, 6, false, "翻译字数", "System.Int32", "WordCount", null, null, null },
                    { 23, 1, 6, false, "审核意见", "System.Int32", null, null, null, null },
                    { 20, 0, 6, false, "翻译字数", "System.Int32", "WordCount", null, null, null },
                    { 19, 0, 6, false, "翻译类型", "System.String", "AgentFeedbackMemo", null, null, null },
                    { 21, 1, 5, false, "审核意见", "System.String", null, null, null, null },
                    { 18, 0, 5, false, "超期说明", "System.String", "OverDueMemo", null, null, null },
                    { 17, 1, 4, false, "审核意见", "System.String", null, null, null, null },
                    { 16, 1, 4, false, "备注", "System.String", null, null, null, null },
                    { 15, 0, 4, false, "处理事项", "System.String", null, null, null, null },
                    { 22, 1, 5, false, "备注", "System.String", null, null, null, null },
                    { 13, 1, 3, false, "审核意见", "System.String", null, null, null, null },
                    { 12, 1, 3, false, "备注", "System.String", null, null, null, null },
                    { 11, 0, 3, false, "处理事项系数", "System.String", "DoItemCoefficient", null, null, null },
                    { 10, 1, 2, false, "审核意见", "System.String", null, null, null, null },
                    { 9, 1, 2, false, "备注", "System.String", null, null, null, null },
                    { 6, 0, 2, false, "案件系数", "System.String", "CaseCoefficient", null, null, null },
                    { 5, 1, 1, false, "审核意见", "System.String", null, null, null, null },
                    { 4, 1, 1, false, "备注", "System.String", null, null, null, null },
                    { 3, 0, 1, false, "原因", "System.String", null, null, null, null },
                    { 14, 0, 4, false, "我方文号", "System.String", null, null, null, null }
                });

            migrationBuilder.InsertData(
                table: "VerifyCoefficient",
                columns: new[] { "CheckerId", "DoPersonId", "Coefficient" },
                values: new object[,]
                {
                    { 2, 11, 0.40000000000000002 },
                    { 1, 11, 0.5 },
                    { 6, 10, 0.29999999999999999 },
                    { 5, 10, 0.29999999999999999 },
                    { 4, 10, 0.29999999999999999 },
                    { 5, 9, 0.29999999999999999 },
                    { 2, 10, 0.29999999999999999 },
                    { 1, 10, 0.40000000000000002 },
                    { 6, 9, 0.29999999999999999 },
                    { 3, 11, 0.40000000000000002 },
                    { 3, 10, 0.29999999999999999 },
                    { 4, 11, 0.40000000000000002 },
                    { 2, 13, 0.5 },
                    { 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 }
                });

            migrationBuilder.InsertData(
                table: "VerifyCoefficient",
                columns: new[] { "CheckerId", "DoPersonId", "Coefficient" },
                values: new object[,]
                {
                    { 4, 9, 0.29999999999999999 },
                    { 3, 13, 0.5 },
                    { 4, 13, 0.5 },
                    { 5, 11, 0.40000000000000002 },
                    { 3, 9, 0.29999999999999999 },
                    { 5, 7, 0.20000000000000001 },
                    { 1, 9, 0.40000000000000002 },
                    { 1, 5, 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 },
                    { 2, 9, 0.29999999999999999 },
                    { 6, 6, 0.20000000000000001 },
                    { 2, 7, 0.20000000000000001 },
                    { 3, 7, 0.20000000000000001 },
                    { 4, 7, 0.20000000000000001 },
                    { 5, 13, 0.5 },
                    { 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, 7, 0.29999999999999999 },
                    { 6, 13, 0.5 }
                });

            migrationBuilder.InsertData(
                table: "SelectValue",
                columns: new[] { "Id", "InputFieldId", "Value" },
                values: new object[,]
                {
                    { 1, 5, "同意" },
                    { 16, 19, "中-德" },
                    { 20, 22, "拒绝" },
                    { 19, 22, "同意" },
                    { 8, 17, "拒绝" },
                    { 7, 17, "同意" },
                    { 6, 13, "拒绝" },
                    { 5, 13, "同意" },
                    { 15, 11, "形式" },
                    { 14, 11, "实质" },
                    { 4, 10, "拒绝" },
                    { 3, 10, "同意" },
                    { 13, 6, "D" },
                    { 12, 6, "C" },
                    { 11, 6, "B" },
                    { 10, 6, "A" },
                    { 9, 6, "S" },
                    { 2, 5, "拒绝" },
                    { 17, 19, "中-英" },
                    { 18, 19, "英-中" }
                });

            migrationBuilder.CreateIndex(
                name: "IX_Action_StepId",
                table: "Action",
                column: "StepId");

            migrationBuilder.CreateIndex(
                name: "IX_AppealRecord_CreaterId",
                table: "AppealRecord",
                column: "CreaterId");

            migrationBuilder.CreateIndex(
                name: "IX_AppealRecord_ItemId",
                table: "AppealRecord",
                column: "ItemId");

            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_UploadUserId",
                table: "AttachFile",
                column: "UploadUserId");

            migrationBuilder.CreateIndex(
                name: "IX_Customer_ResponseManId",
                table: "Customer",
                column: "ResponseManId");

            migrationBuilder.CreateIndex(
                name: "IX_DepartmentPosition_departmentId",
                table: "DepartmentPosition",
                column: "departmentId");

            migrationBuilder.CreateIndex(
                name: "IX_DepartmentPosition_PositionId",
                table: "DepartmentPosition",
                column: "PositionId");

            migrationBuilder.CreateIndex(
                name: "IX_DepartmentPosition_StaffId",
                table: "DepartmentPosition",
                column: "StaffId");

            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_InputValue_valueSettingId",
                table: "InputValue",
                column: "valueSettingId");

            migrationBuilder.CreateIndex(
                name: "IX_InputValue_workflowInstanceId",
                table: "InputValue",
                column: "workflowInstanceId");

            migrationBuilder.CreateIndex(
                name: "IX_InputValueSetting_actionId",
                table: "InputValueSetting",
                column: "actionId");

            migrationBuilder.CreateIndex(
                name: "IX_InputValueSetting_ParentSettingId",
                table: "InputValueSetting",
                column: "ParentSettingId");

            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_SelectValue_InputFieldId",
                table: "SelectValue",
                column: "InputFieldId");

            migrationBuilder.CreateIndex(
                name: "IX_Staff_StaffGradeId",
                table: "Staff",
                column: "StaffGradeId");

            migrationBuilder.CreateIndex(
                name: "IX_Step_workflowId",
                table: "Step",
                column: "workflowId");

            migrationBuilder.CreateIndex(
                name: "IX_StepInstance_stepId",
                table: "StepInstance",
                column: "stepId");

            migrationBuilder.CreateIndex(
                name: "IX_StepInstance_workflowInstanceId",
                table: "StepInstance",
                column: "workflowInstanceId");

            migrationBuilder.CreateIndex(
                name: "IX_TrasferCondition_nextStepId",
                table: "TrasferCondition",
                column: "nextStepId");

            migrationBuilder.CreateIndex(
                name: "IX_TrasferCondition_StepId",
                table: "TrasferCondition",
                column: "StepId");

            migrationBuilder.CreateIndex(
                name: "IX_VerifyCoefficient_DoPersonId",
                table: "VerifyCoefficient",
                column: "DoPersonId");

            migrationBuilder.CreateIndex(
                name: "IX_Workflow_InitActionId",
                table: "Workflow",
                column: "InitActionId");

            migrationBuilder.CreateIndex(
                name: "IX_WorkflowInstance_workflowId",
                table: "WorkflowInstance",
                column: "workflowId");

            migrationBuilder.AddForeignKey(
                name: "FK_InputValueSetting_Action_actionId",
                table: "InputValueSetting",
                column: "actionId",
                principalTable: "Action",
                principalColumn: "Id");

            migrationBuilder.AddForeignKey(
                name: "FK_Workflow_Action_InitActionId",
                table: "Workflow",
                column: "InitActionId",
                principalTable: "Action",
                principalColumn: "Id");
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropForeignKey(
                name: "FK_Action_Step_StepId",
                table: "Action");

            migrationBuilder.DropTable(
                name: "AttachFile");

            migrationBuilder.DropTable(
                name: "BasePointRule");

            migrationBuilder.DropTable(
                name: "CaseCeofficient");

            migrationBuilder.DropTable(
                name: "DepartmentPosition");

            migrationBuilder.DropTable(
                name: "InputFieldValue");

            migrationBuilder.DropTable(
                name: "InputValue");

            migrationBuilder.DropTable(
                name: "ItemStaff");

            migrationBuilder.DropTable(
                name: "MessagePerformanceItems");

            migrationBuilder.DropTable(
                name: "MessageReadRecord");

            migrationBuilder.DropTable(
                name: "SelectValue");

            migrationBuilder.DropTable(
                name: "StepInstance");

            migrationBuilder.DropTable(
                name: "TrasferCondition");

            migrationBuilder.DropTable(
                name: "VerifyCoefficient");

            migrationBuilder.DropTable(
                name: "Department");

            migrationBuilder.DropTable(
                name: "Position");

            migrationBuilder.DropTable(
                name: "AppealRecord");

            migrationBuilder.DropTable(
                name: "InputValueSetting");

            migrationBuilder.DropTable(
                name: "Message");

            migrationBuilder.DropTable(
                name: "InputField");

            migrationBuilder.DropTable(
                name: "WorkflowInstance");

            migrationBuilder.DropTable(
                name: "PerformanceItem");

            migrationBuilder.DropTable(
                name: "AppealType");

            migrationBuilder.DropTable(
                name: "CalMonth");

            migrationBuilder.DropTable(
                name: "Customer");

            migrationBuilder.DropTable(
                name: "Staff");

            migrationBuilder.DropTable(
                name: "StaffGrade");

            migrationBuilder.DropTable(
                name: "Step");

            migrationBuilder.DropTable(
                name: "Workflow");

            migrationBuilder.DropTable(
                name: "Action");
        }
    }
}
