|
|
@@ -55,6 +55,106 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
55
|
55
|
return Error("导出失败");
|
|
56
|
56
|
}
|
|
57
|
57
|
}
|
|
|
58
|
+ public class market
|
|
|
59
|
+ {
|
|
|
60
|
+ public string name;
|
|
|
61
|
+ public List<marketList> marketlist;
|
|
|
62
|
+ }
|
|
|
63
|
+ public class marketList
|
|
|
64
|
+ {
|
|
|
65
|
+ public string name;
|
|
|
66
|
+ public string number;
|
|
|
67
|
+ }
|
|
|
68
|
+ // 反馈类型明细表
|
|
|
69
|
+ public ActionResult GetTypelist(string stime, string endtime)
|
|
|
70
|
+ {
|
|
|
71
|
+ string sql = $" F_IsDelete=0";
|
|
|
72
|
+ if (stime != null && stime.Trim() != "")
|
|
|
73
|
+ {
|
|
|
74
|
+ sql += " and CONVERT(varchar , F_CreateOn, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
|
|
|
75
|
+ }
|
|
|
76
|
+ if (endtime != null && endtime.Trim() != "")
|
|
|
77
|
+ {
|
|
|
78
|
+ sql += " and CONVERT(varchar , F_CreateOn, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
|
|
|
79
|
+ }
|
|
|
80
|
+ sql += $" and T_Wo_WorkOrder.F_State in ( " + (int)EnumWorkOrderState.finish + "," + (int)EnumWorkOrderState.evaluate + ") "; ;
|
|
|
81
|
+ List<market> markets = new List<market>();
|
|
|
82
|
+ for (int i=0;i<5;i++)
|
|
|
83
|
+ {
|
|
|
84
|
+ market model = new market();
|
|
|
85
|
+ model.marketlist = new List<marketList>();
|
|
|
86
|
+ switch (i )
|
|
|
87
|
+ {
|
|
|
88
|
+ case 0:
|
|
|
89
|
+ model.name = "合计";
|
|
|
90
|
+ break;
|
|
|
91
|
+ case 1:
|
|
|
92
|
+ model.name = "咨询";
|
|
|
93
|
+ break;
|
|
|
94
|
+ case 2:
|
|
|
95
|
+ model.name = "投诉";
|
|
|
96
|
+ break;
|
|
|
97
|
+ case 3:
|
|
|
98
|
+ model.name = "抽检";
|
|
|
99
|
+ break;
|
|
|
100
|
+ case 4:
|
|
|
101
|
+ model.name = "建议";
|
|
|
102
|
+ break;
|
|
|
103
|
+
|
|
|
104
|
+ }
|
|
|
105
|
+ for (int j = 0; j < 9; j++)
|
|
|
106
|
+ {
|
|
|
107
|
+ marketList brand = new marketList();
|
|
|
108
|
+ switch (j)
|
|
|
109
|
+ {
|
|
|
110
|
+ case 0:
|
|
|
111
|
+ brand.name = "新乡";
|
|
|
112
|
+
|
|
|
113
|
+ break;
|
|
|
114
|
+ case 1:
|
|
|
115
|
+ brand.name = "九江";
|
|
|
116
|
+ break;
|
|
|
117
|
+ case 2:
|
|
|
118
|
+ brand.name = "新疆";
|
|
|
119
|
+ break;
|
|
|
120
|
+ case 3:
|
|
|
121
|
+ brand.name = "东北";
|
|
|
122
|
+ break;
|
|
|
123
|
+ case 4:
|
|
|
124
|
+ brand.name = "小计";
|
|
|
125
|
+ brand.number = woBLL.GetModelList(sql ).Count.ToString ();
|
|
|
126
|
+ break;
|
|
|
127
|
+ case 5:
|
|
|
128
|
+ brand.name = "即时办结率";
|
|
|
129
|
+ int a = woBLL.GetModelList(sql + "and F_DealType='当即办理'").Count;
|
|
|
130
|
+ int b = woBLL.GetModelList(sql).Count;
|
|
|
131
|
+ brand.number = string.Format("{0:f2}%", a / b * 100);
|
|
|
132
|
+ break;
|
|
|
133
|
+ case 6:
|
|
|
134
|
+ brand.name = "超期数量";
|
|
|
135
|
+ brand.number = woBLL.GetModelList(sql + "and F_IsOver=1").Count.ToString();
|
|
|
136
|
+ break;
|
|
|
137
|
+ case 7:
|
|
|
138
|
+ brand.name = "满意数量";
|
|
|
139
|
+ brand.number = woBLL.GetModelList(sql + "and F_VisitResult in('非常满意','满意')").Count.ToString();
|
|
|
140
|
+ break;
|
|
|
141
|
+ case 8:
|
|
|
142
|
+ brand.name = "不满意数量";
|
|
|
143
|
+ brand.number = woBLL.GetModelList(sql + "and F_VisitResult='不满意'").Count.ToString();
|
|
|
144
|
+ break;
|
|
|
145
|
+ }
|
|
|
146
|
+ if (j <4)
|
|
|
147
|
+ {
|
|
|
148
|
+ brand.number = woBLL.GetModelList(sql + "and F_SalesBase='" + brand.name.Trim() + "'").Count.ToString() ;
|
|
|
149
|
+ }
|
|
|
150
|
+
|
|
|
151
|
+
|
|
|
152
|
+ model.marketlist.Add(brand);
|
|
|
153
|
+ }
|
|
|
154
|
+ markets.Add(model);
|
|
|
155
|
+ }
|
|
|
156
|
+ return Success(null);
|
|
|
157
|
+ }
|
|
58
|
158
|
/// <summary>
|
|
59
|
159
|
/// 导出集团市场问题反馈汇总表
|
|
60
|
160
|
/// </summary>
|
|
|
@@ -477,6 +577,7 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
477
|
577
|
// string str4 = " select F_Id from T_Wo_QuestionManage where F_ParentId in(" + str3 + ")";
|
|
478
|
578
|
return str;
|
|
479
|
579
|
}
|
|
|
580
|
+
|
|
480
|
581
|
/// <summary>
|
|
481
|
582
|
/// 化肥产品投诉明细表
|
|
482
|
583
|
/// </summary>
|
|
|
@@ -912,7 +1013,10 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
912
|
1013
|
public class Feedback
|
|
913
|
1014
|
{
|
|
914
|
1015
|
public string name;
|
|
915
|
|
- public string number;
|
|
|
1016
|
+ public int daynumber;
|
|
|
1017
|
+ public int mounthnumber;
|
|
|
1018
|
+ public int Totalnumber;
|
|
|
1019
|
+ public string Proportion;
|
|
916
|
1020
|
}
|
|
917
|
1021
|
|
|
918
|
1022
|
public class Complainthandling
|
|
|
@@ -941,7 +1045,7 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
941
|
1045
|
}
|
|
942
|
1046
|
public class BigDate
|
|
943
|
1047
|
{
|
|
944
|
|
- public List<Template> type;//反馈类型
|
|
|
1048
|
+ public List<Template> salesBase;//反馈类型
|
|
945
|
1049
|
public List<Template> product;//产品
|
|
946
|
1050
|
public List<Template> channel;//渠道
|
|
947
|
1051
|
public List<Template> state;//工单状态
|
|
|
@@ -1034,10 +1138,7 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
1034
|
1138
|
Months = Months + 1;
|
|
1035
|
1139
|
}
|
|
1036
|
1140
|
}
|
|
1037
|
|
- if (!string .IsNullOrEmpty (salesBase ))
|
|
1038
|
|
- {
|
|
1039
|
|
- sql += $" and F_SalesBase='"+ salesBase.Trim()+"'";
|
|
1040
|
|
- }
|
|
|
1141
|
+
|
|
1041
|
1142
|
|
|
1042
|
1143
|
string smouth= Convert.ToDateTime(DateTime.Parse(stime).AddDays(1 - DateTime.Parse(stime).Day).AddMonths(-Months).ToLongDateString()).ToString("yyyy-MM-dd");
|
|
1043
|
1144
|
string endmouth = Convert.ToDateTime(DateTime.Parse(endtime).AddDays(1 - DateTime.Parse(endtime).Day).AddMonths(-Months).ToLongDateString()).ToString("yyyy-MM-dd");
|
|
|
@@ -1050,11 +1151,15 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
1050
|
1151
|
string lastmouth = $" and datediff(day,F_CreateOn,'{smouth}')<=0 and datediff(day,F_CreateOn,'{endmouth}')>=0 ";
|
|
1051
|
1152
|
string lastyear= $" and datediff(day,F_CreateOn,'{syear}')<=0 and datediff(day,F_CreateOn,'{endyear}')>=0 ";
|
|
1052
|
1153
|
BigDate model = new BigDate();
|
|
1053
|
|
- model.type = new List<Template>();
|
|
|
1154
|
+ model.salesBase = new List<Template>();
|
|
1054
|
1155
|
string strType = "";
|
|
1055
|
|
- if (type > 0)
|
|
|
1156
|
+ if (type >0)
|
|
|
1157
|
+ {
|
|
|
1158
|
+ sql += $"and F_Type = " + type;
|
|
|
1159
|
+ }
|
|
|
1160
|
+ if (!string.IsNullOrEmpty(salesBase))
|
|
1056
|
1161
|
{
|
|
1057
|
|
- strType = $"and F_Type = " + type;
|
|
|
1162
|
+ strType = $" and F_SalesBase='" + salesBase.Trim() + "'";
|
|
1058
|
1163
|
}
|
|
1059
|
1164
|
string strChannel = "";
|
|
1060
|
1165
|
if (area > 0 || branch > 0 || !string.IsNullOrEmpty(channel))
|
|
|
@@ -1077,24 +1182,24 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
1077
|
1182
|
template.name = "合计";
|
|
1078
|
1183
|
break;
|
|
1079
|
1184
|
case 1:
|
|
1080
|
|
- template.name = "咨询";
|
|
|
1185
|
+ template.name = "新乡";
|
|
1081
|
1186
|
break;
|
|
1082
|
1187
|
case 2:
|
|
1083
|
|
- template.name = "投诉";
|
|
|
1188
|
+ template.name = "新疆";
|
|
1084
|
1189
|
break;
|
|
1085
|
1190
|
case 3:
|
|
1086
|
|
- template.name = "抽检";
|
|
|
1191
|
+ template.name = "九江";
|
|
1087
|
1192
|
break;
|
|
1088
|
1193
|
case 4:
|
|
1089
|
|
- template.name = "建议";
|
|
|
1194
|
+ template.name = "东北";
|
|
1090
|
1195
|
break;
|
|
1091
|
1196
|
|
|
1092
|
1197
|
}
|
|
1093
|
1198
|
if (i>0 )
|
|
1094
|
1199
|
{
|
|
1095
|
|
- sqltype = $"and F_Type = " + i;
|
|
|
1200
|
+ sqltype = $"and F_SalesBase = '"+ template.name + "'" ;
|
|
1096
|
1201
|
}
|
|
1097
|
|
- model.type.Add(ReturenTemplate(template,sql + sqltype+ strChannel+ strCategory, time , lastmouth, lastyear));
|
|
|
1202
|
+ model.salesBase .Add(ReturenTemplate(template,sql + sqltype+ strChannel+ strCategory, time , lastmouth, lastyear));
|
|
1098
|
1203
|
}
|
|
1099
|
1204
|
#endregion
|
|
1100
|
1205
|
#region 产品
|
|
|
@@ -1471,46 +1576,18 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
1471
|
1576
|
/// 市场反馈一览表
|
|
1472
|
1577
|
/// </summary>
|
|
1473
|
1578
|
/// <returns></returns>
|
|
1474
|
|
- public ActionResult GetFeedbacklList(string stime, string endtime, int type=0)
|
|
|
1579
|
+ public ActionResult GetFeedbacklList()
|
|
1475
|
1580
|
{
|
|
1476
|
|
- string sql = $" and F_IsDelete=0";
|
|
|
1581
|
+ string sql = $" F_IsDelete=0";
|
|
1477
|
1582
|
DataTable dt = new DataTable();
|
|
1478
|
1583
|
#region 筛选条件
|
|
1479
|
|
- if (stime != null && stime.Trim() != "")
|
|
1480
|
|
- {
|
|
1481
|
|
- sql += " and CONVERT(varchar , F_CreateOn, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
|
|
1482
|
|
- }
|
|
1483
|
|
- if (endtime != null && endtime.Trim() != "")
|
|
1484
|
|
- {
|
|
1485
|
|
- sql += " and CONVERT(varchar , F_CreateOn, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
|
|
1486
|
|
- }
|
|
1487
|
1584
|
List<Feedback> modelList = new List<Feedback>(5);
|
|
|
1585
|
+ string smonthtime = DateTime.Now.Date.ToString("yyyy-MM-01 00:00:00");
|
|
|
1586
|
+ string sdaytime = DateTime.Now.Date.ToString("yyyy-MM-dd 00:00:00");
|
|
|
1587
|
+ string endtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
1488
|
1588
|
for (int i = 1; i <= 5; i++)
|
|
1489
|
1589
|
{
|
|
1490
|
1590
|
Feedback model = new Feedback();
|
|
1491
|
|
- if (type >0)
|
|
1492
|
|
- {
|
|
1493
|
|
- switch (i)
|
|
1494
|
|
- {
|
|
1495
|
|
- case 1:
|
|
1496
|
|
- model.name = "新乡";
|
|
1497
|
|
- break;
|
|
1498
|
|
- case 2:
|
|
1499
|
|
- model.name = "九江";
|
|
1500
|
|
- break;
|
|
1501
|
|
- case 3:
|
|
1502
|
|
- model.name = "新疆";
|
|
1503
|
|
- break;
|
|
1504
|
|
- case 4:
|
|
1505
|
|
- model.name = "东北";
|
|
1506
|
|
- break;
|
|
1507
|
|
- case 5:
|
|
1508
|
|
- model.name = "合计";
|
|
1509
|
|
- break;
|
|
1510
|
|
- }
|
|
1511
|
|
- }
|
|
1512
|
|
- else
|
|
1513
|
|
- {
|
|
1514
|
1591
|
switch (i)
|
|
1515
|
1592
|
{
|
|
1516
|
1593
|
case 1:
|
|
|
@@ -1529,49 +1606,24 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
1529
|
1606
|
model.name = "合计";
|
|
1530
|
1607
|
break;
|
|
1531
|
1608
|
}
|
|
1532
|
|
- }
|
|
1533
|
|
-
|
|
1534
|
|
- string strxy = "";
|
|
1535
|
|
- if (type >0)
|
|
|
1609
|
+ float a= workOrder.GetModelList(sql ).Count;
|
|
|
1610
|
+ if (i <5)
|
|
1536
|
1611
|
{
|
|
1537
|
|
- if (i < 5)
|
|
1538
|
|
- {
|
|
1539
|
|
- if (type < 5)
|
|
1540
|
|
- {
|
|
1541
|
|
- strxy = "select F_ID from T_Wo_WorkOrder where T_Wo_WorkOrder.F_State in ( " + (int)EnumWorkOrderState.finish + "," + (int)EnumWorkOrderState.evaluate + ") and F_SalesBase like '%" + model.name.Trim() + "%'" + sql + $"and F_Type = " + type; ;
|
|
1542
|
|
- }
|
|
1543
|
|
- else
|
|
1544
|
|
- {
|
|
1545
|
|
- strxy = "select F_ID from T_Wo_WorkOrder where T_Wo_WorkOrder.F_State in ( " + (int)EnumWorkOrderState.finish + "," + (int)EnumWorkOrderState.evaluate + ") and F_SalesBase like '%" + model.name.Trim() + "%'" + sql;
|
|
1546
|
|
- }
|
|
1547
|
|
- }
|
|
1548
|
|
- else
|
|
1549
|
|
- {
|
|
1550
|
|
- if (type < 5)
|
|
1551
|
|
- {
|
|
1552
|
|
- strxy = "select F_ID from T_Wo_WorkOrder where T_Wo_WorkOrder.F_State in ( " + (int)EnumWorkOrderState.finish + "," + (int)EnumWorkOrderState.evaluate + ") " + sql + $"and F_Type = " + type; ;
|
|
1553
|
|
- }
|
|
1554
|
|
- else
|
|
1555
|
|
- {
|
|
1556
|
|
- strxy = "select F_ID from T_Wo_WorkOrder where T_Wo_WorkOrder.F_State in ( " + (int)EnumWorkOrderState.finish + "," + (int)EnumWorkOrderState.evaluate + ") " + sql;
|
|
1557
|
|
- }
|
|
1558
|
|
- }
|
|
|
1612
|
+
|
|
|
1613
|
+ model .daynumber = workOrder.GetModelList(sql + $" and datediff(day,F_CreateOn,'{sdaytime}')<=0 and datediff(day,F_CreateOn,'{endtime}')>=0 " + "and F_Type=" + i ).Count;
|
|
|
1614
|
+ model.mounthnumber = workOrder.GetModelList(sql + $" and datediff(day,F_CreateOn,'{smonthtime}')<=0 and datediff(day,F_CreateOn,'{endtime}')>=0 " + "and F_Type=" + i).Count;
|
|
|
1615
|
+ model.Totalnumber = workOrder.GetModelList(sql + "and F_Type=" + i).Count;
|
|
|
1616
|
+ model.Proportion = string.Format("{0:f2}%", model.Totalnumber / a*100);
|
|
1559
|
1617
|
}
|
|
1560
|
1618
|
else
|
|
1561
|
1619
|
{
|
|
1562
|
|
- if (i <5)
|
|
1563
|
|
- {
|
|
1564
|
|
- strxy = "select F_ID from T_Wo_WorkOrder where T_Wo_WorkOrder.F_State in ( " + (int)EnumWorkOrderState.finish + "," + (int)EnumWorkOrderState.evaluate + ") and F_Type =" + i + " " + sql;
|
|
1565
|
|
- }
|
|
1566
|
|
- else
|
|
1567
|
|
- {
|
|
1568
|
|
- strxy = "select F_ID from T_Wo_WorkOrder where T_Wo_WorkOrder.F_State in ( " + (int)EnumWorkOrderState.finish + "," + (int)EnumWorkOrderState.evaluate + ") " + sql;
|
|
1569
|
|
- }
|
|
1570
|
|
-
|
|
|
1620
|
+ model.daynumber = workOrder.GetModelList(sql + $" and datediff(day,F_CreateOn,'{sdaytime}')<=0 and datediff(day,F_CreateOn,'{endtime}')>=0 " ).Count;
|
|
|
1621
|
+ model.mounthnumber = workOrder.GetModelList(sql + $" and datediff(day,F_CreateOn,'{smonthtime}')<=0 and datediff(day,F_CreateOn,'{endtime}')>=0 ").Count;
|
|
|
1622
|
+ model.Totalnumber = workOrder.GetModelList(sql).Count;
|
|
|
1623
|
+ model.Proportion = string.Format("{0:f2}%", model.Totalnumber / a * 100);
|
|
1571
|
1624
|
}
|
|
1572
|
1625
|
|
|
1573
|
|
- DataTable dtxy = DbHelperSQL.Query(strxy).Tables[0];
|
|
1574
|
|
- model.number = dtxy.Rows.Count.ToString();
|
|
|
1626
|
+
|
|
1575
|
1627
|
modelList.Add(model);
|
|
1576
|
1628
|
}
|
|
1577
|
1629
|
#endregion
|