瀏覽代碼

修正由于维德系统修改导致从维德系统下载报表、获取案件信息、获取案件管制事项信息不能正常使用的问题
绩效记录添加对外处理人篮网

luocaiyang 10 月之前
父節點
當前提交
39024558d3

+ 5 - 0
wispro.sp.api/spDbContext.cs

@@ -238,6 +238,11 @@ namespace wispro.sp.api
                     .HasForeignKey(d => d.ReviewerId)
                     .HasConstraintName("FK_PerformanceItem_Reviewer");
 
+                entity.HasOne(d => d.ExternalHandler)
+                    .WithMany(p => p.ExternalHandlerItems)
+                    .HasForeignKey(d => d.ExternalHandlerId)
+                    .HasConstraintName("FK_PerformanceItem_CustomerInterface");
+
                 entity.HasOne(d => d.WorkflowUser)
                     .WithMany()
                     .HasForeignKey(d => d.WorkflowUserId)

+ 56 - 31
wispro.sp.utility/IPEasyUtility.cs

@@ -9,6 +9,7 @@ using System.Linq;
 using System.Threading;
 using System.Xml.Linq;
 using NPOI.HPSF;
+using NPOI.SS.Formula.Functions;
 using OpenQA.Selenium;
 using OpenQA.Selenium.Chrome;
 using OpenQA.Selenium.Interactions;
@@ -517,7 +518,7 @@ namespace wispro.sp.utility
                     wait.Until((d)=>{
                         return firstTr.FindElement(By.XPath(".//td/a[@title='下载']"));
                     }).Click();
-                    
+
                     var ReportName = $"案件清单({DateTime.Now.ToString("yyyy年MM月dd日")})";
                     string strFilePath = System.IO.Path.Combine(strFileSavePath, $"{ReportName.Trim()}.xlsx");
                     WaitForFileDownload(strFileSavePath, $"{ReportName.Trim()}.xlsx", TimeSpan.FromMinutes(5));
@@ -811,10 +812,10 @@ namespace wispro.sp.utility
                         Log($"{DateTime.Now}\t输入处理事项完成日期:开始日期");
                         var startDate = wait.Until((d) => {
                             return d.FindElement(By.XPath("//input[contains(@id,'dt_s_')]"));
-                        }); 
-
+                        });
+                        driver.ExecuteJavaScript("arguments[0].scrollIntoView();", startDate);
                         startDate.Click();
-
+                        System.Threading.Thread.Sleep(3000);
                         startDate.SendKeys(new DateTime(DateTime.Now.AddMonths(-1).Year, DateTime.Now.AddMonths(-1).Month, 1).ToString("yyyy-MM-dd"));
 
                         Log($"{DateTime.Now}\t输入处理事项完成日期:结束日期");
@@ -823,6 +824,7 @@ namespace wispro.sp.utility
                         {
                             try
                             {
+                                
                                 return d.FindElement(By.XPath("//input[contains(@id,'dt_e_')]"));//.Id("dt_e_4F8FE88D-9040-45F1-9723-45699BCD4CAF"));
                             }
                             catch
@@ -831,7 +833,7 @@ namespace wispro.sp.utility
                             }
 
                         });
-                        
+                        System.Threading.Thread.Sleep(3000);
                         endDate.Click();
                         endDate.SendKeys(new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(-1).ToString("yyyy-MM-dd"));
 
@@ -870,8 +872,9 @@ namespace wispro.sp.utility
                             return null;
                         }
 
-                    }); 
-                    linkExport.Click();
+                    });
+                    driver.ExecuteJavaScript("arguments[0].click();",linkExport);
+                    //linkExport.Click();
 
 
                     //切换到弹出的导出报表窗口,点击导出按钮
@@ -887,8 +890,13 @@ namespace wispro.sp.utility
                     driver.SwitchTo().DefaultContent();
                     var frameDownload = waitGetElementByName(wait,"DownloadList");
                     driver.SwitchTo().Frame(frameDownload);
-                    var firstTr = waitGetElementByTagName(wait,"tr");
-                    var tdStatus = firstTr.FindElement(By.XPath(".//td")).FindElement(By.XPath("following-sibling::td[4]"));
+                    var firstTr = wait.Until((d) => {
+                        return d.FindElement(By.CssSelector("table tbody tr"));
+                    });
+                    var tdStatus = wait.Until((d) => { 
+                        return firstTr.FindElement(By.XPath(".//td")).FindElement(By.XPath("following-sibling::td[4]"));
+                    });
+                        
                     string strStatus = tdStatus.Text;
                     while (strStatus.Trim() != "导出成功!")
                     {
@@ -898,13 +906,19 @@ namespace wispro.sp.utility
                         }
 
                         System.Threading.Thread.Sleep(5000);
-                        firstTr = waitGetElementByTagName(wait, "tr");
-                        tdStatus = firstTr.FindElement(By.XPath(".//td")).FindElement(By.XPath("following-sibling::td[4]"));
+                        firstTr = wait.Until((d) => {
+                            return d.FindElement(By.CssSelector("table tbody tr"));
+                        });
+                        tdStatus = wait.Until((d) => {
+                            return firstTr.FindElement(By.XPath(".//td")).FindElement(By.XPath("following-sibling::td[4]"));
+                        });
                         strStatus = tdStatus.Text;
                     }
 
                     Log($"{DateTime.Now}\t点击下载按钮下载文档");
-                    firstTr = waitGetElementByTagName(wait, "tr");
+                    firstTr = wait.Until((d) => {
+                        return d.FindElement(By.CssSelector("table tbody tr"));
+                    });
                     firstTr.FindElement(By.XPath(".//td/a[@title='下载']")).Click();
                     //System.Threading.Thread.Sleep(5000);
                     //btnDownload.Click();
@@ -914,8 +928,9 @@ namespace wispro.sp.utility
                     
                     //删除下载记录
                     Log($"{DateTime.Now}\t删除下载记录");
-                    firstTr = waitGetElementByTagName(wait, "tr");// driver.FindElement(By.TagName("tr"));
-
+                    firstTr = wait.Until((d) => {
+                        return d.FindElement(By.CssSelector("table tbody tr"));
+                    });
                     firstTr.FindElement(By.XPath(".//td/a[@title='删除']")).Click();
 
                     //System.IO.FileInfo file = new System.IO.FileInfo(strFilePath.Replace("~", "_"));
@@ -1001,7 +1016,7 @@ namespace wispro.sp.utility
                     //driver.FindElement(By.Id("libase")).Click();
 
                     retObject.CaseName = driver.FindElement(By.Id("p_case_info__case_name")).GetAttribute("value");  //案件名称
-                    retObject.CustomerName = driver.FindElement(By.Id("p_case_info__customer_id")).GetAttribute("value");  //客户名称
+                    retObject.CustomerName = driver.FindElement(By.Id("p_case_info__customer_id")).GetAttribute("value").Replace("(null)","");  //客户名称
                     retObject.BusinessType = driver.FindElement(By.Id("p_case_info__business_type_id")).GetAttribute("value");     //业务类型
 
                     retObject.CaseState = GetSelectText(driver.FindElement(By.Id("p_case_info__case_status_id")));
@@ -1090,11 +1105,19 @@ namespace wispro.sp.utility
                         driver.SwitchTo().ParentFrame().SwitchTo().Frame(2);
                         IWebElement temDoItemLink = null;
                         string temFinishedDate = "";
+
+                        string xpathQuery = "";
                         foreach (string doItemName in doItemNames)
                         {
+                            xpathQuery = string.IsNullOrEmpty(xpathQuery) ? $"normalize-space()='{doItemName}'" : $"{xpathQuery} or normalize-space()='{doItemName}'";
+                        }
+
+                        //foreach (string doItemName in doItemNames)
+                        //{
                             var DoItemLinks = wait.Until((d) =>
                             {
-                                return d.FindElements(By.XPath($"//td[@colname='ctrl_proc'][normalize-space()='{doItemName}']"));
+                                d.SwitchTo().ParentFrame().SwitchTo().Frame(2);
+                                return d.FindElements(By.XPath($"//td[@colname='ctrl_proc' and ({xpathQuery})]"));
                             });
                                 
                             if (DoItemLinks.Count > 0)
@@ -1118,7 +1141,7 @@ namespace wispro.sp.utility
 
                             }
 
-                        }
+                        //}
 
                         if(temDoItemLink != null)
                         {
@@ -1128,8 +1151,9 @@ namespace wispro.sp.utility
                             retObject.CustomerLimitDate = temDoItemLink.FindElement(By.XPath("following-sibling::td[5]")).Text;   //客户期限
                             retObject.FinishedDate = temDoItemLink.FindElement(By.XPath("following-sibling::td[7]")).Text;   //处理事项完成日
                             retObject.DoPersons = temDoItemLink.FindElement(By.XPath("following-sibling::td[8]")).Text;   //处理人
-                            retObject.DoItemMemo = temDoItemLink.FindElement(By.XPath("following-sibling::td[9]")).Text;   //处理事项备注
+                            retObject.ExternalHandler = temDoItemLink.FindElement(By.XPath("following-sibling::td[9]")).Text;   //对外处理人
                             retObject.Reviewer = temDoItemLink.FindElement(By.XPath("following-sibling::td[10]")).Text;   //核稿人
+                            retObject.DoItemMemo = temDoItemLink.FindElement(By.XPath("following-sibling::td[12]")).Text;   //处理事项备注
 
                             retObject.DoItem = temDoItemLink.Text;
 
@@ -1224,7 +1248,7 @@ namespace wispro.sp.utility
         /// <returns></returns>
         public static dynamic GetPerformanceRecord(string caseNo,string doItemName,string caseStage=null)
         {
-            if (caseNo.StartsWith("APCN"))
+            if (caseNo.Contains("APCN"))
             {
                 //商标
                 return GetAPCNPerformanceRecord(caseNo, doItemName, caseStage);
@@ -1305,9 +1329,10 @@ namespace wispro.sp.utility
                                         retObject.CustomerLimitDate = DoItemLink.FindElement(By.XPath("following-sibling::td[5]")).Text;   //客户期限
                                         retObject.FinishedDate = DoItemLink.FindElement(By.XPath("following-sibling::td[7]")).Text;   //处理事项完成日
                                         retObject.DoPersons = DoItemLink.FindElement(By.XPath("following-sibling::td[8]")).Text;   //处理人
-                                        retObject.DoItemMemo = DoItemLink.FindElement(By.XPath("following-sibling::td[9]")).Text;   //处理事项备注
+                                        retObject.ExternalHandler = DoItemLink.FindElement(By.XPath("following-sibling::td[9]")).Text;   //对外处理人
                                         retObject.Reviewer = DoItemLink.FindElement(By.XPath("following-sibling::td[10]")).Text;   //核稿人
-                                        
+                                        retObject.DoItemMemo = DoItemLink.FindElement(By.XPath("following-sibling::td[12]")).Text;   //处理事项备注
+
                                         DoItemLink.Click();
                                         break;
                                     }
@@ -1322,8 +1347,10 @@ namespace wispro.sp.utility
                                 retObject.CustomerLimitDate = DoItemLink.FindElement(By.XPath("following-sibling::td[5]")).Text;   //客户期限
                                 retObject.FinishedDate = DoItemLink.FindElement(By.XPath("following-sibling::td[7]")).Text;   //处理事项完成日
                                 retObject.DoPersons = DoItemLink.FindElement(By.XPath("following-sibling::td[8]")).Text;   //处理人
-                                retObject.DoItemMemo = DoItemLink.FindElement(By.XPath("following-sibling::td[9]")).Text;   //处理事项备注
+                                retObject.ExternalHandler = DoItemLink.FindElement(By.XPath("following-sibling::td[9]")).Text;   //对外处理人
+                                
                                 retObject.Reviewer = DoItemLink.FindElement(By.XPath("following-sibling::td[10]")).Text;   //核稿人
+                                retObject.DoItemMemo = DoItemLink.FindElement(By.XPath("following-sibling::td[12]")).Text;   //处理事项备注
 
                                 DoItemLink.Click();
                                 
@@ -1364,7 +1391,7 @@ namespace wispro.sp.utility
 
                         });
                         retObject.CaseName = p_case_info__case_name.GetAttribute("value");  //案件名称
-                        retObject.CustomerName = driver.FindElement(By.Id("p_case_info__customer_id")).GetAttribute("value");  //客户名称
+                        retObject.CustomerName = driver.FindElement(By.Id("p_case_info__customer_id")).GetAttribute("value").Replace("(null)","");  //客户名称
                         retObject.BusinessType = driver.FindElement(By.Id("p_case_info__business_type_id")).GetAttribute("value");     //业务类型
 
                         retObject.CaseState = GetSelectText(driver.FindElement(By.Id("p_case_info__case_status_id")));
@@ -1476,14 +1503,12 @@ namespace wispro.sp.utility
 
                                     if (temCaseStage == caseStage)
                                     {
-                                        retObject.CaseStage = DoItemLink.FindElement(By.XPath("following-sibling::td[1]")).Text; //案件阶段
-                                        retObject.DoItemState = DoItemLink.FindElement(By.XPath("following-sibling::td[2]")).Text;    //处理事项处理状态
-                                        retObject.InternalDate = DoItemLink.FindElement(By.XPath("following-sibling::td[4]")).Text;   //内部期限
-                                        retObject.CustomerLimitDate = DoItemLink.FindElement(By.XPath("following-sibling::td[5]")).Text;   //客户期限
-                                        retObject.FinishedDate = DoItemLink.FindElement(By.XPath("following-sibling::td[7]")).Text;   //处理事项完成日
-                                        retObject.DoPersons = DoItemLink.FindElement(By.XPath("following-sibling::td[8]")).Text;   //处理人
-                                        retObject.DoItemMemo = DoItemLink.FindElement(By.XPath("following-sibling::td[9]")).Text;   //处理事项备注
-                                        retObject.Reviewer = DoItemLink.FindElement(By.XPath("following-sibling::td[10]")).Text;   //核稿人
+                                        retObject.DoItemState = DoItemLink.FindElement(By.XPath("following-sibling::td[1]")).Text;    //处理事项处理状态
+                                        retObject.InternalDate = DoItemLink.FindElement(By.XPath("following-sibling::td[3]")).Text;   //内部期限
+                                        retObject.CustomerLimitDate = DoItemLink.FindElement(By.XPath("following-sibling::td[4]")).Text;   //客户期限
+                                        retObject.FinishedDate = DoItemLink.FindElement(By.XPath("following-sibling::td[6]")).Text;   //处理事项完成日
+                                        retObject.DoPersons = DoItemLink.FindElement(By.XPath("following-sibling::td[7]")).Text;   //处理人
+                                        retObject.DoItemMemo = DoItemLink.FindElement(By.XPath("following-sibling::td[10]")).Text;   //处理事项备注
 
                                         DoItemLink.Click();
                                         //driver.ExecuteJavaScript("$(arguments[0]).click()", DoItemLink);

+ 2 - 0
wispro.sp.winClient/frmCaseFileCompare.cs

@@ -372,6 +372,8 @@ namespace wispro.sp.winClient
 
         private void button2_Click(object sender, EventArgs e)
         {
+            var caseInfo = IPEasyUtility.DownloadReport("每月绩效统计--上个月递交完成案件",true);
+            return;
             var retData = IPEasyUtility.GetFinished3FilesCases(1);
             return;
             

+ 6 - 0
wospro.sp.entity/Organization/Staff.cs

@@ -130,6 +130,12 @@ namespace wispro.sp.entity
         /// </summary>
         public virtual ICollection<PerformanceItem> ReviewerItems { get; set; }
 
+        [JsonIgnore]
+        /// <summary>
+        /// 作为对外处理人案件清单
+        /// </summary>
+        public virtual ICollection<PerformanceItem> ExternalHandlerItems { get; set; }
+
         /// <summary>
         /// 职位
         /// </summary>

+ 11 - 0
wospro.sp.entity/PerformanceItem.cs

@@ -76,6 +76,11 @@ namespace wispro.sp.entity
         public int? ReviewerId { get; set; }
 
         /// <summary>
+        /// 对外处理人Id
+        /// </summary>
+        public int? ExternalHandlerId { get; set; }
+
+        /// <summary>
         /// 客户Id
         /// </summary>
         public int? CustomerId { get; set; }
@@ -208,6 +213,12 @@ namespace wispro.sp.entity
         public virtual Staff Reviewer { get; set; }
 
         /// <summary>
+        /// 客户处理人
+        /// </summary>
+        [Description("客户处理人")]
+        public virtual Staff ExternalHandler { get; set; }
+
+        /// <summary>
         /// 流程负责人Id
         /// </summary>
         public int? WorkflowUserId { get; set; }