浏览代码

完善员工信息
在导入数据是添加已算绩效判断并将已算绩效记录点数设为0

luocaiyang 4 年之前
父节点
当前提交
ede5e80003

+ 39 - 35
wispro.sp.api/Controllers/PerformanceItemController.cs

@@ -31,7 +31,19 @@ namespace wispro.sp.api.Controllers
             {
                 try
                 {
-                    if(item.CalMonth != null)
+                    var results = Context.PerformanceItems.Where<PerformanceItem>(x =>
+                       x.CaseNo == item.CaseNo && x.DoItem == item.DoItem && x.DoItem != "提出报告" && x.CaseStage == item.CaseStage);
+                   
+                    var items = results.Include(pi => pi.CalMonth).FirstOrDefault<PerformanceItem>();
+
+                    if (items != null)
+                    {
+                        item.AgentFeedbackMemo = "已算绩效";
+                        item.DoItemMemo = $"{items.DoItemMemo}\r\n{items.CalMonth.Year}-{items.CalMonth.Month}已计算!";
+                        item.BasePoint = 0;
+                    }
+
+                    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)
@@ -69,50 +81,41 @@ namespace wispro.sp.api.Controllers
                         item.Customer = null;
                     }
 
-                    List<PerformanceItem> items = Context.PerformanceItems.Where<PerformanceItem>(x =>
-                        x.CaseNo == item.CaseNo && x.DoItem == item.DoItem && x.DoItem != "提出报告").ToList();
+                    
+                    var ItemStaffs = item.ItemStaffs;
+                    item.ItemStaffs = null;
 
-                    if (items.Count > 0)
-                    {
-                        ret.Success = false;
-                        ret.ErrorMessage = $"案件【{item.CaseNo}】处理事项【{item.DoItem }】已存在!";
-                    }
-                    else
-                    {
-                        var ItemStaffs = item.ItemStaffs;
-                        item.ItemStaffs = null;
+                    Context.PerformanceItems.Add(item);
+                    Context.SaveChanges();
 
-                        Context.PerformanceItems.Add(item);
-                        Context.SaveChanges();
+                    foreach (ItemStaff itemStaff in ItemStaffs)
+                    {
+                        itemStaff.ItemId = item.Id;
+                        itemStaff.Item = null;
 
-                        foreach (ItemStaff itemStaff in ItemStaffs)
+                        if (itemStaff.DoPersonId == 0 && itemStaff.DoPerson != null)
                         {
-                            itemStaff.ItemId = item.Id;
-                            itemStaff.Item = null;
+                            var temStaff = Context.Staffs.FirstOrDefault<Staff>(s => s.Name == itemStaff.DoPerson.Name);
 
-                            if (itemStaff.DoPersonId == 0 && itemStaff.DoPerson != null)
+                            if (temStaff != null)
+                            {
+                                itemStaff.DoPersonId = temStaff.Id;
+                                itemStaff.DoPerson = null;
+                            }
+                            else
                             {
-                                var temStaff = Context.Staffs.FirstOrDefault<Staff>(s => s.Name == itemStaff.DoPerson.Name);
-
-                                if (temStaff != null)
-                                {
-                                    itemStaff.DoPersonId = temStaff.Id;
-                                    itemStaff.DoPerson = null;
-                                }
-                                else
-                                {
-                                    Context.Staffs.Add(itemStaff.DoPerson);
-                                    Context.SaveChanges();
-                                    itemStaff.DoPersonId = itemStaff.DoPerson.Id;
-                                    itemStaff.DoPerson = null;
-                                }
+                                Context.Staffs.Add(itemStaff.DoPerson);
+                                Context.SaveChanges();
+                                itemStaff.DoPersonId = itemStaff.DoPerson.Id;
+                                itemStaff.DoPerson = null;
                             }
                         }
+                    }
 
-                        Context.ItemStaffs.AddRange(ItemStaffs);
-                        Context.SaveChanges();
+                    Context.ItemStaffs.AddRange(ItemStaffs);
+                    Context.SaveChanges();
                         
-                    }
+                    
 
                     Context.Database.CommitTransaction();
                 }
@@ -142,6 +145,7 @@ namespace wispro.sp.api.Controllers
                 .Include(pi=>pi.ItemStaffs).ThenInclude(iStaff=>iStaff.DoPerson)
                 .Include(pi=>pi.Reviewer)
                 .Include(pi=>pi.Customer)
+                .Include(pi=>pi.CalMonth)
                 .OrderByDescending(o=>o.Id)
                 .Skip<PerformanceItem>((pageIndex - 1) * pageSize).Take(pageSize).ToList<PerformanceItem>();
 

+ 28 - 28
wispro.sp.api/Controllers/StaffController.cs

@@ -21,29 +21,6 @@ namespace wispro.sp.api.Controllers
         public StaffController(spDbContext context)
         {
             Context = context;
-            
-            //DataTable dt = wispro.sp.utility.NPOIExcel.ExcelToDataTable(@"D:\users\luowen\Documents\工作文档\深圳威世博人力绩效\210730-威世博人员清单v1r01-xm.xls", true);
-
-            //CacheList = new List<Staff>();
-
-            //if (dt != null)
-            //{
-            //    foreach (DataRow row in dt.Rows)
-            //    {
-            //        CacheList.Add(new Staff()
-            //        {
-            //            Name = row["姓名"].ToString(),
-            //            Status = row["岗位状态"].ToString(),
-            //            IsCalPerformsnce = (row["是否核算绩效"].ToString() == "是"),
-            //            StaffGrade = new StaffGrade() { Grade = row["工程师等级"].ToString(), Coefficient = double.Parse(row["等级系数"].ToString()) },
-            //            Department = row["部门"].ToString(),
-            //            WorkPlace = row["工作地"].ToString(),
-            //            EntyDate = DateTime.Parse(row["入职时间"].ToString()),
-            //            Memo = row["备注"].ToString()
-
-            //        });
-            //    }
-            //}
         }
         
 
@@ -82,10 +59,28 @@ namespace wispro.sp.api.Controllers
                 if (staff.Id == 0)
                 {
                     
-                    List<Staff> grades = Context.Staffs.Where<Staff>(x => x.Name == staff.Name).ToList();
+                    Staff temStaff = Context.Staffs.Where<Staff>(x => x.Name == staff.Name).FirstOrDefault();
 
-                    if (grades.Count > 0)
+                    if (temStaff != null)
                     {
+                        temStaff.Account = staff.Account;
+                        temStaff.Department = staff.Department;
+                        temStaff.EntyDate = staff.EntyDate;
+                        temStaff.IsCalPerformsnce = staff.IsCalPerformsnce;
+                        temStaff.IsOnJob = staff.IsOnJob;
+                        temStaff.Mail = staff.Mail;
+                        temStaff.Memo = staff.Memo;
+                        temStaff.Mobile = staff.Mobile;
+                        temStaff.Name = staff.Name;
+                        temStaff.Password = staff.Password;
+                        temStaff.Sex = staff.Sex;
+                        temStaff.StaffGradeId = staff.StaffGradeId;
+                        temStaff.Status = staff.Status;
+                        temStaff.Tel = staff.Tel;
+                        temStaff.WorkPlace = staff.WorkPlace;
+
+                        Context.SaveChanges();
+
                         ret.Success = false;
                         ret.ErrorMessage = $"用户【{staff.Name}】已存在!";
                     }
@@ -100,15 +95,20 @@ namespace wispro.sp.api.Controllers
 
                     if (editObject != null)
                     {
-                        editObject.Name = staff.Name;
-                        editObject.StaffGradeId = staff.StaffGradeId;
                         editObject.Account = staff.Account;
                         editObject.Department = staff.Department;
                         editObject.EntyDate = staff.EntyDate;
                         editObject.IsCalPerformsnce = staff.IsCalPerformsnce;
+                        editObject.IsOnJob = staff.IsOnJob;
+                        editObject.Mail = staff.Mail;
                         editObject.Memo = staff.Memo;
-                        editObject.Password = editObject.Password;
+                        editObject.Mobile = staff.Mobile;
+                        editObject.Name = staff.Name;
+                        editObject.Password = staff.Password;
+                        editObject.Sex = staff.Sex;
+                        editObject.StaffGradeId = staff.StaffGradeId;
                         editObject.Status = staff.Status;
+                        editObject.Tel = staff.Tel;
                         editObject.WorkPlace = staff.WorkPlace;
                     }
                     else

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

@@ -395,7 +395,8 @@ namespace wispro.sp.api.Job
             foreach (string name in temHandlers)
             {
                 ItemStaff itemStaff = new ItemStaff();
-                int? iTem = GetStaff(name);
+                string temName = name.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)[0];
+                int? iTem = GetStaff(temName);
                 if ((iTem != null))
                 {
                     //itemStaff.Item = item;
@@ -406,8 +407,8 @@ namespace wispro.sp.api.Job
                 {
                     itemStaff.DoPerson = new Staff()
                     {
-                        Name = name,
-                        Account = name,
+                        Name = temName,
+                        Account = temName,
                         Password = "12345678",
                         IsCalPerformsnce = false,
                         Status = "已离职",
@@ -424,13 +425,21 @@ namespace wispro.sp.api.Job
 
             if (row.Table.Columns.Contains("核稿人"))
             {
-                item.ReviewerId = GetStaff(row["核稿人"].ToString().Trim());
+                if (!string.IsNullOrEmpty(row["核稿人"].ToString().Trim()))
+                {
+                    string temName = row["核稿人"].ToString().Trim().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)[0];
+                    item.ReviewerId = GetStaff(temName);
+                }
             }
             else
             {
                 if (row.Table.Columns.Contains("案件核稿人"))
                 {
-                    item.ReviewerId = GetStaff(row["案件核稿人"].ToString().Trim());
+                    if (!string.IsNullOrEmpty(row["案件核稿人"].ToString().Trim()))
+                    {
+                        string temName = row["案件核稿人"].ToString().Trim().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)[0];
+                        item.ReviewerId = GetStaff(temName);
+                    }
                 }
             }
 

+ 890 - 0
wispro.sp.api/Migrations/20211026062747_20211026.Designer.cs

@@ -0,0 +1,890 @@
+// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using wispro.sp.api;
+
+namespace wispro.sp.api.Migrations
+{
+    [DbContext(typeof(spDbContext))]
+    [Migration("20211026062747_20211026")]
+    partial class _20211026
+    {
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("Relational:MaxIdentifierLength", 128)
+                .HasAnnotation("ProductVersion", "5.0.9")
+                .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+            modelBuilder.Entity("wispro.sp.entity.AttachFile", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)");
+
+                    b.Property<string>("SavePath")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)");
+
+                    b.Property<int>("UploadUserId")
+                        .HasColumnType("int");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UploadUserId");
+
+                    b.ToTable("AttachFile");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.BasePointRule", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int")
+                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+                    b.Property<double>("Point")
+                        .HasColumnType("float");
+
+                    b.Property<int>("Priority")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Rule")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Type")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("BasePointRules");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.CalMonth", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int")
+                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+                    b.Property<int>("Month")
+                        .HasColumnType("int")
+                        .HasColumnName("month");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasColumnName("status");
+
+                    b.Property<int>("Year")
+                        .HasColumnType("int")
+                        .HasColumnName("year");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("CalMonth");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.Customer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int")
+                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+                    b.Property<string>("Address")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)");
+
+                    b.Property<string>("ContactMan")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)");
+
+                    b.Property<string>("Phone")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<int?>("ResponseManId")
+                        .HasColumnType("int");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ResponseManId");
+
+                    b.ToTable("Customer");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.ItemStaff", b =>
+                {
+                    b.Property<int>("ItemId")
+                        .HasColumnType("int");
+
+                    b.Property<int>("DoPersonId")
+                        .HasColumnType("int");
+
+                    b.Property<double>("PerformancePoint")
+                        .HasColumnType("float");
+
+                    b.HasKey("ItemId", "DoPersonId");
+
+                    b.HasIndex("DoPersonId");
+
+                    b.ToTable("ItemStaff");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.Message", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("FromId")
+                        .HasColumnType("int");
+
+                    b.Property<string>("MessageInfo")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("FromId");
+
+                    b.ToTable("Message");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.MessagePerformanceItem", b =>
+                {
+                    b.Property<int>("ItemId")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("MessageId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("ItemId", "MessageId");
+
+                    b.HasIndex("MessageId");
+
+                    b.ToTable("MessagePerformanceItems");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.MessageReadRecord", b =>
+                {
+                    b.Property<Guid>("MessageId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("StaffId")
+                        .HasColumnType("int");
+
+                    b.Property<Guid?>("MessageId1")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("isReaded")
+                        .HasColumnType("bit");
+
+                    b.HasKey("MessageId", "StaffId");
+
+                    b.HasIndex("MessageId1");
+
+                    b.HasIndex("StaffId");
+
+                    b.ToTable("MessageReadRecord");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.PerformanceItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int")
+                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+                    b.Property<string>("AgentFeedbackMemo")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ApplicationName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)");
+
+                    b.Property<string>("ApplicationType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<decimal?>("BasePoint")
+                        .HasColumnType("numeric(18,2)");
+
+                    b.Property<string>("BusinessType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<int>("CalMonthId")
+                        .HasColumnType("int");
+
+                    b.Property<string>("CaseCoefficient")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)");
+
+                    b.Property<string>("CaseMemo")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("CaseName")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)");
+
+                    b.Property<string>("CaseNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<string>("CaseStage")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<string>("CaseState")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<string>("CaseType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<int?>("CustomerId")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("CustomerLimitDate")
+                        .HasColumnType("date");
+
+                    b.Property<string>("DoItem")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<string>("DoItemCoefficient")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<string>("DoItemMemo")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)");
+
+                    b.Property<string>("DoItemState")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<DateTime?>("EntrustingDate")
+                        .HasColumnType("date");
+
+                    b.Property<DateTime?>("FinalizationDate")
+                        .HasColumnType("date");
+
+                    b.Property<DateTime?>("FinishedDate")
+                        .HasColumnType("date");
+
+                    b.Property<DateTime?>("FirstDraftDate")
+                        .HasColumnType("date");
+
+                    b.Property<DateTime?>("InternalDate")
+                        .HasColumnType("date");
+
+                    b.Property<string>("OverDueMemo")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)");
+
+                    b.Property<int?>("PreOastaffId")
+                        .HasColumnType("int")
+                        .HasColumnName("PreOAStaffId");
+
+                    b.Property<DateTime?>("ReturnDate")
+                        .HasColumnType("date");
+
+                    b.Property<int?>("ReviewerId")
+                        .HasColumnType("int");
+
+                    b.Property<int?>("Status")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Type")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int?>("WordCount")
+                        .HasColumnType("int");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CalMonthId");
+
+                    b.HasIndex("CustomerId");
+
+                    b.HasIndex("PreOastaffId");
+
+                    b.HasIndex("ReviewerId");
+
+                    b.ToTable("PerformanceItem");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.Staff", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int")
+                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+                    b.Property<string>("Account")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<string>("Department")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<DateTime?>("EntyDate")
+                        .HasColumnType("date");
+
+                    b.Property<bool>("IsCalPerformsnce")
+                        .HasColumnType("bit")
+                        .HasColumnName("isCalPerformsnce");
+
+                    b.Property<bool>("IsOnJob")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Mail")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Memo")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Mobile")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.Property<string>("Password")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Sex")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("StaffGradeId")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Status")
+                        .IsRequired()
+                        .HasMaxLength(25)
+                        .HasColumnType("nvarchar(25)");
+
+                    b.Property<string>("Tel")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("WorkPlace")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("StaffGradeId");
+
+                    b.ToTable("Staff");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.StaffGrade", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int")
+                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+                    b.Property<double>("Coefficient")
+                        .HasColumnType("float");
+
+                    b.Property<string>("Grade")
+                        .IsRequired()
+                        .HasMaxLength(5)
+                        .HasColumnType("nchar(5)")
+                        .IsFixedLength(true);
+
+                    b.HasKey("Id");
+
+                    b.ToTable("StaffGrade");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Coefficient = 1.2,
+                            Grade = "S级"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Coefficient = 1.1000000000000001,
+                            Grade = "A3级"
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Coefficient = 1.1000000000000001,
+                            Grade = "A2级"
+                        },
+                        new
+                        {
+                            Id = 4,
+                            Coefficient = 1.1000000000000001,
+                            Grade = "A1级"
+                        },
+                        new
+                        {
+                            Id = 5,
+                            Coefficient = 1.0,
+                            Grade = "B3级"
+                        },
+                        new
+                        {
+                            Id = 6,
+                            Coefficient = 1.0,
+                            Grade = "B2级"
+                        },
+                        new
+                        {
+                            Id = 7,
+                            Coefficient = 0.90000000000000002,
+                            Grade = "B1级"
+                        },
+                        new
+                        {
+                            Id = 8,
+                            Coefficient = 0.90000000000000002,
+                            Grade = "C3级"
+                        },
+                        new
+                        {
+                            Id = 9,
+                            Coefficient = 0.69999999999999996,
+                            Grade = "C2级"
+                        },
+                        new
+                        {
+                            Id = 10,
+                            Coefficient = 0.69999999999999996,
+                            Grade = "C1级"
+                        },
+                        new
+                        {
+                            Id = 11,
+                            Coefficient = 0.59999999999999998,
+                            Grade = "D3级"
+                        },
+                        new
+                        {
+                            Id = 12,
+                            Coefficient = 0.59999999999999998,
+                            Grade = "D2级"
+                        },
+                        new
+                        {
+                            Id = 13,
+                            Coefficient = 0.5,
+                            Grade = "D1级"
+                        });
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.VerifyCoefficient", b =>
+                {
+                    b.Property<int>("CheckerId")
+                        .HasColumnType("int");
+
+                    b.Property<int>("DoPersonId")
+                        .HasColumnType("int");
+
+                    b.Property<double>("Coefficient")
+                        .HasColumnType("float");
+
+                    b.HasKey("CheckerId", "DoPersonId");
+
+                    b.HasIndex("DoPersonId");
+
+                    b.ToTable("VerifyCoefficient");
+
+                    b.HasData(
+                        new
+                        {
+                            CheckerId = 2,
+                            DoPersonId = 5,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 2,
+                            DoPersonId = 6,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 2,
+                            DoPersonId = 7,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 2,
+                            DoPersonId = 8,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 2,
+                            DoPersonId = 9,
+                            Coefficient = 0.29999999999999999
+                        },
+                        new
+                        {
+                            CheckerId = 2,
+                            DoPersonId = 10,
+                            Coefficient = 0.29999999999999999
+                        },
+                        new
+                        {
+                            CheckerId = 2,
+                            DoPersonId = 11,
+                            Coefficient = 0.40000000000000002
+                        },
+                        new
+                        {
+                            CheckerId = 2,
+                            DoPersonId = 12,
+                            Coefficient = 0.40000000000000002
+                        },
+                        new
+                        {
+                            CheckerId = 2,
+                            DoPersonId = 13,
+                            Coefficient = 0.5
+                        },
+                        new
+                        {
+                            CheckerId = 3,
+                            DoPersonId = 5,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 3,
+                            DoPersonId = 6,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 3,
+                            DoPersonId = 7,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 3,
+                            DoPersonId = 8,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 3,
+                            DoPersonId = 9,
+                            Coefficient = 0.29999999999999999
+                        },
+                        new
+                        {
+                            CheckerId = 3,
+                            DoPersonId = 10,
+                            Coefficient = 0.29999999999999999
+                        },
+                        new
+                        {
+                            CheckerId = 3,
+                            DoPersonId = 11,
+                            Coefficient = 0.40000000000000002
+                        },
+                        new
+                        {
+                            CheckerId = 3,
+                            DoPersonId = 12,
+                            Coefficient = 0.40000000000000002
+                        },
+                        new
+                        {
+                            CheckerId = 3,
+                            DoPersonId = 13,
+                            Coefficient = 0.5
+                        },
+                        new
+                        {
+                            CheckerId = 4,
+                            DoPersonId = 5,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 4,
+                            DoPersonId = 6,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 4,
+                            DoPersonId = 7,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 4,
+                            DoPersonId = 8,
+                            Coefficient = 0.20000000000000001
+                        },
+                        new
+                        {
+                            CheckerId = 4,
+                            DoPersonId = 9,
+                            Coefficient = 0.29999999999999999
+                        },
+                        new
+                        {
+                            CheckerId = 4,
+                            DoPersonId = 10,
+                            Coefficient = 0.29999999999999999
+                        },
+                        new
+                        {
+                            CheckerId = 4,
+                            DoPersonId = 11,
+                            Coefficient = 0.40000000000000002
+                        },
+                        new
+                        {
+                            CheckerId = 4,
+                            DoPersonId = 12,
+                            Coefficient = 0.40000000000000002
+                        },
+                        new
+                        {
+                            CheckerId = 4,
+                            DoPersonId = 13,
+                            Coefficient = 0.5
+                        });
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.AttachFile", b =>
+                {
+                    b.HasOne("wispro.sp.entity.Staff", "UploadUser")
+                        .WithMany()
+                        .HasForeignKey("UploadUserId")
+                        .HasConstraintName("FK_AttachFile_UpdateUser")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("UploadUser");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.Customer", b =>
+                {
+                    b.HasOne("wispro.sp.entity.Staff", "ResponseMan")
+                        .WithMany("Customers")
+                        .HasForeignKey("ResponseManId")
+                        .HasConstraintName("FK_Customer_Staff");
+
+                    b.Navigation("ResponseMan");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.ItemStaff", b =>
+                {
+                    b.HasOne("wispro.sp.entity.Staff", "DoPerson")
+                        .WithMany("ItemStaffs")
+                        .HasForeignKey("DoPersonId")
+                        .HasConstraintName("FK_ItemStaff_Staff")
+                        .IsRequired();
+
+                    b.HasOne("wispro.sp.entity.PerformanceItem", "Item")
+                        .WithMany("ItemStaffs")
+                        .HasForeignKey("ItemId")
+                        .HasConstraintName("FK_ItemStaff_PerformanceItem")
+                        .IsRequired();
+
+                    b.Navigation("DoPerson");
+
+                    b.Navigation("Item");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.Message", b =>
+                {
+                    b.HasOne("wispro.sp.entity.Staff", "From")
+                        .WithMany()
+                        .HasForeignKey("FromId")
+                        .HasConstraintName("FK_From_Staff")
+                        .IsRequired();
+
+                    b.Navigation("From");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.MessagePerformanceItem", b =>
+                {
+                    b.HasOne("wispro.sp.entity.PerformanceItem", "Item")
+                        .WithMany()
+                        .HasForeignKey("ItemId")
+                        .HasConstraintName("FK_MessagePerformanceItem_Item")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("wispro.sp.entity.Message", "Message")
+                        .WithMany("RelatedItem")
+                        .HasForeignKey("MessageId")
+                        .HasConstraintName("FK_MessagePerformanceItem_Message")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Item");
+
+                    b.Navigation("Message");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.MessageReadRecord", b =>
+                {
+                    b.HasOne("wispro.sp.entity.Message", "Message")
+                        .WithMany()
+                        .HasForeignKey("MessageId")
+                        .HasConstraintName("FK_MessageReadRecord_Message")
+                        .IsRequired();
+
+                    b.HasOne("wispro.sp.entity.Message", null)
+                        .WithMany("To")
+                        .HasForeignKey("MessageId1");
+
+                    b.HasOne("wispro.sp.entity.Staff", "Staff")
+                        .WithMany()
+                        .HasForeignKey("StaffId")
+                        .HasConstraintName("FK_MessageReadRecord_Staff")
+                        .IsRequired();
+
+                    b.Navigation("Message");
+
+                    b.Navigation("Staff");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.PerformanceItem", b =>
+                {
+                    b.HasOne("wispro.sp.entity.CalMonth", "CalMonth")
+                        .WithMany("PerformanceItems")
+                        .HasForeignKey("CalMonthId")
+                        .HasConstraintName("FK_PerformanceItem_CalMonth")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("wispro.sp.entity.Customer", "Customer")
+                        .WithMany("PerformanceItems")
+                        .HasForeignKey("CustomerId")
+                        .HasConstraintName("FK_PerformanceItem_Customer");
+
+                    b.HasOne("wispro.sp.entity.Staff", "PreOastaff")
+                        .WithMany()
+                        .HasForeignKey("PreOastaffId")
+                        .HasConstraintName("FK_PerformanceItem_Staff");
+
+                    b.HasOne("wispro.sp.entity.Staff", "Reviewer")
+                        .WithMany("ReviewerItems")
+                        .HasForeignKey("ReviewerId")
+                        .HasConstraintName("FK_PerformanceItem_Reviewer");
+
+                    b.Navigation("CalMonth");
+
+                    b.Navigation("Customer");
+
+                    b.Navigation("PreOastaff");
+
+                    b.Navigation("Reviewer");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.Staff", b =>
+                {
+                    b.HasOne("wispro.sp.entity.StaffGrade", "StaffGrade")
+                        .WithMany("Staff")
+                        .HasForeignKey("StaffGradeId")
+                        .HasConstraintName("FK_Staff_StaffGrade")
+                        .IsRequired();
+
+                    b.Navigation("StaffGrade");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.VerifyCoefficient", b =>
+                {
+                    b.HasOne("wispro.sp.entity.StaffGrade", "Checker")
+                        .WithMany("VerifyCoefficientCheckers")
+                        .HasForeignKey("CheckerId")
+                        .HasConstraintName("FK_VerifyCoefficient_StaffGrade")
+                        .IsRequired();
+
+                    b.HasOne("wispro.sp.entity.StaffGrade", "DoPerson")
+                        .WithMany("VerifyCoefficientDoPeople")
+                        .HasForeignKey("DoPersonId")
+                        .HasConstraintName("FK_VerifyCoefficient_StaffGrade1")
+                        .IsRequired();
+
+                    b.Navigation("Checker");
+
+                    b.Navigation("DoPerson");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.CalMonth", b =>
+                {
+                    b.Navigation("PerformanceItems");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.Customer", b =>
+                {
+                    b.Navigation("PerformanceItems");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.Message", b =>
+                {
+                    b.Navigation("RelatedItem");
+
+                    b.Navigation("To");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.PerformanceItem", b =>
+                {
+                    b.Navigation("ItemStaffs");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.Staff", b =>
+                {
+                    b.Navigation("Customers");
+
+                    b.Navigation("ItemStaffs");
+
+                    b.Navigation("ReviewerItems");
+                });
+
+            modelBuilder.Entity("wispro.sp.entity.StaffGrade", b =>
+                {
+                    b.Navigation("Staff");
+
+                    b.Navigation("VerifyCoefficientCheckers");
+
+                    b.Navigation("VerifyCoefficientDoPeople");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}

+ 54 - 0
wispro.sp.api/Migrations/20211026062747_20211026.cs

@@ -0,0 +1,54 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+namespace wispro.sp.api.Migrations
+{
+    public partial class _20211026 : Migration
+    {
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<bool>(
+                name: "IsOnJob",
+                table: "Staff",
+                type: "bit",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.AddColumn<string>(
+                name: "Mobile",
+                table: "Staff",
+                type: "nvarchar(max)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "Sex",
+                table: "Staff",
+                type: "nvarchar(max)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "Tel",
+                table: "Staff",
+                type: "nvarchar(max)",
+                nullable: true);
+        }
+
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "IsOnJob",
+                table: "Staff");
+
+            migrationBuilder.DropColumn(
+                name: "Mobile",
+                table: "Staff");
+
+            migrationBuilder.DropColumn(
+                name: "Sex",
+                table: "Staff");
+
+            migrationBuilder.DropColumn(
+                name: "Tel",
+                table: "Staff");
+        }
+    }
+}

+ 12 - 0
wispro.sp.api/Migrations/spDbContextModelSnapshot.cs

@@ -355,12 +355,18 @@ namespace wispro.sp.api.Migrations
                         .HasColumnType("bit")
                         .HasColumnName("isCalPerformsnce");
 
+                    b.Property<bool>("IsOnJob")
+                        .HasColumnType("bit");
+
                     b.Property<string>("Mail")
                         .HasColumnType("nvarchar(max)");
 
                     b.Property<string>("Memo")
                         .HasColumnType("nvarchar(max)");
 
+                    b.Property<string>("Mobile")
+                        .HasColumnType("nvarchar(max)");
+
                     b.Property<string>("Name")
                         .IsRequired()
                         .HasMaxLength(50)
@@ -370,6 +376,9 @@ namespace wispro.sp.api.Migrations
                         .IsRequired()
                         .HasColumnType("nvarchar(max)");
 
+                    b.Property<string>("Sex")
+                        .HasColumnType("nvarchar(max)");
+
                     b.Property<int>("StaffGradeId")
                         .HasColumnType("int");
 
@@ -378,6 +387,9 @@ namespace wispro.sp.api.Migrations
                         .HasMaxLength(25)
                         .HasColumnType("nvarchar(25)");
 
+                    b.Property<string>("Tel")
+                        .HasColumnType("nvarchar(max)");
+
                     b.Property<string>("WorkPlace")
                         .HasMaxLength(50)
                         .HasColumnType("nvarchar(50)");

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

@@ -22,11 +22,11 @@
   },
   "IPEasySetting": {
     "DownloadFileSavePath": "c:\\temp",
-    "isHeadless": "false",
+    "isHeadless": "true",
     "Account": "caiyangl",
     "Password": "j)wx*lier*@3",
     "ChormeDriverPath": "D:\\source\\repos\\ConsoleApp2\\ConsoleApp2\\bin\\Debug",
-    "ScheduleSetting": "30 02 13 * * ? *"
+    "ScheduleSetting": "30 20 20 * * ? *"
   },
 
   "MailSetting": {

+ 65 - 28
wispro.sp.api/spDbContext.cs

@@ -322,39 +322,76 @@ namespace wispro.sp.api
                     new StaffGrade() {Id= 10, Grade = "C1级", Coefficient = 0.7},
                     new StaffGrade() {Id=11, Grade = "D3级", Coefficient = 0.6},
                     new StaffGrade() {Id=12, Grade = "D2级", Coefficient = 0.6},
-                    new StaffGrade() {Id=13, Grade = "D1级", Coefficient = 0.5}
+                    new StaffGrade() {Id=13, Grade = "D1级", Coefficient = 0.5},
+                    new StaffGrade() {Id=14, Grade = "A级", Coefficient = 1.1},
+                    new StaffGrade() {Id=15, Grade = "C级", Coefficient = 1.0},
+                    new StaffGrade() {Id=16, Grade = "D级", Coefficient = 0.9}
                 });
 
             modelBuilder.Entity<VerifyCoefficient>().HasData(
                 new VerifyCoefficient[]
                 {
-                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =5, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =6, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =7, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =8, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =9, Coefficient = 0.3},
-                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =10, Coefficient = 0.3},
-                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =11, Coefficient = 0.4},
-                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =12, Coefficient = 0.4},
-                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =13, Coefficient = 0.5},
-                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =5, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =6, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =7, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =8, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =9, Coefficient = 0.3},
-                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =10, Coefficient = 0.3},
-                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =11, Coefficient = 0.4},
-                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =12, Coefficient = 0.4},
-                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =13, Coefficient = 0.5},
-                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =5, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =6, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =7, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =8, Coefficient = 0.2},
-                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =9, Coefficient = 0.3},
-                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =10, Coefficient = 0.3},
-                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =11, Coefficient = 0.4},
-                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =12, Coefficient = 0.4},
-                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =13, Coefficient = 0.5},
+                    
+                    new VerifyCoefficient() { CheckerId  = 1, DoPersonId =5, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 1, DoPersonId =6, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 1, DoPersonId =7, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 1, DoPersonId =8, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 1, DoPersonId =9, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 1, DoPersonId =10, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 1, DoPersonId =11, Coefficient =0.5},
+                    new VerifyCoefficient() { CheckerId  = 1, DoPersonId =12, Coefficient =0.5},
+                    new VerifyCoefficient() { CheckerId  = 1, DoPersonId =13, Coefficient =0.6},
+                    
+                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =5, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =6, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =7, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =8, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =9, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =10, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =11, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =12, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 2, DoPersonId =13, Coefficient =0.5},
+                    
+                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =5, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =6, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =7, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =8, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =9, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =10, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =11, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =12, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 3, DoPersonId =13, Coefficient =0.5},
+                    
+                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =5, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =6, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =7, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =8, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =9, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =10, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =11, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =12, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 4, DoPersonId =13, Coefficient =0.5},
+                    
+                    new VerifyCoefficient() { CheckerId  = 5, DoPersonId =5, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 5, DoPersonId =6, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 5, DoPersonId =7, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 5, DoPersonId =8, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 5, DoPersonId =9, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 5, DoPersonId =10, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 5, DoPersonId =11, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 5, DoPersonId =12, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 5, DoPersonId =13, Coefficient =0.5},
+                    
+                    new VerifyCoefficient() { CheckerId  = 6, DoPersonId =5, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 6, DoPersonId =6, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 6, DoPersonId =7, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 6, DoPersonId =8, Coefficient =0.2},
+                    new VerifyCoefficient() { CheckerId  = 6, DoPersonId =9, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 6, DoPersonId =10, Coefficient =0.3},
+                    new VerifyCoefficient() { CheckerId  = 6, DoPersonId =11, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 6, DoPersonId =12, Coefficient =0.4},
+                    new VerifyCoefficient() { CheckerId  = 6, DoPersonId =13, Coefficient =0.5}
+
                 }
                 );
 

+ 48 - 25
wispro.sp.winClient/Form1.cs

@@ -230,22 +230,22 @@ namespace wispro.sp.winClient
         private async void button3_Click(object sender, EventArgs e)
         {
 
-            //await InitRules();
+            await InitRules();
             await ImportUsers();
             await InputPerformanceItem("ExcelFiles\\21.01-21.06 工程师绩效报表-总表.xlsx", true, false, 0);
 
-            CalMonth cal = new CalMonth()
-            {
-                Year = 2021,
-                Month = 9,
-                Status = 0
-            };
+            //CalMonth cal = new CalMonth()
+            //{
+            //    Year = 2021,
+            //    Month = 9,
+            //    Status = 0
+            //};
 
-            await InputPerformanceItem(@"C:\Users\luowen\Downloads\每月绩效统计--发客户超过一个月未完成案件.xlsx", true,false,1, cal);
+            //await InputPerformanceItem(@"C:\Users\luowen\Downloads\每月绩效统计--发客户超过一个月未完成案件.xlsx", true,false,1, cal);
 
-            await InputPerformanceItem(@"C:\Users\luowen\Downloads\每月绩效统计--上个月递交完成案件.xlsx", true, false, 1, cal);
+            //await InputPerformanceItem(@"C:\Users\luowen\Downloads\每月绩效统计--上个月递交完成案件.xlsx", true, false, 1, cal);
 
-            await InputPerformanceItem(@"C:\Users\luowen\Downloads\每月绩效统计--中国一次OA授权表.xlsx", true, false, 1, cal,true);
+            //await InputPerformanceItem(@"C:\Users\luowen\Downloads\每月绩效统计--中国一次OA授权表.xlsx", true, false, 1, cal,true);
 
             MessageBox.Show("导入完成!");
         }
@@ -418,7 +418,9 @@ namespace wispro.sp.winClient
             foreach (string name in temHandlers)
             {
                 ItemStaff itemStaff = new ItemStaff();
-                int? iTem = GetStaff(name, Staffs);
+
+                string temName = name.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)[0];
+                int? iTem = GetStaff(temName, Staffs);
                 if ((iTem != null))
                 {
                     //itemStaff.Item = item;
@@ -429,8 +431,8 @@ namespace wispro.sp.winClient
                 {
                     itemStaff.DoPerson = new Staff()
                     {
-                        Name = name,
-                        Account = name,
+                        Name = temName,
+                        Account = temName,
                         Password = "12345678",
                         IsCalPerformsnce = false,
                         Status = "已离职",
@@ -447,13 +449,22 @@ namespace wispro.sp.winClient
 
             if (row.Table.Columns.Contains("核稿人"))
             {
-                item.ReviewerId = GetStaff(row["核稿人"].ToString().Trim(), Staffs);
+                if (!string.IsNullOrEmpty(row["核稿人"].ToString().Trim()))
+                {
+                    string temName = row["核稿人"].ToString().Trim().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)[0];
+                    item.ReviewerId = GetStaff(temName.Trim(), Staffs);
+                }
             }
             else
             {
                 if (row.Table.Columns.Contains("案件核稿人"))
                 {
-                    item.ReviewerId = GetStaff(row["案件核稿人"].ToString().Trim(), Staffs);
+                    if (!string.IsNullOrEmpty(row["案件核稿人"].ToString().Trim()))
+                    {
+                        string temName = row["案件核稿人"].ToString().Trim().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)[0];
+                        item.ReviewerId = GetStaff(temName.Trim(), Staffs);
+                    }
+                    
                 }
             }
 
@@ -589,21 +600,20 @@ namespace wispro.sp.winClient
 
         private async Task ImportUsers()
         {
-            DataTable dt = NPOIExcel.ExcelToDataTable("ExcelFiles\\210730-威世博人员清单v1r01-xm.xlsx", true);
+            DataTable dt = NPOIExcel.ExcelToDataTable(@"C:\temp\用户列表(2021年10月26日).xlsx", true,false,1);
             List<StaffGrade> staffGrades = await GetStaffGrades();
 
             foreach (DataRow row in dt.Rows)
             {
                 Staff staff = new Staff();
+                staff.Account = row["用户名"].ToString().Trim();
                 staff.Name = row["姓名"].ToString().Trim();
-                staff.Status = row["岗位状态"].ToString().Trim();
-                staff.Department = row["部门"].ToString();
-                staff.WorkPlace = row["工作地"].ToString();
-                staff.EntyDate = DateTime.Parse(row["入职时间"].ToString());
-                staff.IsCalPerformsnce = (row["是否核算绩效"].ToString() == "是");
+                staff.Tel = row["电话号码"].ToString().Trim();
+                staff.Mobile = row["手机号码"].ToString().Trim();
+                staff.Sex = row["性别"].ToString().Trim();
+                staff.Mail = row["邮箱"].ToString().Trim();
 
-                staff.Memo = row["备注"].ToString().Trim();
-                string strGrade = row["工程师等级"].ToString().Trim() + "级";
+                string strGrade = row["工程师等级"].ToString().Trim(); // + "级";
 
                 foreach (StaffGrade sg in staffGrades)
                 {
@@ -614,8 +624,21 @@ namespace wispro.sp.winClient
                     }
                 }
 
-                staff.Account = getPinYin(staff.Name.Trim());
-                staff.Mail = staff.Account + "@china-wispro.com";
+                staff.IsOnJob = (row["是否在职"].ToString().Trim()=="是");
+
+                staff.Status = row["岗位状态"].ToString().Trim();
+                staff.Department = row["部门"].ToString();
+                staff.WorkPlace = row["工作地"].ToString();
+
+                DateTime temDate;
+                if (DateTime.TryParse(row["入职时间"].ToString(), out temDate))
+                {
+                    staff.EntyDate = temDate;
+                }
+
+                //staff.IsCalPerformsnce = (row["是否核算绩效"].ToString() == "是");
+                //staff.Memo = row["备注"].ToString().Trim();
+
                 staff.Password = "12345678";
                 //staff.StaffGradeId = row["姓名"].ToString();
 

+ 23 - 2
wospro.sp.entity/Staff.cs

@@ -35,7 +35,28 @@ namespace wispro.sp.entity
         public string Name { get; set; }
 
         /// <summary>
-        /// 
+        /// 性别
+        /// </summary>
+        public string Sex { get; set; }
+
+        /// <summary>
+        /// 电话号码
+        /// </summary>
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 手机号码
+        /// </summary>
+        public string Mobile { get; set; }
+
+        /// <summary>
+        /// 是否在职
+        /// </summary>
+        public bool IsOnJob { get; set; }
+
+
+        /// <summary>
+        /// 在岗状态
         /// </summary>
         public string Status { get; set; }
 
@@ -47,7 +68,7 @@ namespace wispro.sp.entity
         /// <summary>
         /// 代理人等级Id
         /// </summary>
-        public int StaffGradeId { get; set; }
+        public int? StaffGradeId { get; set; }
 
         /// <summary>
         /// 部门