|
|
@@ -1702,7 +1702,7 @@ namespace SiteCore.Handler
|
|
|
}
|
|
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
|
- sql.AppendFormat("SELECT o.AfterSaleUserId AS UserId, u.name AS UserName, COUNT(*) AS Total, COUNT(CASE WHEN o.AfterSaleState IN (2, 3) THEN 1 END) AS InProgress, COUNT(CASE WHEN o.AfterSaleState >= 4 THEN 1 END) AS Completed,COUNT ( CASE WHEN o.AfterSaleBackReason != '' THEN 1 END ) AS back, SUM ( a.ChangeNum ) AS ChangeNum ,SUM ( a.ReprintOut ) AS ReprintOut,SUM ( a.PreTimeOut ) AS PreTimeOut,SUM ( a.DisagreeTimeOut ) AS DisagreeTime ,COUNT ( CASE WHEN a.IsBad > 0 THEN 1 END ) AS isBad,COUNT ( CASE WHEN a.IsComplain > 0 THEN 1 END ) AS isComplain FROM CE_ErpTradeCell o LEFT JOIN Ce_ErpTradeAfterSaleExtend a ON a.tid = o.ctid INNER JOIN CE_ErpUser u ON o.AfterSaleUserId = u.ID WHERE o.AfterSaleState >= 1 ");
|
|
|
+ sql.AppendFormat("SELECT o.AfterSaleUserId AS UserId, u.name AS UserName, COUNT(*) AS Total, SUM(CASE WHEN TextResult in ('联系不上客户','待处理') THEN 1 ELSE 0 END) AS InProgress, SUM(CASE WHEN TextResult in ('联系不上客户','待处理') THEN 0 ELSE 1 END) AS Completed,COUNT ( CASE WHEN o.AfterSaleBackReason != '' THEN 1 END ) AS back, SUM ( a.ChangeNum ) AS ChangeNum ,SUM ( a.ReprintOut ) AS ReprintOut,SUM ( a.PreTimeOut ) AS PreTimeOut,SUM ( a.DisagreeTimeOut ) AS DisagreeTime ,COUNT ( CASE WHEN a.IsBad > 0 THEN 1 END ) AS isBad,COUNT ( CASE WHEN a.IsComplain > 0 THEN 1 END ) AS isComplain FROM CE_ErpTradeCell o LEFT JOIN Ce_ErpTradeAfterSaleExtend a ON a.tid = o.ctid INNER JOIN CE_ErpUser u ON o.AfterSaleUserId = u.ID WHERE o.AfterSaleState >= 1 ");
|
|
|
if (date1.Length > 0)
|
|
|
{
|
|
|
sql.AppendFormat(" AND o.HandleTime >= '{0}' AND o.HandleTime < '{1}'", date1, date2);
|
|
|
@@ -2036,6 +2036,95 @@ namespace SiteCore.Handler
|
|
|
|
|
|
}
|
|
|
|
|
|
+ sql.AppendFormat("SELECT o.AfterSaleReason, COUNT ( * ) AS total ,COUNT ( CASE WHEN a.IsBad > 0 THEN 1 END ) AS isBad,COUNT ( CASE WHEN a.IsComplain > 0 THEN 1 END ) AS isComplain FROM CE_ErpTradeCell o LEFT JOIN Ce_ErpTradeAfterSaleExtend a ON o.ctid = a.tid WHERE o.AfterSaleState >= 1 {0} GROUP BY o.AfterSaleReason", sqlDate);
|
|
|
+ DataTable dtafter = DbHelper.DbConn.ExecuteDataset(sql.ToString()).Tables[0];
|
|
|
+
|
|
|
+ DataTable dt = new DataTable();
|
|
|
+ dt.Columns.Add(new DataColumn("AfterSaleReason1", typeof(string)));
|
|
|
+ dt.Columns.Add(new DataColumn("AfterSaleReason2", typeof(string)));
|
|
|
+ dt.Columns.Add(new DataColumn("AfterSaleReason3", typeof(string)));
|
|
|
+ dt.Columns.Add(new DataColumn("AfterSaleReason4", typeof(string)));
|
|
|
+ dt.Columns.Add(new DataColumn("total", typeof(string)));
|
|
|
+ dt.Columns.Add(new DataColumn("rate", typeof(string)));
|
|
|
+ dt.Columns.Add(new DataColumn("isBad", typeof(string)));
|
|
|
+ dt.Columns.Add(new DataColumn("isComplain", typeof(string)));
|
|
|
+ DataRow dr_he = dt.NewRow();
|
|
|
+ dr_he[0] = "合计";
|
|
|
+ dr_he[1] = 0;
|
|
|
+ dr_he[2] = 0;
|
|
|
+ dr_he[3] = 0;
|
|
|
+ dr_he[4] = 0;
|
|
|
+ dr_he[5] = 0;
|
|
|
+ dr_he[6] = 0;
|
|
|
+ dr_he[7] = 0;
|
|
|
+ foreach (DataRow row in dtafter.Rows)
|
|
|
+ {
|
|
|
+ string reason = row["AfterSaleReason"].ToString();
|
|
|
+ string[] reason_list = reason.Split(new char[] { '|' });
|
|
|
+ DataRow dr = dt.NewRow();
|
|
|
+ if (reason_list.Length > 0)
|
|
|
+ {
|
|
|
+ dr[0] = reason_list[0];
|
|
|
+ }
|
|
|
+ if (reason_list.Length > 1)
|
|
|
+ {
|
|
|
+ dr[1] = reason_list[1];
|
|
|
+ }
|
|
|
+ if (reason_list.Length > 2)
|
|
|
+ {
|
|
|
+ dr[2] = reason_list[2];
|
|
|
+ }
|
|
|
+ if (reason_list.Length > 3)
|
|
|
+ {
|
|
|
+ dr[3] = reason_list[3];
|
|
|
+ }
|
|
|
+ dr[4] = row["total"];
|
|
|
+ dr[5] = 0;
|
|
|
+ dr[6] = row["isBad"];
|
|
|
+ dr[7] = row["isComplain"];
|
|
|
+
|
|
|
+ dt.Rows.Add(dr);
|
|
|
+ dr_he[4] = Convert.ToDecimal(dr_he[4]) + Convert.ToDecimal(dr[4]);
|
|
|
+ }
|
|
|
+ foreach (DataRow row in dt.Rows)
|
|
|
+ {
|
|
|
+ row[5] = Math.Round(Math.Round(Convert.ToDecimal(row[4]) / Convert.ToDecimal(dr_he[4]), 4) * 100, 2);
|
|
|
+ }
|
|
|
+ dr_he[5] = 100;
|
|
|
+ DataView dv = new DataView(dt);
|
|
|
+ //dv.Sort = "AllOrder desc";
|
|
|
+ DataTable dtNew = dv.ToTable();
|
|
|
+ writeGridDataTableJson(dtNew.Rows.Count, dtNew);
|
|
|
+
|
|
|
+ }
|
|
|
+ public void get_erp_aftersale_product_reason_gather()
|
|
|
+ {
|
|
|
+ string date1 = GetPostString("date1");
|
|
|
+ string date2 = GetPostString("date2");
|
|
|
+ string pay_date1 = GetPostString("pay_date1");
|
|
|
+ string pay_date2 = GetPostString("pay_date2");
|
|
|
+
|
|
|
+ if (date1.Length <= 0 && pay_date1.Length <= 0)
|
|
|
+ {
|
|
|
+ pay_date1 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0).ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
+ pay_date2 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59).ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
+ }
|
|
|
+
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+
|
|
|
+ StringBuilder sqlDate = new StringBuilder();
|
|
|
+
|
|
|
+ if (date1.Length > 0)
|
|
|
+ {
|
|
|
+ sqlDate.AppendFormat("and o.HandleTime >= '{0}' AND o.HandleTime < '{1}'", date1, date2);
|
|
|
+
|
|
|
+ }
|
|
|
+ if (pay_date1.Length > 0)
|
|
|
+ {
|
|
|
+ sqlDate.AppendFormat("and o.pay_time >= '{0}' AND o.pay_time < '{1}'", pay_date1, pay_date2);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
sql.AppendFormat("SELECT o.AfterSaleReason,p.PType, COUNT ( * ) AS total ,COUNT ( CASE WHEN a.IsBad > 0 THEN 1 END ) AS isBad,COUNT ( CASE WHEN a.IsComplain > 0 THEN 1 END ) AS isComplain FROM CE_ErpTradeCell o LEFT JOIN CE_ErpProduct p ON o.ProductId = p.id LEFT JOIN Ce_ErpTradeAfterSaleExtend a ON o.ctid = a.tid WHERE o.AfterSaleState >= 1 {0} GROUP BY o.AfterSaleReason,p.PType", sqlDate);
|
|
|
DataTable dtafter = DbHelper.DbConn.ExecuteDataset(sql.ToString()).Tables[0];
|
|
|
|
|
|
@@ -2439,7 +2528,7 @@ namespace SiteCore.Handler
|
|
|
}
|
|
|
}
|
|
|
decimal chushu = Convert.ToDecimal(dr_he[2]) == 0 ? 1 : Convert.ToDecimal(dr_he[2]);
|
|
|
- decimal pgrate = Math.Round(Convert.ToDecimal(dr_he[1]) / Convert.ToDecimal(dr_he[2]), 4);
|
|
|
+ decimal pgrate = Convert.ToDecimal(dr_he[2]) == 0 ? 0 : Math.Round(Convert.ToDecimal(dr_he[1]) / Convert.ToDecimal(dr_he[2]), 4);
|
|
|
dr_he[3] = Math.Round(pgrate * 100, 2);
|
|
|
dt.Rows.Add(dr_he);
|
|
|
DataView dv = new DataView(dt);
|
|
|
@@ -2535,7 +2624,7 @@ namespace SiteCore.Handler
|
|
|
row[4] = Math.Round(Math.Round(Convert.ToDecimal(row[1]) / Convert.ToDecimal(totalAfter), 4) * 100, 2);
|
|
|
}
|
|
|
}
|
|
|
- decimal pgrate = Math.Round(Convert.ToDecimal(dr_he[1]) / Convert.ToDecimal(dr_he[2]), 4);
|
|
|
+ decimal pgrate = Convert.ToDecimal(dr_he[2]) == 0 ? 0 : Math.Round(Convert.ToDecimal(dr_he[1]) / Convert.ToDecimal(dr_he[2]), 4);
|
|
|
dr_he[3] = Math.Round(pgrate * 100, 2);
|
|
|
dt.Rows.Add(dr_he);
|
|
|
DataView dv = new DataView(dt);
|