Parcourir la source

新增设计批量统计

zhuyiyi il y a 19 heures
Parent
commit
f0c71f974f

+ 3 - 3
SiteCore/Handler/sync.order.cs

@@ -772,6 +772,7 @@ namespace SiteCore.Handler
                         }
 
                     }
+
                     entity.IsUrgency = false;
                     entity.seller_memo = "";
                     entity.OtherMemo = "";
@@ -11130,7 +11131,7 @@ namespace SiteCore.Handler
                                         entity.OrderState = 6;
                                     }
                                     //配件单直接到下单部
-                                    if(entity.IsSample == 4)
+                                    if (entity.IsSample == 4)
                                     {
                                         entity.OrderState = 5;
                                     }
@@ -12798,7 +12799,7 @@ namespace SiteCore.Handler
         //不统计
         List<int> no_suppliers = new List<int>()
         {
-            84,33,48,25,50,2,56,109,12,8,16,12,8,35,87
+            84,33,48,25,50,2,56,109,12,8,16,12,8,35,87,136,114,34,96
         };
         //配件单
         Dictionary<string, List<string>> maps = new Dictionary<string, List<string>>()
@@ -13263,7 +13264,6 @@ namespace SiteCore.Handler
                         if (isSendTime)
                         {
                             map["unusua"]++;
-
                         }
                     }
                     catch (Exception ex)

+ 301 - 0
SiteCore/Handler/sync.orderReport.cs

@@ -999,7 +999,308 @@ namespace SiteCore.Handler
             }
         }
 
+        public void get_erp_designer_gather_rate3()
+        {
+            /*  newDesignerRate();*/
+            DataStruct dStruct = GetPostStruct();
+            List<string> lw = new List<string>();
+            int st = GetInt("st");
+            string tid = GetPostString("ctid");
+            string org = GetPostString("org");
+            string sstr = GetPostString("order_area");
+            string username = GetPostString("designer");
+            string date1 = GetPostString("date1");
+            string date2 = GetPostString("date2");
+            string dateType = GetPostString("dateType");
+
+            DateTime currentDate = DateTime.Parse(date1);
+            // 获取指定日期的开始时间
+            DateTime startTime = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, 0, 0, 0);//日
+            DateTime currentTime = startTime;
+            DateTime currentDate2 = DateTime.Parse(date2);
+            // 获取指定日期的结束时间(即下一天的开始时间,减去1秒)
+            DateTime endTime = new DateTime(currentDate2.Year, currentDate2.Month, currentDate2.Day, 23, 59, 59).AddSeconds(-1);//日
+            TimeSpan diff = endTime - startTime;
+            int daysDiff = diff.Days + 1;
+            string currentTimeString = currentTime.ToString("yyyy-MM-dd HH:mm:ss");
 
+            int daysToMonday = ((int)startTime.DayOfWeek - (int)DayOfWeek.Monday + 7) % 7;
+            int daysToSunday = 6 - ((int)startTime.DayOfWeek - (int)DayOfWeek.Monday + 7) % 7;
+
+            // 使用 AddDays 和 DateProperties 方法获取周一的第一秒和周日的最后一秒
+            DateTime firstweek = startTime.AddDays(-daysToMonday).Date;
+            DateTime lastweek = startTime.AddDays(daysToSunday).Date.Add(new TimeSpan(23, 59, 59));
+
+            /*      DateTime firstweek = Convert.ToDateTime(currentTimeString).AddDays(-(int)Convert.ToDateTime(currentTimeString).DayOfWeek);//周
+                  DateTime lastweek = firstweek.AddDays(6);//周*/
+            DateTime firstDay = commonHelper.FirstDayOfMonth(Convert.ToDateTime(currentTimeString));//月
+            DateTime lastDay = commonHelper.LastDayOfMonth(Convert.ToDateTime(currentTimeString));//月
+
+            if (string.IsNullOrEmpty(org))
+            {
+                returnErrorMsg("请选择部门");
+                return;
+            }
+            StringBuilder sql1 = new StringBuilder();
+            sql1.AppendFormat("SELECT a.did,a.name,u.OrgName,sum(a.Refund) AS Refunds ,SUM ( CAST ( a.Amount AS DECIMAL ( 10, 2 ) ) ) AS Amount, SUM(CAST(onFinalizationRate AS decimal(10, 4))) AS totalAmount,SUM ( CAST ( a.AllOrder AS DECIMAL ( 10, 2 ) ) ) AS AllOrder, SUM ( CAST ( a.FinalizationRate AS DECIMAL ( 10, 2 ) ) ) AS FinalizationRate, SUM ( CAST ( a.splitSum AS DECIMAL ( 10, 2 ) ) ) AS splitSum, SUM ( CAST ( a.csplitum AS DECIMAL ( 10, 2 ) ) ) AS csplitum,SUM(CAST(onRefund AS decimal(10, 4))) AS toRefund,(SELECT  COUNT(CONVERT(date, ctime)) AS days FROM [dbo].[Ce_ErpDesignerFinishRateNew] WHERE  did =  a.did and AllOrder > 0  and ctime BETWEEN '{0}' AND '{1}')AS msum FROM [dbo].[Ce_ErpDesignerFinishRateNew]  as a LEFT JOIN view_ErpUser u ON a.did = u.id  WHERE ctime BETWEEN '{0}' AND '{1}' AND u.OrgID in ({2}) GROUP BY a.did,u.OrgName,a.name", startTime.ToString("yyyy-MM-dd HH:mm:ss"), endTime.ToString("yyyy-MM-dd HH:mm:ss"), org);
+            DataTable dt = null;
+            dt = DbHelper.DbConn.ExecuteDataset(sql1.ToString()).Tables[0];
+
+            DataStruct dStruct2 = GetPostStruct();
+            List<string> lw2 = new List<string>();
+
+            StringBuilder sql = new StringBuilder();
+            sql.AppendFormat("SELECT A.DesignUserId AS did,SUM ( CASE WHEN A.FinishDesignTime IS NOT NULL THEN A.payment ELSE 0 END ) AS designPayment,SUM ( A.payment ) AS TotalPayment,SUM (A.RefundFee ) AS refundPayment,COUNT( A.WaitDesignTime) AS waitSum,   \r\n    COUNT(DISTINCT CASE WHEN ctid NOT LIKE 'C%' AND ctid NOT LIKE 'S%' THEN tid ELSE NULL END) +\r\n    COUNT(DISTINCT CASE WHEN ctid LIKE 'C%' AND ctid NOT LIKE 'S%' THEN tid ELSE NULL END) AS sumnum,\r\n\t    COUNT(DISTINCT CASE WHEN ctid NOT LIKE 'C%' AND ctid NOT LIKE 'S%' AND OrderState = '3' THEN tid ELSE NULL END) +  COUNT(DISTINCT CASE WHEN ctid LIKE 'C%' AND ctid NOT LIKE 'S%' AND OrderState = '3' THEN tid ELSE NULL END) AS WaitDesign,  COUNT(DISTINCT CASE WHEN ctid NOT LIKE 'C%' AND ctid NOT LIKE 'S%' AND OrderState = '4' THEN tid ELSE NULL END) +  COUNT(DISTINCT CASE WHEN ctid LIKE 'C%' AND ctid NOT LIKE 'S%' AND OrderState = '4' THEN tid ELSE NULL END) AS Designing,  COUNT(DISTINCT CASE WHEN ctid NOT LIKE 'C%' AND ctid NOT LIKE 'S%' AND OrderState > '4' THEN tid ELSE NULL END) + COUNT(DISTINCT CASE WHEN ctid LIKE 'C%' AND ctid NOT LIKE 'S%' AND OrderState > '4' THEN tid ELSE NULL END) AS DesignFinish FROM dbo.CE_ErpTradeCell AS A LEFT OUTER JOIN dbo.view_ErpUser AS B ON A.DesignUserId = B.ID WHERE A.WaitDesignTime BETWEEN '{0}' AND '{1}' AND b.orgid in ({2}) AND a.IsSample!= 2  GROUP BY DesignUserId ", startTime.ToString("yyyy-MM-dd HH:mm:ss"), endTime.ToString("yyyy-MM-dd HH:mm:ss"), org);
+            DataTable dt2 = DbHelper.DbConn.ExecuteDataset(sql.ToString()).Tables[0];
+
+            //获取月周定稿
+            StringBuilder sql3 = new StringBuilder();
+            /*   sql3.AppendFormat("SELECT a.did,b.name, SUM(CAST(a.onFinalizationRate AS decimal(10, 4))) AS totalAmount,(SELECT  COUNT(CONVERT(date, ctime)) AS days\r\nFROM [dbo].[Ce_ErpDesignerFinishRateNew]\r\nWHERE  did =  a.did and AllOrder > 0  and ctime BETWEEN '{0}' AND '{1}')AS msum FROM [dbo].[Ce_ErpDesignerFinishRateNew]  as a LEFT JOIN CE_ErpUser as b on a.did = b.id WHERE a.ctime BETWEEN '{0}' AND '{1}' and a.orgid = '{2}'   GROUP BY a.did,b.name", firstweek.ToString("yyyy-MM-dd HH:mm:ss"), lastweek.ToString("yyyy-MM-dd HH:mm:ss"), org);*/
+            sql3.AppendFormat("SELECT A.DesignUserId AS did, COUNT(CASE WHEN a.WaitDesignTime is not null THEN 1 END) AS WaitDesign, COUNT(CASE WHEN A.OrderState >= '5'  and a.IsRefund !='2' and a.FinishDesignTime  BETWEEN '{0}' AND '{1}' THEN 1 END) AS DesignFinish FROM dbo.CE_ErpTradeCell  AS A LEFT OUTER JOIN dbo.view_ErpUser AS B ON A.DesignUserId = B.ID where A.WaitDesignTime BETWEEN '{0}' AND '{1}' and b.orgid in ({2}) and a.IsSample!=2  and a.ctid not like '%S%'  GROUP BY DesignUserId ", startTime.ToString("yyyy-MM-dd HH:mm:ss"), endTime.ToString("yyyy-MM-dd HH:mm:ss"), org);
+            DataTable dt3 = DbHelper.DbConn.ExecuteDataset(sql3.ToString()).Tables[0];
+
+            string sqlFinish = string.Format("SELECT A.DesignUserId AS did, COUNT ( CASE WHEN a.FinishDesignTime BETWEEN '{0}' AND '{1}' THEN 1 END ) AS DesignFinish  FROM dbo.CE_ErpTradeCell AS A LEFT OUTER JOIN dbo.view_ErpUser AS B ON A.DesignUserId = B.ID WHERE A.FinishDesignTime BETWEEN '{0}'  AND '{1}' AND b.orgid in ({2}) AND a.IsSample!= 2  AND a.ctid NOT LIKE 'S_%'  GROUP BY DesignUserId", startTime.ToString("yyyy-MM-dd HH:mm:ss"), endTime.ToString("yyyy-MM-dd HH:mm:ss"), org);
+            DataTable finishDesign = DbHelper.DbConn.ExecuteDataset(sqlFinish).Tables[0];
+
+            string sqlRefund = string.Format("SELECT A.DesignUserId AS did, COUNT ( DISTINCT A.tid ) AS refund FROM dbo.CE_ErpTradeRefund AS C LEFT OUTER JOIN dbo.CE_ErpTradeCell AS A ON c.tid= A.tid LEFT OUTER JOIN dbo.view_ErpUser AS B ON A.DesignUserId = B.ID WHERE A.WaitDesignTime BETWEEN '{0}'  AND '{1}'  AND b.orgid in ({2})  AND a.IsSample!= 2  AND a.ctid NOT LIKE '%S%' AND A.IsRefund > 0  AND ( C.created < A.FinishDesignTime OR A.FinishDesignTime IS NULL )  GROUP BY A.DesignUserId", startTime.ToString("yyyy-MM-dd HH:mm:ss"), endTime.ToString("yyyy-MM-dd HH:mm:ss"), org);
+            DataTable refundDesign = DbHelper.DbConn.ExecuteDataset(sqlRefund).Tables[0];
+            Dictionary<object, Dictionary<String, object>> mapweek = new Dictionary<object, Dictionary<String, object>>();
+            foreach (DataRow dr3 in dt3.Rows)
+            {
+                Dictionary<String, object> map2 = new Dictionary<String, object>();
+                double roundedResult = 0.00;
+                double num1 = 0.00;
+                double num2 = 0.00;
+                if (!Convert.IsDBNull(dr3["WaitDesign"]))
+                {
+                    num1 = Convert.ToDouble(dr3["DesignFinish"]);
+                    num2 = Convert.ToDouble(dr3["WaitDesign"]);
+                    /*           double num1 = Convert.ToDouble(dr3["totalAmount"]);
+                               double num2 = Convert.ToDouble(dr3["msum"]);*/
+                    double result = (double)num1 / num2;
+                    if (double.IsNaN(result))
+                    {
+                        result = 0;
+                    }
+                    roundedResult = Math.Round(result * 100, 2);
+                }
+                map2.Add("DesignFinish", num1);
+                map2.Add("WaitDesign", num2);
+                map2.Add("AvgWeekRate", roundedResult);
+                mapweek.Add(dr3["did"], map2);
+
+            }
+            Dictionary<object, Dictionary<String, object>> mapDay = new Dictionary<object, Dictionary<String, object>>();
+            StringBuilder sql4 = new StringBuilder();
+            sql4.AppendFormat("SELECT a.did,b.name, SUM(CAST(a.onFinalizationRate AS decimal(10, 4))) AS totalAmount,(SELECT  COUNT(CONVERT(date, ctime)) AS days FROM [dbo].[Ce_ErpDesignerFinishRateNew] WHERE  did =  a.did and AllOrder > 0  and ctime BETWEEN '{0}' AND '{1}')AS msum FROM [dbo].[Ce_ErpDesignerFinishRateNew]  as a LEFT JOIN CE_ErpUser as b on a.did = b.id WHERE a.ctime BETWEEN '{0}' AND '{1}' and a.orgid in ({2})   GROUP BY a.did,b.name", startTime.ToString("yyyy-MM-dd HH:mm:ss"), endTime.ToString("yyyy-MM-dd HH:mm:ss"), org);
+            DataTable dt4 = null;
+            dt4 = DbHelper.DbConn.ExecuteDataset(sql4.ToString()).Tables[0];
+            foreach (DataRow dr4 in dt4.Rows)
+            {
+                Dictionary<String, object> map2 = new Dictionary<String, object>();
+                double roundedResult = 0.00;
+                double num1 = 0.00;
+                double num2 = 0.00;
+                if (!Convert.IsDBNull(dr4["totalAmount"]))
+                {
+                    num1 = Convert.ToDouble(dr4["totalAmount"]);
+                    num2 = Convert.ToDouble(dr4["msum"]);
+                    double result = (double)num1 / num2;
+                    if (double.IsNaN(result))
+                    {
+                        result = 0;
+                    }
+                    roundedResult = Math.Round(result * 100, 2);
+                }
+
+                map2.Add("totalAmount", num1);
+                map2.Add("msum", num2);
+                map2.Add("AvgRate", roundedResult);
+                mapDay.Add(dr4["did"], map2);
+            }
+
+
+            dt.Columns.Add("sumPlyAmount", typeof(String));
+            dt.Columns.Add("WaitDesign", typeof(int));
+            dt.Columns.Add("Designing", typeof(int));
+            dt.Columns.Add("DesignFinish", typeof(int));
+            dt.Columns.Add("sumNum", typeof(int));
+            dt.Columns.Add("onFinalizationRateSum", typeof(String));//
+            dt.Columns.Add("onAvgWeekRate", typeof(String));
+            dt.Columns.Add("refundPayment", typeof(String));
+            dt.Columns.Add("designPayment", typeof(String));
+            dt.Columns.Add("onAvgRate", typeof(String));
+            dt.Columns.Add("toRefundDesign", typeof(String));
+            dt.Columns.Add("refund", typeof(int));
+            dt.Columns.Add("waitSum", typeof(int));
+            dt.Columns.Add("designTime", typeof(int));
+            Dictionary<object, Dictionary<String, object>> map1 = new Dictionary<object, Dictionary<String, object>>();
+            foreach (DataRow dr2 in dt2.Rows)
+            {
+                Dictionary<String, object> map2 = new Dictionary<String, object>();
+                map2.Add("TotalPayment", dr2["TotalPayment"]);
+                map2.Add("WaitDesign", dr2["WaitDesign"]);
+                map2.Add("Designing", dr2["Designing"]);
+                map2.Add("DesignFinish", dr2["DesignFinish"]);
+                map2.Add("sumNum", dr2["sumnum"]);
+                map2.Add("waitSum", dr2["waitSum"]);
+                map2.Add("refundPayment", dr2["refundPayment"]);
+                map2.Add("designPayment", dr2["designPayment"]);
+                map2.Add("designTime", 0);
+                map2.Add("refund", 0);
+                foreach (DataRow row in finishDesign.Rows)
+                {
+
+                    if (row["did"].ToString() == dr2["did"].ToString())
+                    {
+                        map2["designTime"] = row["DesignFinish"];
+                    }
+                }
+                foreach (DataRow row in refundDesign.Rows)
+                {
+
+                    if (row["did"].ToString() == dr2["did"].ToString())
+                    {
+                        map2["refund"] = row["refund"];
+                    }
+                }
+                map1.Add(dr2["did"], map2);
+            }
+
+            double sumRefund = 0;
+            double sumPlyAmount = 0;
+            double sumRefundPayment = 0;
+            double sumDesignPayment = 0;
+            double sumAmount = 0;
+            int sumWaitDesign = 0;
+            int sumDesigning = 0;
+            int sumDesignFinish = 0;
+            int sumNum = 0;
+            int sumAllOrder = 0;
+            int sumFinalizationRate = 0;
+            int sumWeekDesign = 0;
+            int sumWeekDesignFinish = 0;
+            int sumMothDesign = 0;
+            int sumMothDesignFinish = 0;
+            double onFinalizationRateSum = 0;
+            double toRefundDesign = 0;
+            double onAvgWeekRate = 0;
+            double onAvgRate = 0;
+            int dif = 0;
+            int waitSum = 0;
+            int designTime = 0;
+            foreach (DataRow dr in dt.Rows)
+            {
+                try
+                {
+                    Dictionary<String, object> map3 = map1[dr["did"]];
+                    Dictionary<String, object> map4 = mapweek[dr["did"]];
+                    Dictionary<String, object> map5 = mapDay[dr["did"]];
+
+                    if (!Convert.IsDBNull(dr["totalAmount"]))
+                    {
+                        double num1 = Convert.ToDouble(dr["totalAmount"]);
+                        double num2 = Convert.ToDouble(dr["toRefund"]);
+
+                        double result = (double)num1 / Convert.ToDouble(dr["msum"]);
+                        double result2 = (double)num2 / Convert.ToDouble(dr["msum"]);
+                        if (double.IsNaN(result))
+                        {
+                            result = 0;
+                        }
+                        if (double.IsNaN(result2))
+                        {
+                            result2 = 0;
+                        }
+                        double roundedResult = Math.Round(result * 100, 2);
+                        dr["onFinalizationRateSum"] = roundedResult;
+                        double roundedResult2 = Math.Round(result2 * 100, 2);
+                        dr["toRefundDesign"] = roundedResult2;
+                        onFinalizationRateSum += roundedResult;
+                        toRefundDesign += roundedResult2;
+
+                    }
+                    else
+                    {
+                        dr["onFinalizationRateSum"] = "0.00";
+                    }
+                    dr["AllOrder"] = Convert.ToDouble(dr["AllOrder"]) + Convert.ToDouble(dr["csplitum"]);
+                    dr["FinalizationRate"] = Convert.ToDouble(dr["FinalizationRate"]) + Convert.ToDouble(dr["splitSum"]);
+                    dr["refund"] = map3["refund"];
+                    dr["sumPlyAmount"] = map3["TotalPayment"];
+                    dr["WaitDesign"] = map3["WaitDesign"];
+                    dr["refundPayment"] = map3["refundPayment"];
+                    dr["designPayment"] = map3["designPayment"];
+                    dr["Designing"] = map3["Designing"];
+                    dr["DesignFinish"] = map3["DesignFinish"];
+                    dr["sumNum"] = map3["sumNum"];
+                    dr["onAvgWeekRate"] = map4["AvgWeekRate"];
+                    dr["onAvgRate"] = map5["AvgRate"];
+                    dr["waitSum"] = map3["waitSum"];
+                    dr["designTime"] = map3["designTime"];
+                    dr["onFinalizationRateSum"] = Math.Round(Convert.ToDouble(dr["FinalizationRate"]) / Convert.ToDouble(dr["AllOrder"]) * 100, 2);
+                    sumRefund += Convert.ToDouble(dr["refund"]);
+                    sumPlyAmount += Convert.ToDouble(dr["sumPlyAmount"]);
+                    sumDesignPayment += Convert.ToDouble(dr["designPayment"]);
+                    sumAmount += Convert.ToDouble(dr["Amount"]);
+                    sumRefundPayment += Convert.ToDouble(dr["refundPayment"]);
+                    sumWaitDesign += Convert.ToInt32(dr["WaitDesign"]);
+                    sumDesigning += Convert.ToInt32(dr["Designing"]);
+                    sumDesignFinish += Convert.ToInt32(dr["DesignFinish"]);
+                    sumNum += Convert.ToInt32(dr["sumNum"]);
+                    sumAllOrder += Convert.ToInt32(dr["AllOrder"]);
+                    sumFinalizationRate += Convert.ToInt32(dr["FinalizationRate"]);
+                    waitSum += Convert.ToInt32(dr["waitSum"]);
+                    designTime += Convert.ToInt32(dr["designTime"]);
+
+                    if (sumNum > 0)
+                    {
+                        dif++;
+                    }
+                    sumWeekDesign += Convert.ToInt32(map4["WaitDesign"]);
+                    sumWeekDesignFinish += Convert.ToInt32(map4["DesignFinish"]);
+                    sumMothDesign += Convert.ToInt32(map5["msum"]);
+                    sumMothDesignFinish += Convert.ToInt32(map5["totalAmount"]);
+                    onAvgWeekRate += Convert.ToDouble(map4["AvgWeekRate"]);
+                    onAvgRate += Convert.ToDouble(map5["AvgRate"]);
+                }
+                catch (Exception ex)
+                {
+                    dr["sumPlyAmount"] = 0;
+                    dr["WaitDesign"] = 0;
+                    dr["Designing"] = 0;
+                    dr["DesignFinish"] = 0;
+                    dr["sumNum"] = 0;
+                    dr["waitSum"] = 0;
+                    dr["designTime"] = 0;
+                    dr["onAvgWeekRate"] = "0.00";
+                    dr["onAvgRate"] = "0.00";
+                }
+
+
+            }
+            DataRow sumRow = dt.NewRow();
+            sumRow["AllOrder"] = sumAllOrder;
+            sumRow["FinalizationRate"] = sumFinalizationRate;
+            sumRow["refund"] = sumRefund;
+            sumRow["sumPlyAmount"] = sumPlyAmount;
+            sumRow["WaitDesign"] = sumWaitDesign;
+            sumRow["designPayment"] = sumDesignPayment;
+            sumRow["Designing"] = sumDesigning;
+            sumRow["refundPayment"] = sumRefundPayment;
+            sumRow["Amount"] = sumAmount;
+            sumRow["DesignFinish"] = sumDesignFinish;
+            sumRow["sumNum"] = sumNum;
+            sumRow["waitSum"] = waitSum;
+            sumRow["designTime"] = designTime;
+            sumRow["onFinalizationRateSum"] = Math.Round(Convert.ToDouble(sumFinalizationRate) / sumAllOrder * 100, 2);
+            sumRow["toRefundDesign"] = Math.Round(toRefundDesign / dif, 2);
+            sumRow["onAvgWeekRate"] = Math.Round(Convert.ToDouble(sumWeekDesignFinish) / sumWeekDesign * 100, 2);
+            sumRow["onAvgRate"] = Math.Round(Convert.ToDouble(sumMothDesignFinish) / sumMothDesign * 100, 2);
+            dt.Rows.Add(sumRow);
+            writeGridDataTableJson(dStruct.TotalCount, dt);
+
+        }
 
         public void new_Designer_Rate()
         {

+ 39 - 1
SiteCore/taobao/commonHelper.cs

@@ -36,7 +36,7 @@ namespace SiteCore
         public static void autoRefreshRefundState()
         {
             StringBuilder sql = new StringBuilder();
-           
+
             sql.AppendFormat("update CE_ErpTradeRefund set RefundState=3 where RefundState=2 and DATEDIFF(hh,modified,getdate())>=72;");
             //sql.AppendFormat("update ce_erptradecell with(rowlock) set AfterSaleState=4,FinishAfterSaleTime=getdate() where AfterSaleState=3 and IsArbitrate=0 and DATEDIFF(hh,AfterSalePreTime,getdate())>=168;");
             //sql.AppendFormat("update ce_erptradecell with(rowlock) set AfterSaleSupplierState=1,set FinishAfterSaleTime=GETDATE(),set AfterSaleState=4  where AfterSaleSupplierState=0 and AfterSaleState>1 and AfterSaleResSupId>0 and DATEDIFF(hh,HandleTime,getdate())>=72;");
@@ -3979,6 +3979,44 @@ namespace SiteCore
 
         }
 
+        public static void sendOrderInfoToNewPlant(string data)
+        {
+            Thread thread = new Thread(new ThreadStart(() =>
+            {
+                string url = "http://47.122.57.102:8400/admin-api/erp/open/diansan/notice/order";
+                HttpClient client = new HttpClient();
+                var request = new HttpRequestMessage
+                {
+                    Method = HttpMethod.Post,
+                    RequestUri = new Uri(url),
+
+                    Content = new StringContent(data)
+                    {
+                        Headers =
+                     {
+                        ContentType = new MediaTypeHeaderValue("application/json")
+                     }
+                    }
+                };
+
+                try
+                {
+                    var response = client.SendAsync(request).Result;
+                    response.EnsureSuccessStatusCode();
+                }
+                catch (Exception e)
+                {
+                    XLog.SaveLog(0, "sendOrderInfoToNewPlant:" + e);
+                }
+
+            }));
+
+            thread.Start();
+
+        }
+
+
+
         public static string generateDateTimeRandomNos()
         {
             Random random = new Random();

+ 8 - 3
SiteCore/taobao/tmcHelper.cs

@@ -391,6 +391,7 @@ namespace SiteCore
         public static void Api_TmcTradeMsg(string res)
         {
             Api_tmc_trade_info_Obj fullObj = null;
+
             if (res == "") return;
             try
             {
@@ -585,6 +586,7 @@ namespace SiteCore
                 }
                 trade.Update();
             }
+           
             commonHelper.sendOrderInfo(trade.tid, "", trade.buyer_id, trade.buyer_nick);
             //dataHelper.sendErpTradeInfo(new dataSendTradeBean(tObj));
 
@@ -749,11 +751,11 @@ namespace SiteCore
                         }
                     }
 
-                    if (item.standards.Contains("宠物") && item.standards.Contains("转印贴"))
+                    if (item.standards.Contains("宠物") && (item.standards.Contains("转印贴") || item.standards.Contains("转印")))
                     {
                         trade.designType = 1;
                     }
-                    if (item.title.Contains("宠物") && item.title.Contains("转印贴"))
+                    if (item.title.Contains("宠物") && (item.title.Contains("转印贴") || item.title.Contains("转印")))
                     {
                         trade.designType = 1;
                     }
@@ -849,7 +851,10 @@ namespace SiteCore
                 XLog.SaveLog(0, res + "|order表:" + ex.Message);
                 throw ex;
             }
-
+            if (shopId == 5)
+            {
+                commonHelper.sendOrderInfoToNewPlant(res);
+            }
             //if (isXianhuo)
             //{
             //    xianhuoMemo += "-";

+ 237 - 0
Web/ECharts/DesignMulitRate.aspx

@@ -0,0 +1,237 @@
+<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage/ErpView.master" AutoEventWireup="true" CodeFile="DesignMulitRate.aspx.cs" Inherits="ECharts_DesignMulitRate" %>
+
+<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
+    <script type="text/javascript">
+        //查询按钮
+        function searchFn() {
+            var form = new mini.Form("#ctl00_f_all");
+            var data = form.getData(true, false);
+            var s = data;
+            if (s.assigndate1 == "" || s.assigndate2 == "") {
+                s.assigndate1 = getCurDate();
+                s.assigndate2 = getCurDate();
+            }
+            grid.load({
+                shopname: s.shop, designer: s.design, order_area: s.order_area, org: s.designerorg, date1: s.assigndate1, date2: s.assigndate2, UpDate1: s.UpDate1, UpDate2: s.UpDate2
+            });
+        }
+
+        function onSearchCheckedChanged(e) {
+            var btn = e.sender;
+            var checked = btn.getChecked();
+            var text = btn.getText();
+            var form = new mini.Form("#ctl00_f_all");
+            var data = form.getData(true, false);
+            var s = data;
+
+            if (checked) {
+                var stime = "";
+                var etime = "";
+                var timearr = [];
+                if (text == "本日") {
+                    var day = getCurDate();
+                    timearr.push(day);
+                    timearr.push(day);
+                }
+                else if (text == "本周") {
+                    timearr = getWeekStartAndEnd();
+                }
+                else if (text == "本月") {
+                    timearr = getMonthStartAndEnd();
+                }
+                stime = timearr[0];
+                etime = timearr[1];
+                console.log(text, stime, etime)
+                grid.load({
+                    shopname: s.shop, designer: s.design, order_area: s.order_area, org: s.designerorg, date1: stime, date2: etime, UpDate1: s.UpDate1, UpDate2: s.UpDate2, dateType: text
+                });
+            }
+
+            mini.get("aSearchMonth").setChecked(false);
+            mini.get("aSearchDay").setChecked(false);
+            mini.get("aSearchWeek").setChecked(false);
+        }
+
+        //查询本日
+        function onSearchToday() {
+            var form = new mini.Form("#ctl00_f_all");
+            var data = form.getData(true, false);
+            var s = data;
+            var DateType = "Today";
+            grid.load({
+                shopname: s.shop, designer: s.designer, order_area: s.order_area, org: s.designerorg, dateType: DateType
+            });
+        }
+        //查询本周
+        function onSearchThisWeek() {
+            var form = new mini.Form("#ctl00_f_all");
+            var data = form.getData(true, false);
+            var s = data;
+            var DateType = "Week";
+            grid.load({
+                shopname: s.shop, designer: s.designer, order_area: s.order_area, org: s.designerorg, dateType: DateType
+            });
+        }
+        //查询本月
+        function onSearchThisMonth() {
+            var form = new mini.Form("#ctl00_f_all");
+            var data = form.getData(true, false);
+            var s = data;
+            var DateType = "Month";
+            grid.load({
+                shopname: s.shop, designer: s.designer, order_area: s.order_area, org: s.designerorg, dateType: DateType
+            });
+        }
+
+        //清除查询内容
+        function clearFn() {
+            //$("#ctl00_f_all").find("input").val("");
+            var form = new mini.Form("#ctl00_f_all");
+            form.clear();
+
+            mini.get("aSearchMonth").setChecked(false);
+            mini.get("aSearchDay").setChecked(false);
+            mini.get("aSearchWeek").setChecked(false);
+        }
+
+
+        function onDrawSummaryCell(e) {
+            var result = e.result;
+            var rdata = result.data;
+            //console.log("result:", result);
+            var totalPayment = 0;
+            var allOrder = 0;
+            var wait = 0;
+            var designing = 0;
+            var finish = 0;
+            var rateAp = 0;
+            var payPrice = 0;
+            for (var item of rdata) {
+                totalPayment += parseFloat(item.Amount);
+                allOrder += parseInt(item.AllOrder);
+                wait += parseInt(item.WaitDesign);
+                designing += parseInt(item.Designing);
+                finish += parseInt(item.DesignFinish);
+                rateAp += parseFloat(item.FinalizationRate);
+
+                payPrice += parseFloat(item.PayPrice);
+            }
+            var grid = e.sender;
+            totalPayment = Math.floor(totalPayment * 100) / 100;
+            rateAp = Math.floor(rateAp / rdata.length * 100) / 100;
+            //客户端汇总计算
+            if (e.field == "Amount") {
+                var s = "<span style='color:Brown;'>"
+                s += "合计:" + totalPayment
+                    + "</span>";
+                e.cellHtml = s;
+            }
+            else if (e.field == "AllOrder") {
+                var s = "<span style='color:Brown;'>"
+                s += "合计:" + allOrder
+                    + "</span>";
+                e.cellHtml = s;
+            }
+            else if (e.field == "WaitDesign") {
+                var s = "<span style='color:Brown;'>"
+                s += "合计:" + wait
+                    + "</span>";
+                e.cellHtml = s;
+            }
+            else if (e.field == "Designing") {
+                var s = "<span style='color:Brown;'>"
+                s += "合计:" + designing
+                    + "</span>";
+                e.cellHtml = s;
+            }
+            else if (e.field == "DesignFinish") {
+                var s = "<span style='color:Brown;'>"
+                s += "合计:" + finish
+                    + "</span>";
+                e.cellHtml = s;
+            }
+            else if (e.field == "FinalizationRate") {
+                var s = "<span style='color:Brown;'>"
+                s += "平均:" + rateAp
+                    + "</span>";
+                e.cellHtml = s;
+            }
+            else if (e.field == "PayPrice") {
+                var s = "<span style='color:Brown;'>"
+                s += "合计:" + payPrice
+                    + "</span>";
+                e.cellHtml = s;
+            }
+        }
+        function onFinalizationRate(e) {
+            var record = e.record;
+            var FinalizationRate = record.FinalizationRate;
+            if (FinalizationRate == '0') {
+                var html = "<div style=\"display:flex;flex-direction:column;\">";
+                html += ("<div>" + 0 + "</div>");
+                html += "</div>";
+                return html;
+            }
+            var total = 0 ? "0%" : (Math.round(FinalizationRate / record.FinalizationRateSum * 10000) / 100.00) + "%";
+            var html = "<div style=\"display:flex;flex-direction:column;\">";
+            html += ("<div>" + total + "</div>");
+            html += "</div>";
+            return html;
+        }
+        function onAvgWeekRate(e) {
+            var record = e.record;
+            var AvgWeekRate = record.AvgWeekRate;
+            if (AvgWeekRate == '0') {
+                var html = "<div style=\"display:flex;flex-direction:column;\">";
+                html += ("<div>" + 0 + "</div>");
+                html += "</div>";
+                return html;
+            }
+            var total = 0 ? "0%" : (Math.round(AvgWeekRate / record.AvgWeekRateSum * 10000) / 100.00) + "%";
+            var html = "<div style=\"display:flex;flex-direction:column;\">";
+            html += ("<div>" + total + "</div>");
+            html += "</div>";
+            return html;
+        }
+        function onAvgRate(e) {
+            var record = e.record;
+            var AvgRate = record.AvgRate;
+            if (AvgRate == '0') {
+                var html = "<div style=\"display:flex;flex-direction:column;\">";
+                html += ("<div>" + 0 + "</div>");
+                html += "</div>";
+                return html;
+            }
+            var total = 0 ? "0%" : (Math.round(AvgRate / record.AvgRateSum * 10000) / 100.00) + "%";
+            var html = "<div style=\"display:flex;flex-direction:column;\">";
+            html += ("<div>" + total + "</div>");
+            html += "</div>";
+            return html;
+        }
+        function gettingData() {
+            postAjax("new_Designer_Rate", "", function (data) {
+
+            });
+        }
+    </script>
+</asp:Content>
+<asp:Content ID="Content2" ContentPlaceHolderID="btn" runat="Server">
+    <a class="mini-button mini-button-primary" iconcls="icon-folder" onclick="exportFn()">导出</a>
+    <a class="mini-button mini-button-primary" onclick="gettingData()">获取当日数据</a>
+</asp:Content>
+<asp:Content ID="Content4" ContentPlaceHolderID="content" runat="Server">
+    <div class="mini-fit">
+        <div id="m_grid" class="mini-datagrid" sortmode="client" style="width: 100%; height: 100%;" showemptytext="true" showsummaryrow="true" showpager="false" showsummaryrow="false" ondrawsummarycell="onDrawSummaryCell"
+            emptytext="暂无记录,请选择部门" url="../handler/sync.ashx?t=get_erp_designer_gather_rate3">
+            <div property="columns">
+                <div field="OrgName" width="60" align="center" headeralign="center">团队</div>
+                <div field="name" width="60" align="center" headeralign="center">设计师</div>
+                <div field="sumNum" datatype="int" width="60" align="center" headeralign="center">总数量</div>
+                <div field="onFinalizationRateSum" datatype="string" width="60" align="center" headeralign="center">定稿率</div>
+                <div field="refund" datatype="string" width="60" align="center" headeralign="center">退款数量</div>
+                <div field="designTime" datatype="string" width="60" align="center" headeralign="center">上传文件</div>
+            </div>
+        </div>
+    </div>
+</asp:Content>
+

+ 37 - 0
Web/ECharts/DesignMulitRate.aspx.cs

@@ -0,0 +1,37 @@
+using SiteCore;
+using System;
+
+public partial class ECharts_DesignMulitRate : BasePage
+{
+    protected override void OnPreInit(EventArgs e)
+    {
+        _repTitle = "定稿率";
+        PmTag = "designmulitrate";
+        //_selfCheckPermission = true;
+        _filterItem = "assign_time,designerBatch_org";
+        _keyFilterVisible = false;
+        _addVisible = false;
+        _filterDateBtn = false;
+        _filterDateBtn = true;
+    }
+
+    protected void Page_Load(object sender, EventArgs e)
+    {
+        if (!IsPostBack)
+        {
+            //StringBuilder sql = new StringBuilder();
+            //sql.AppendFormat("select * from s_runinfotype");
+            //DataSet ds = DbHelper.DbConn.ExecuteDataset(sql.ToString());
+            //DataTable dt = ds.Tables[0];
+            //AppendScript("tData=" + JsonString.DataTable2Json(dt) + ";");
+
+            //selType.DataSource = dt;
+            //selType.DataValueField = "ID";
+            //selType.DataTextField = "Name";
+            //selType.DataBind();
+        }
+        //foreach (DataRow dr in dt.Rows)
+        //{
+        //}
+    }
+}

+ 4 - 0
Web/MasterPage/ErpView.master

@@ -312,6 +312,10 @@
                 <label>设计部门</label>
                 <input id="txtSearchDesignerOrg" name="designerorg" shownullitem="true" allowinput="true" class="mini-combobox inp_middle" url="../handler/sync.ashx?t=get_sel_design_org" value="" textfield="name" valuefield="id" />
             </div>
+            <div class="filter_item" id="f_designerBatch_org" runat="server" visible="false">
+                <label>设计部门</label>
+                <input id="txtSearchBatchDesignerOrg" name="designerorg" multiselect="true" shownullitem="true" allowinput="true" class="mini-combobox inp_middle" url="../handler/sync.ashx?t=get_sel_design_org" value="" textfield="name" valuefield="id" />
+            </div>
             <div class="filter_item" id="f_customer_org" runat="server" visible="false">
                 <label>客服部门</label>
                 <input id="txtSearchCustomerOrg" name="customerorg" shownullitem="true" allowinput="true" class="mini-combobox inp_middle" url="../handler/sync.ashx?t=get_sel_customer_org" value="" textfield="name" valuefield="id" />

+ 1 - 0
Web/MasterPage/ErpView.master.cs

@@ -107,6 +107,7 @@ public partial class MasterPage_ErpView : System.Web.UI.MasterPage
                 if (fArr.Contains("commission")) f_commission.Visible = true; //佣金
                 if (fArr.Contains("afterstate")) f_afterstate.Visible = true; //售后状态
                 if (fArr.Contains("designer_org")) f_designer_org.Visible = true; //设计部门
+                if (fArr.Contains("designerBatch_org")) f_designerBatch_org.Visible = true; //设计部门
                 if (fArr.Contains("customer_org")) f_customer_org.Visible = true; //客服部门
 
                 if (fArr.Contains("responsible_man")) f_responsible_man.Visible = true; //责任人