Просмотр исходного кода

Merge branch 'master' of http://192.168.1.222:3000/yuqian/ZYKJ_API

zhengbingbing лет назад: 8
Родитель
Сommit
29687ffbb4

+ 5 - 2
CallCenterApi/CallCenterApi.BLL/T_CTI_Task.cs

@@ -282,9 +282,12 @@ namespace CallCenterApi.BLL
282 282
                     {
283 283
                         model.DeptId = Convert.ToInt32(dt.Rows[n]["DeptId"].ToString());
284 284
                     }
285
-                    if (dt.Rows[n]["AddAgentId"] != null && dt.Rows[n]["AddAgentId"].ToString() != "")
285
+                    if (dt.Columns.Contains("AddAgentId"))
286 286
                     {
287
-                        model.AddAgentId = Convert.ToInt32(dt.Rows[n]["AddAgentId"].ToString());
287
+                        if (dt.Rows[n]["AddAgentId"] != null && dt.Rows[n]["AddAgentId"].ToString() != "")
288
+                        {
289
+                            model.AddAgentId = Convert.ToInt32(dt.Rows[n]["AddAgentId"].ToString());
290
+                        }
288 291
                     }
289 292
                     modelList.Add(model);
290 293
                 }

+ 15 - 40
CallCenterApi/CallCenterApi.DAL/T_Sys_WorkTimes.cs

@@ -38,27 +38,22 @@ namespace CallCenterApi.DAL
38 38
         {
39 39
             StringBuilder strSql = new StringBuilder();
40 40
             strSql.Append("insert into T_Sys_WorkTimes(");
41
-            strSql.Append("F_WorkStartTimes,F_WorkEndTimes,F_TimeName,F_Remark,F_UserID,F_UserCode,F_UserName,F_CreateOn)");
41
+            strSql.Append("F_WorkStartTimes,F_WorkEndTimes,F_TimeName,F_Remark,F_DeptId)");
42 42
             strSql.Append(" values (");
43
-            strSql.Append("@F_WorkStartTimes,@F_WorkEndTimes,@F_TimeName,@F_Remark,@F_UserID,@F_UserCode,@F_UserName,@F_CreateOn)");
43
+            strSql.Append("@F_WorkStartTimes,@F_WorkEndTimes,@F_TimeName,@F_Remark,@F_DeptId)");
44 44
             strSql.Append(";select @@IDENTITY");
45 45
             SqlParameter[] parameters = {
46 46
                     new SqlParameter("@F_WorkStartTimes", SqlDbType.DateTime),
47 47
                     new SqlParameter("@F_WorkEndTimes", SqlDbType.DateTime),
48 48
                     new SqlParameter("@F_TimeName", SqlDbType.NVarChar,100),
49 49
                     new SqlParameter("@F_Remark", SqlDbType.NVarChar,200),
50
-                    new SqlParameter("@F_UserID", SqlDbType.Int,4),
51
-                    new SqlParameter("@F_UserCode", SqlDbType.VarChar,50),
52
-                    new SqlParameter("@F_UserName", SqlDbType.VarChar,50),
53
-                    new SqlParameter("@F_CreateOn", SqlDbType.DateTime)};
50
+                    new SqlParameter("@F_DeptId", SqlDbType.Int,4)
51
+            };
54 52
             parameters[0].Value = model.F_WorkStartTimes;
55 53
             parameters[1].Value = model.F_WorkEndTimes;
56 54
             parameters[2].Value = model.F_TimeName;
57 55
             parameters[3].Value = model.F_Remark;
58
-            parameters[4].Value = model.F_UserID;
59
-            parameters[5].Value = model.F_UserCode;
60
-            parameters[6].Value = model.F_UserName;
61
-            parameters[7].Value = model.F_CreateOn;
56
+            parameters[4].Value = model.F_DeptId;
62 57
 
63 58
             object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
64 59
             if (obj == null)
@@ -81,30 +76,21 @@ namespace CallCenterApi.DAL
81 76
             strSql.Append("F_WorkEndTimes=@F_WorkEndTimes,");
82 77
             strSql.Append("F_TimeName=@F_TimeName,");
83 78
             strSql.Append("F_Remark=@F_Remark,");
84
-            strSql.Append("F_UserID=@F_UserID,");
85
-            strSql.Append("F_UserCode=@F_UserCode,");
86
-            strSql.Append("F_UserName=@F_UserName,");
87
-            strSql.Append("F_CreateOn=@F_CreateOn");
79
+            strSql.Append("F_DeptId=@F_DeptId,");
88 80
             strSql.Append(" where F_ID=@F_ID");
89 81
             SqlParameter[] parameters = {
90 82
                     new SqlParameter("@F_WorkStartTimes", SqlDbType.DateTime),
91 83
                     new SqlParameter("@F_WorkEndTimes", SqlDbType.DateTime),
92 84
                     new SqlParameter("@F_TimeName", SqlDbType.NVarChar,100),
93 85
                     new SqlParameter("@F_Remark", SqlDbType.NVarChar,200),
94
-                    new SqlParameter("@F_UserID", SqlDbType.Int,4),
95
-                    new SqlParameter("@F_UserCode", SqlDbType.VarChar,50),
96
-                    new SqlParameter("@F_UserName", SqlDbType.VarChar,50),
97
-                    new SqlParameter("@F_CreateOn", SqlDbType.DateTime),
86
+                    new SqlParameter("@F_DeptId", SqlDbType.Int,4),
98 87
                     new SqlParameter("@F_ID", SqlDbType.Int,4)};
99 88
             parameters[0].Value = model.F_WorkStartTimes;
100 89
             parameters[1].Value = model.F_WorkEndTimes;
101 90
             parameters[2].Value = model.F_TimeName;
102 91
             parameters[3].Value = model.F_Remark;
103
-            parameters[4].Value = model.F_UserID;
104
-            parameters[5].Value = model.F_UserCode;
105
-            parameters[6].Value = model.F_UserName;
106
-            parameters[7].Value = model.F_CreateOn;
107
-            parameters[8].Value = model.F_ID;
92
+            parameters[4].Value = model.F_DeptId;
93
+            parameters[5].Value = model.F_ID;
108 94
 
109 95
             int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
110 96
             if (rows > 0)
@@ -168,7 +154,7 @@ namespace CallCenterApi.DAL
168 154
         {
169 155
 
170 156
             StringBuilder strSql = new StringBuilder();
171
-            strSql.Append("select  top 1 F_ID,F_WorkStartTimes,F_WorkEndTimes,F_TimeName,F_Remark,F_UserID,F_UserCode,F_UserName,F_CreateOn from T_Sys_WorkTimes ");
157
+            strSql.Append("select  top 1 F_ID,F_WorkStartTimes,F_WorkEndTimes,F_TimeName,F_Remark,F_DeptId from T_Sys_WorkTimes ");
172 158
             strSql.Append(" where F_ID=@F_ID");
173 159
             SqlParameter[] parameters = {
174 160
                     new SqlParameter("@F_ID", SqlDbType.Int,4)
@@ -216,22 +202,11 @@ namespace CallCenterApi.DAL
216 202
                 {
217 203
                     model.F_Remark = row["F_Remark"].ToString();
218 204
                 }
219
-                if (row["F_UserID"] != null && row["F_UserID"].ToString() != "")
220
-                {
221
-                    model.F_UserID = int.Parse(row["F_UserID"].ToString());
222
-                }
223
-                if (row["F_UserCode"] != null)
224
-                {
225
-                    model.F_UserCode = row["F_UserCode"].ToString();
226
-                }
227
-                if (row["F_UserName"] != null)
228
-                {
229
-                    model.F_UserName = row["F_UserName"].ToString();
230
-                }
231
-                if (row["F_CreateOn"] != null && row["F_CreateOn"].ToString() != "")
205
+                if (row["F_DeptId"] != null && row["F_DeptId"].ToString() != "")
232 206
                 {
233
-                    model.F_CreateOn = DateTime.Parse(row["F_CreateOn"].ToString());
207
+                    model.F_DeptId = int.Parse(row["F_DeptId"].ToString());
234 208
                 }
209
+
235 210
             }
236 211
             return model;
237 212
         }
@@ -242,7 +217,7 @@ namespace CallCenterApi.DAL
242 217
         public DataSet GetList(string strWhere)
243 218
         {
244 219
             StringBuilder strSql = new StringBuilder();
245
-            strSql.Append("select F_ID,F_WorkStartTimes,F_WorkEndTimes,F_TimeName,F_Remark,F_UserID,F_UserCode,F_UserName,F_CreateOn ");
220
+            strSql.Append("select F_ID,F_WorkStartTimes,F_WorkEndTimes,F_TimeName,F_Remark,F_DeptId ");
246 221
             strSql.Append(" FROM T_Sys_WorkTimes ");
247 222
             if (strWhere.Trim() != "")
248 223
             {
@@ -262,7 +237,7 @@ namespace CallCenterApi.DAL
262 237
             {
263 238
                 strSql.Append(" top " + Top.ToString());
264 239
             }
265
-            strSql.Append(" F_ID,F_WorkStartTimes,F_WorkEndTimes,F_TimeName,F_Remark,F_UserID,F_UserCode,F_UserName,F_CreateOn ");
240
+            strSql.Append(" F_ID,F_WorkStartTimes,F_WorkEndTimes,F_TimeName,F_Remark,F_DeptId  ");
266 241
             strSql.Append(" FROM T_Sys_WorkTimes ");
267 242
             if (strWhere.Trim() != "")
268 243
             {

+ 91 - 14
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/callout/CallPlanController.cs

@@ -221,6 +221,7 @@ namespace CallCenterApi.Interface.Controllers.callout
221 221
                 connectedagentrate = connectedAgentRate,             //转坐席率    
222 222
             });
223 223
         }
224
+        [Authority]
224 225
         /// <summary>
225 226
         /// 添加/修改
226 227
         /// </summary>
@@ -623,6 +624,7 @@ namespace CallCenterApi.Interface.Controllers.callout
623 624
             {
624 625
                 rows = modelList.Select(x => new
625 626
                 {
627
+                    id = x.F_Id,
626 628
                     taskname = x.TaskName,
627 629
                     phone = x.F_Phone,
628 630
                     agent = string.IsNullOrWhiteSpace(x.F_UserName) ? "" : x.F_UserName,
@@ -733,7 +735,12 @@ namespace CallCenterApi.Interface.Controllers.callout
733 735
             return Content(obj.ToJson());
734 736
         }
735 737
 
736
-        public ActionResult GetPhoneResult(FilterCallPhone filter)
738
+        /// <summary>
739
+        /// 任务结果查询-自定义列表头
740
+        /// </summary>
741
+        /// <param name="filter"></param>
742
+        /// <returns></returns>
743
+        public ActionResult GetPhoneResultHead(FilterCallPhone filter)
737 744
         {
738 745
             var headList1 = new List<string>() { "序号", "外呼计划", "号码Id", "号码", "分配坐席", "呼叫状态", "接通状态", "呼叫结果", "结果反馈", "导入时间", "呼出时间" };
739 746
             //根据任务id查问卷
@@ -750,10 +757,38 @@ namespace CallCenterApi.Interface.Controllers.callout
750 757
             var headList = new List<string>();
751 758
             headList.AddRange(headList1);
752 759
             headList.AddRange(headList2);
760
+            return Success("获取成功", new
761
+            {
762
+                headlist = headList
763
+            });
764
+        }
765
+        /// <summary>
766
+        /// 任务结果查询-自定义列数据
767
+        /// </summary>
768
+        /// <param name="filter"></param>
769
+        /// <returns></returns>
770
+        public ActionResult GetPhoneResult(FilterCallPhone filter)
771
+        {
772
+            var headList1 = new List<string>() { "序号", "外呼计划", "号码Id", "号码", "分配坐席", "呼叫状态", "接通状态", "呼叫结果", "结果反馈", "导入时间", "呼出时间" };
773
+            //根据任务id查问卷
774
+            var task = taskBLL.GetModel(filter.Id);
775
+            if (task == null)
776
+                return Error("该任务不存在");
777
+
778
+            var headDt = DbHelperSQL.Query($"select Q.F_TITLE from T_Ask_Question Q  LEFT JOIN T_Ask_PagerItems PIT ON PIT.F_QuestionId = Q.F_QuestionId LEFT JOIN T_Ask_PagerInfo PIN ON PIN.F_PagerId = PIT.F_PagerId LEFT JOIN T_CTI_Task T ON T.y_TkModelId = PIN.F_PagerId where T.TaskID ={task.TaskID} ORDER BY Q.F_SortModel").Tables[0];
779
+            var headList2 = new List<string>();
780
+            foreach (DataRow row in headDt.Rows)
781
+            {
782
+                headList2.Add(row["F_TITLE"]?.ToString() ?? "");
783
+            }
753 784
 
785
+            var headList = new List<string>();
786
+            headList.AddRange(headList1);
787
+            headList.AddRange(headList2);
754 788
 
755 789
             //查询数据
756
-            var sql = "";
790
+            //var sql = " 1=1 ";
791
+            var sql = "  ";
757 792
             if (filter.Id > 0)
758 793
             {
759 794
                 var model = taskBLL.GetModel(filter.Id);
@@ -828,28 +863,55 @@ namespace CallCenterApi.Interface.Controllers.callout
828 863
                 var answer = answerList.Where(x => (x.F_CusTelID?.ToString() ?? "") == item.id).GroupBy(x => x.F_QID).ToList();
829 864
                 var itemList = new List<string>();
830 865
                 itemList.AddRange(new string[] { item.id, item.taskname, item.phone, item.agent, item.isallot, item.iscalled, item.isconnected, item.hjjg, item.yhfk, item.createtime, item.lastcalltime });
831
-                foreach (var i in answer)
866
+                if (answer.Count() > 0)
867
+                {
868
+                    foreach (var i in answer)
869
+                    {
870
+                        itemList.Add(string.Join(", ", i.Where(x => !string.IsNullOrWhiteSpace(x.F_Answer)).Select(x => x.F_Answer).Distinct()));
871
+                    }
872
+                }
873
+                else
832 874
                 {
833
-                    itemList.Add(string.Join(", ", i.Where(x => !string.IsNullOrWhiteSpace(x.F_Answer)).Select(x => x.F_Answer).Distinct()));
875
+                    for (int i = 0; i < headList2.Count; i++)
876
+                    {
877
+                        itemList.Add("");
878
+                    }
834 879
                 }
835 880
                 dataList.Add(itemList);
836 881
             }
837 882
 
883
+            if (filter.IsExport)
884
+            {
885
+                NPOIHelper npoi = new NPOIHelper();
886
+                var msg1 = npoi.ExportToExcel(DateTime.Now.ToString("yyyyMMdd") + task.TaskName + "导出任务结果查询报表", dataList, headList.ToArray());
887
+                return !string.IsNullOrWhiteSpace(msg1) ? Error(msg1) : Success("导出成功");
888
+            }
838 889
 
839 890
 
840
-
841
-
842
-
843
-
844
-            return Success("获取成功", new
891
+            List<Dictionary<string, string>> result = new List<Dictionary<string, string>>();
892
+            for (int i = 0; i < dataList.Count(); i++)
845 893
             {
846
-                headlist = headList,
847
-                datalist = dataList,
848
-                recordcount = recordCount
849
-            });
894
+                Dictionary<string, string> dic = new Dictionary<string, string>();
895
+                for (int j = 0; j < dataList[i].Count(); j++)
896
+                {
897
+                    dic.Add("items" + j, dataList[i][j]);
898
+                }
899
+                result.Add(dic);
900
+            }
901
+            var obj = new
902
+            {
903
+                statusCode = 200,
904
+                code = 0,
905
+                msg = "",
906
+                rows = result,
907
+                total = recordCount
908
+            };
909
+
910
+            return Content(obj.ToJson(), "application/json");
850 911
         }
851 912
 
852 913
 
914
+
853 915
         /// <summary>
854 916
         /// 坐席自主获取号码(点击外呼分配号码)
855 917
         /// </summary>
@@ -885,15 +947,25 @@ namespace CallCenterApi.Interface.Controllers.callout
885 947
         /// </summary>
886 948
         /// <param name="ids"></param>
887 949
         /// <returns></returns>
950
+
951
+
888 952
         public ActionResult CancelPhone(int[] ids)
889 953
         {
890 954
             if (ids == null || ids.Length <= 0)
891 955
                 return Error("请选择");
892 956
             var arr = string.Join(",", ids);
957
+            var dt = DbHelperSQL.Query($"SELECT F_Id,F_FPState  from T_Call_TaskTelNum where F_FPState=0 and  F_ID in ({arr})");
958
+
959
+            if (dt != null && dt.Tables.Count > 0 && dt.Tables[0].Rows.Count > 0)
960
+                return Error("选中的选项中存在未分配的数据,无法取消");
961
+
893 962
             if (taskTellNumBLL.CancelFP(arr))
894 963
                 return Success("取消成功");
895 964
             return Error("取消失败");
896 965
         }
966
+
967
+
968
+
897 969
         /// <summary>
898 970
         /// 获取坐席可进行呼叫的点击外呼任务
899 971
         /// </summary>
@@ -1018,7 +1090,9 @@ namespace CallCenterApi.Interface.Controllers.callout
1018 1090
                 var task = taskBLL.GetModel(model.F_TaskId == null ? 0 : Convert.ToInt32(model.F_TaskId));
1019 1091
                 if (task != null)
1020 1092
                 {
1021
-                    task.y_HCCount++;
1093
+                    var obj = DbHelperSQL.GetSingle($"select COUNT(1) AS HC from T_Call_TaskTelNum   where F_TaskId={task.TaskID} AND F_HCState=1 ");
1094
+                    task.y_HCCount = obj != null ? Convert.ToInt32(obj) : 0;
1095
+
1022 1096
                     if (taskBLL.Update(task))
1023 1097
                         return Success("更新成功");
1024 1098
                     return Error("更新失败");
@@ -1029,6 +1103,9 @@ namespace CallCenterApi.Interface.Controllers.callout
1029 1103
 
1030 1104
         }
1031 1105
 
1106
+
1107
+
1108
+
1032 1109
         #region 问卷回答
1033 1110
         /// <summary>
1034 1111
         /// 

+ 10 - 4
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/quality/QCManageController.cs

@@ -29,8 +29,11 @@ namespace CallCenterApi.Interface.Controllers.quality
29 29
             string phone = HttpUtility.UrlDecode(RequestString.GetQueryString("phone"));
30 30
             string usercode = HttpUtility.UrlDecode(RequestString.GetQueryString("usercode"));
31 31
             string calltype = HttpUtility.UrlDecode(RequestString.GetQueryString("calltype"));
32
-            string starttime = HttpUtility.UrlDecode(RequestString.GetQueryString("starttime"));
33
-            string endtime = HttpUtility.UrlDecode(RequestString.GetQueryString("endtime"));
32
+            //string starttime = HttpUtility.UrlDecode(RequestString.GetQueryString("starttime"));
33
+            //string endtime = HttpUtility.UrlDecode(RequestString.GetQueryString("endtime"));
34
+
35
+            string starttime = DateTime.Now.ToString("yyyy-MM-hh ") + " 00:00:01";
36
+            string endtime = DateTime.Now.ToString("yyyy-MM-hh ") + " 23:59:59";
34 37
             string startl = HttpUtility.UrlDecode(RequestString.GetQueryString("startl"));
35 38
             string endl = HttpUtility.UrlDecode(RequestString.GetQueryString("endl"));
36 39
             string optid = HttpUtility.UrlDecode(RequestString.GetQueryString("optid"));
@@ -198,12 +201,15 @@ namespace CallCenterApi.Interface.Controllers.quality
198 201
             string phone = HttpUtility.UrlDecode(RequestString.GetQueryString("phone"));
199 202
             string usercode = HttpUtility.UrlDecode(RequestString.GetQueryString("usercode"));
200 203
             string calltype = HttpUtility.UrlDecode(RequestString.GetQueryString("calltype"));
201
-            string starttime = HttpUtility.UrlDecode(RequestString.GetQueryString("starttime"));
202
-            string endtime = HttpUtility.UrlDecode(RequestString.GetQueryString("endtime"));
204
+            //string starttime = HttpUtility.UrlDecode(RequestString.GetQueryString("starttime"));
205
+            //string endtime = HttpUtility.UrlDecode(RequestString.GetQueryString("endtime"));
203 206
             string startl = HttpUtility.UrlDecode(RequestString.GetQueryString("startl"));
204 207
             string endl = HttpUtility.UrlDecode(RequestString.GetQueryString("endl"));
205 208
             string optid = HttpUtility.UrlDecode(RequestString.GetQueryString("optid"));
206 209
 
210
+            string starttime = DateTime.Now.ToString("yyyy-MM-hh ") + " 00:00:01";
211
+            string endtime = DateTime.Now.ToString("yyyy-MM-hh ") + " 23:59:59";
212
+
207 213
             string strpageindex = RequestString.GetQueryString("page");
208 214
             int pageindex = 1;
209 215
             string strpagesize = RequestString.GetQueryString("pagesize");

+ 11 - 12
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/tel/CallInScreenController.cs

@@ -456,23 +456,22 @@ namespace CallCenterApi.Interface.Controllers.tel
456 456
                     if (vmodel == null)
457 457
                         return Success("callid错误");
458 458
                     string type = vmodel.OperateType.ToString();
459
-                    //这里不知道  vmodel.OperateType=7 是什么时候. 
460 459
                     if (type == "7")
461 460
                     {
462 461
                         new BLL.T_Call_TaskTelNum().UpdateYJ(Convert.ToInt32(vmodel.OperateObject.ToString()), 1);
463 462
                     }
464 463
                     //所以暂时先用  vmodel.TaskPhoneID 来判断是否是点击外呼的通话记录
465
-                    if (!string.IsNullOrWhiteSpace(vmodel.TaskPhoneID))
466
-                    {
467
-                        new BLL.T_Call_TaskTelNum().UpdateYJ(Convert.ToInt32(vmodel.TaskPhoneID.ToString()), 1);
468
-                        var taskid = new BLL.T_Call_TaskTelNum().GetModel(Convert.ToInt32(vmodel.TaskPhoneID.ToString()))?.F_TaskId ?? 0;
469
-                        var task = new BLL.T_CTI_Task().GetModel(taskid);
470
-                        if (taskid > 0)
471
-                        {
472
-                            task.y_YJCount++;
473
-                            new BLL.T_CTI_Task().Update(task);
474
-                        }
475
-                    }
464
+                    //if (!string.IsNullOrWhiteSpace(vmodel.TaskPhoneID))
465
+                    //{
466
+                    //    new BLL.T_Call_TaskTelNum().UpdateYJ(Convert.ToInt32(vmodel.TaskPhoneID.ToString()), 1);
467
+                    //    var taskid = new BLL.T_Call_TaskTelNum().GetModel(Convert.ToInt32(vmodel.TaskPhoneID.ToString()))?.F_TaskId ?? 0;
468
+                    //    var task = new BLL.T_CTI_Task().GetModel(taskid);
469
+                    //    if (taskid > 0)
470
+                    //    {
471
+                    //        task.y_YJCount++;
472
+                    //        new BLL.T_CTI_Task().Update(task);
473
+                    //    }
474
+                    //}
476 475
                     res = Success("更新摘机状态成功");
477 476
                 }
478 477
                 else

+ 5 - 1
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/tel/CallrecordsController.cs

@@ -223,7 +223,11 @@ namespace CallCenterApi.Interface.Controllers.tel
223 223
                 }
224 224
                 if (dept != null && dept.Trim() != "")
225 225
                 {
226
-                    sql += " and UserCode in (select F_UserCode from T_Sys_UserAccount where F_DeptId=" + dept.Trim() + ")";
226
+                    var deptModel = deptBLL.GetModel(!string.IsNullOrWhiteSpace(dept) ? Convert.ToInt32(dept) : 0);
227
+                    if (deptModel != null)
228
+                    {
229
+                        sql += $" and UserCode in (select F_UserCode from T_Sys_UserAccount where F_DeptId in (select F_DeptId from T_Sys_Department where F_DeptCode like '{deptModel.F_DeptCode}%'))";
230
+                    }
227 231
                 }
228 232
                 if (phone != null && phone.Trim() != "")
229 233
                 {

+ 210 - 181
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/tel/WorkcalendarController.cs

@@ -12,6 +12,8 @@ namespace CallCenterApi.Interface.Controllers.tel
12 12
 {
13 13
     public class WorkcalendarController : BaseController
14 14
     {
15
+
16
+        private BLL.T_Sys_WorkTimes workTimesBLL = new BLL.T_Sys_WorkTimes();
15 17
         // 获取工作日历
16 18
         public ActionResult GetCalendarList(string strdate)
17 19
         {
@@ -54,64 +56,64 @@ namespace CallCenterApi.Interface.Controllers.tel
54 56
             ActionResult res = NoToken("未知错误,请重新登录");
55 57
             if (Request.IsAuthenticated)
56 58
             {
57
-                
58
-                    if (date != null && date != "")
59
+
60
+                if (date != null && date != "")
61
+                {
62
+                    DateTime dt = new DateTime();
63
+                    if (DateTime.TryParse(date, out dt))
59 64
                     {
60
-                        DateTime dt = new DateTime();
61
-                        if (DateTime.TryParse(date, out dt))
65
+                        Model.T_Sys_WorkCalendar wc = new BLL.T_Sys_WorkCalendar().GetModel(dt);
66
+                        if (wc != null)
62 67
                         {
63
-                            Model.T_Sys_WorkCalendar wc = new BLL.T_Sys_WorkCalendar().GetModel(dt);
64
-                            if (wc != null)
68
+                            if (wc.F_EditFlag == false) //没有修改过
65 69
                             {
66
-                                if (wc.F_EditFlag == false) //没有修改过
70
+                                if (wc.F_WorkingFlag)
67 71
                                 {
68
-                                    if (wc.F_WorkingFlag)
69
-                                    {
70
-                                        wc.F_WorkingFlag = false;
71
-                                    }
72
-                                    else
73
-                                    {
74
-                                        wc.F_WorkingFlag = true;
75
-                                    }
76
-                                    wc.F_EditFlag = true;
72
+                                    wc.F_WorkingFlag = false;
77 73
                                 }
78
-                                else//修改过 
74
+                                else
79 75
                                 {
80
-                                    if (wc.F_WorkingFlag)
81
-                                    {
82
-                                        wc.F_WorkingFlag = false;
83
-                                    }
84
-                                    else
85
-                                    {
86
-                                        wc.F_WorkingFlag = true;
87
-                                    }
88
-                                    wc.F_EditFlag = false;
76
+                                    wc.F_WorkingFlag = true;
89 77
                                 }
90
-                                bool rvalue = new BLL.T_Sys_WorkCalendar().Update(wc);
91
-                                if (rvalue)
78
+                                wc.F_EditFlag = true;
79
+                            }
80
+                            else//修改过 
81
+                            {
82
+                                if (wc.F_WorkingFlag)
92 83
                                 {
93
-                                    res = Success("设置成功!");
84
+                                    wc.F_WorkingFlag = false;
94 85
                                 }
95 86
                                 else
96 87
                                 {
97
-                                    res = Error("设置失败!");
88
+                                    wc.F_WorkingFlag = true;
98 89
                                 }
90
+                                wc.F_EditFlag = false;
91
+                            }
92
+                            bool rvalue = new BLL.T_Sys_WorkCalendar().Update(wc);
93
+                            if (rvalue)
94
+                            {
95
+                                res = Success("设置成功!");
99 96
                             }
100 97
                             else
101 98
                             {
102
-                                res = Error("获取对象失败");
99
+                                res = Error("设置失败!");
103 100
                             }
104 101
                         }
105 102
                         else
106 103
                         {
107
-                            res = Error("日期格式不正确");
104
+                            res = Error("获取对象失败");
108 105
                         }
109 106
                     }
110 107
                     else
111 108
                     {
112
-                        res = Error("获取参数失败");
109
+                        res = Error("日期格式不正确");
113 110
                     }
114
-            
111
+                }
112
+                else
113
+                {
114
+                    res = Error("获取参数失败");
115
+                }
116
+
115 117
             }
116 118
             return res;
117 119
         }
@@ -124,51 +126,55 @@ namespace CallCenterApi.Interface.Controllers.tel
124 126
             {
125 127
                 string sql = "";
126 128
                 DataTable dt = new DataTable();
127
-               
128 129
 
129
-                    string keyword = HttpUtility.UrlDecode(RequestString.GetQueryString("keyword"));
130
-                    if (keyword.Trim() != "" && keyword != "undefined")
131
-                    {
132
-                        sql += " and (convert(varchar,F_WorkEndTimes,120) like '%" + keyword.Trim() + "%' or convert(varchar,F_WorkEndTimes,120) like '%" + keyword.Trim()
133
-                            + "%' or F_TimeName like '%" + keyword.Trim() + "%'or F_Remark like '%" + keyword.Trim() + "%')";
134
-                    }
135 130
 
136
-                    string strpageindex = RequestString.GetQueryString("page");
137
-                    int pageindex = 1;
138
-                    string strpagesize = RequestString.GetQueryString("pagesize");
139
-                    int pagesize = 10;
131
+                string keyword = HttpUtility.UrlDecode(RequestString.GetQueryString("keyword"));
132
+                if (keyword.Trim() != "" && keyword != "undefined")
133
+                {
134
+                    sql += " and (convert(varchar,F_WorkEndTimes,120) like '%" + keyword.Trim() + "%' or convert(varchar,F_WorkEndTimes,120) like '%" + keyword.Trim()
135
+                        + "%' or F_TimeName like '%" + keyword.Trim() + "%'or F_Remark like '%" + keyword.Trim() + "%')";
136
+                }
140 137
 
141
-                    if (strpageindex.Trim() != "")
142
-                    {
143
-                        pageindex = Convert.ToInt32(strpageindex);
144
-                    }
138
+                var deptId = CurrentUser.UserData.F_DeptId;
139
+                sql += $"  and   F_DeptId={deptId}   ";
145 140
 
146
-                    if (strpagesize.Trim() != "")
147
-                    {
148
-                        pagesize = Convert.ToInt32(strpagesize);
149
-                    }
150
-                    int recordCount = 0;
151
-                    dt = BLL.PagerBLL.GetListPager(
152
-                         "T_Sys_WorkTimes",
153
-                        "F_ID",
154
-                        "*",
155
-                        sql,
156
-                        "ORDER BY F_ID desc",
157
-                        pagesize,
158
-                        pageindex,
159
-                        true,
160
-                        out recordCount);
161 141
 
162
-                    var obj = new
163
-                    {
164
-                        state = "success",
165
-                        message = "成功",
166
-                        rows = dt,
167
-                        total = recordCount
168
-                    };
142
+                string strpageindex = RequestString.GetQueryString("page");
143
+                int pageindex = 1;
144
+                string strpagesize = RequestString.GetQueryString("pagesize");
145
+                int pagesize = 10;
146
+
147
+                if (strpageindex.Trim() != "")
148
+                {
149
+                    pageindex = Convert.ToInt32(strpageindex);
150
+                }
151
+
152
+                if (strpagesize.Trim() != "")
153
+                {
154
+                    pagesize = Convert.ToInt32(strpagesize);
155
+                }
156
+                int recordCount = 0;
157
+                dt = BLL.PagerBLL.GetListPager(
158
+                     "T_Sys_WorkTimes",
159
+                    "F_ID",
160
+                    "*",
161
+                    sql,
162
+                    "ORDER BY F_ID desc",
163
+                    pagesize,
164
+                    pageindex,
165
+                    true,
166
+                    out recordCount);
167
+
168
+                var obj = new
169
+                {
170
+                    state = "success",
171
+                    message = "成功",
172
+                    rows = dt,
173
+                    total = recordCount
174
+                };
175
+
176
+                res = Content(obj.ToJson());
169 177
 
170
-                    res = Content(obj.ToJson());
171
-            
172 178
             }
173 179
             return res;
174 180
         }
@@ -179,26 +185,26 @@ namespace CallCenterApi.Interface.Controllers.tel
179 185
             ActionResult res = NoToken("未知错误,请重新登录");
180 186
             if (Request.IsAuthenticated)
181 187
             {
182
-                
183
-                    if (id != null && id.Trim() != "")
188
+
189
+                if (id != null && id.Trim() != "")
190
+                {
191
+                    BLL.T_Sys_WorkTimes dBLL = new BLL.T_Sys_WorkTimes();
192
+                    Model.T_Sys_WorkTimes dModel = dBLL.GetModel(int.Parse(id.Trim()));
193
+                    if (dModel != null)
184 194
                     {
185
-                        BLL.T_Sys_WorkTimes dBLL = new BLL.T_Sys_WorkTimes();
186
-                        Model.T_Sys_WorkTimes dModel = dBLL.GetModel(int.Parse(id.Trim()));
187
-                        if (dModel != null)
188
-                        {
189
-                            res = Success("获取成功", dModel);
190
-                        }
191
-                        else
192
-                        {
193
-                            res = Error("获取失败");
194
-                        }
195
+                        res = Success("获取成功", dModel);
195 196
                     }
196 197
                     else
197 198
                     {
198
-                        res = Error("获取参数失败");
199
+                        res = Error("获取失败");
199 200
                     }
200
-                
201
-             
201
+                }
202
+                else
203
+                {
204
+                    res = Error("获取参数失败");
205
+                }
206
+
207
+
202 208
             }
203 209
             return res;
204 210
         }
@@ -209,97 +215,94 @@ namespace CallCenterApi.Interface.Controllers.tel
209 215
             ActionResult res = NoToken("未知错误,请重新登录");
210 216
             if (Request.IsAuthenticated)
211 217
             {
212
-                
213
-                    int userId = CurrentUser.UserData.F_UserId;
214
-                    if (userId != 0)
218
+
219
+                int userId = CurrentUser.UserData.F_UserId;
220
+                if (userId != 0)
221
+                {
222
+                    Model.T_Sys_UserAccount ua = new BLL.T_Sys_UserAccount().GetModel(userId);
223
+                    if (ua != null)
215 224
                     {
216
-                        Model.T_Sys_UserAccount ua = new BLL.T_Sys_UserAccount().GetModel(userId);
217
-                        if (ua != null)
225
+                        res = Error("操作失败");
226
+                        if (workid != null && workid != "")
218 227
                         {
219
-                            res=Error("操作失败");
220
-                            if (workid != null && workid != "")
228
+                            int id = 0;
229
+                            if (int.TryParse(workid, out id))
221 230
                             {
222
-                                int id = 0;
223
-                                if (int.TryParse(workid, out id))
231
+                                BLL.T_Sys_WorkTimes dBLL = new BLL.T_Sys_WorkTimes();
232
+                                Model.T_Sys_WorkTimes dModel = dBLL.GetModel(id);
233
+                                if (dModel != null)
224 234
                                 {
225
-                                    BLL.T_Sys_WorkTimes dBLL = new BLL.T_Sys_WorkTimes();
226
-                                    Model.T_Sys_WorkTimes dModel = dBLL.GetModel(id);
227
-                                    if (dModel != null)
235
+                                    if (!string.IsNullOrWhiteSpace(workstart.Trim()))
236
+                                    {
237
+                                        DateTime dt1 = new DateTime();
238
+                                        if (DateTime.TryParse(workstart.Trim(), out dt1))
239
+                                            dModel.F_WorkStartTimes = Convert.ToDateTime(dt1.ToString("1900-01-01 HH:mm:ss"));
240
+                                    }
241
+                                    if (!string.IsNullOrWhiteSpace(workend.Trim()))
242
+                                    {
243
+                                        DateTime dt1 = new DateTime();
244
+                                        if (DateTime.TryParse(workend.Trim(), out dt1))
245
+                                            dModel.F_WorkEndTimes = Convert.ToDateTime(dt1.ToString("1900-01-01 HH:mm:ss"));
246
+                                    }
247
+                                    if (!string.IsNullOrWhiteSpace(timename.Trim()))
248
+                                    {
249
+                                        dModel.F_TimeName = timename.Trim();
250
+                                    }
251
+                                    if (!string.IsNullOrWhiteSpace(remark.Trim()))
228 252
                                     {
229
-                                        if (!string.IsNullOrWhiteSpace(workstart.Trim()))   
230
-                                        {
231
-                                            DateTime dt1 = new DateTime();
232
-                                            if (DateTime.TryParse(workstart.Trim(), out dt1))
233
-                                                dModel.F_WorkStartTimes = Convert.ToDateTime(dt1.ToString("1900-01-01 HH:mm:ss"));
234
-                                        }
235
-                                        if (!string.IsNullOrWhiteSpace(workend.Trim()))
236
-                                        {
237
-                                            DateTime dt1 = new DateTime();
238
-                                            if (DateTime.TryParse(workend.Trim(), out dt1))
239
-                                                dModel.F_WorkEndTimes = Convert.ToDateTime(dt1.ToString("1900-01-01 HH:mm:ss"));
240
-                                        }
241
-                                        if (!string.IsNullOrWhiteSpace(timename.Trim()))
242
-                                        {
243
-                                            dModel.F_TimeName = timename.Trim();
244
-                                        }
245
-                                        if (!string.IsNullOrWhiteSpace(remark.Trim()))
246
-                                        {
247
-                                            dModel.F_Remark = remark.Trim();
248
-                                        }
253
+                                        dModel.F_Remark = remark.Trim();
254
+                                    }
249 255
 
250
-                                        bool b = dBLL.Update(dModel);
251
-                                        if (b)
252
-                                        {
253
-                                            res = Success("编辑成功");
254
-                                        }
255
-                                        else
256
-                                        {
257
-                                            res = Error("编辑失败");
258
-                                        }
256
+                                    bool b = dBLL.Update(dModel);
257
+                                    if (b)
258
+                                    {
259
+                                        res = Success("编辑成功");
260
+                                    }
261
+                                    else
262
+                                    {
263
+                                        res = Error("编辑失败");
259 264
                                     }
260 265
                                 }
261 266
                             }
262
-                            else
267
+                        }
268
+                        else
269
+                        {
270
+                            Model.T_Sys_WorkTimes _model = new Model.T_Sys_WorkTimes();
271
+                            if (!string.IsNullOrWhiteSpace(workstart.Trim()))
263 272
                             {
264
-                                Model.T_Sys_WorkTimes _model = new Model.T_Sys_WorkTimes();
265
-                                if (!string.IsNullOrWhiteSpace(workstart.Trim()))
266
-                                {
267
-                                    DateTime dt2 = new DateTime();
268
-                                    if (DateTime.TryParse("1900-01-01 " + workstart.Trim(), out dt2))
269
-                                        _model.F_WorkStartTimes = Convert.ToDateTime(dt2.ToString("1900-01-01 HH:mm:ss"));
270
-                                }
271
-                                if (!string.IsNullOrWhiteSpace(workend.Trim()))
272
-                                {
273
-                                    DateTime dt2 = new DateTime();
274
-                                    if (DateTime.TryParse("1900-01-01 " + workend.Trim(), out dt2))
275
-                                        _model.F_WorkEndTimes = Convert.ToDateTime(dt2.ToString("1900-01-01 HH:mm:ss"));
276
-                                }
277
-                                if (!string.IsNullOrWhiteSpace(timename.Trim()))
278
-                                {
279
-                                    _model.F_TimeName = timename.Trim();
280
-                                }
281
-                                if (!string.IsNullOrWhiteSpace(remark.Trim()))
282
-                                {
283
-                                    _model.F_Remark = remark.Trim();
284
-                                }
285
-                                _model.F_CreateOn = DateTime.Now;
286
-                                _model.F_UserID = ua.F_UserId;
287
-                                _model.F_UserName = ua.F_UserName;
288
-                                _model.F_UserCode = ua.F_UserCode;
273
+                                DateTime dt2 = new DateTime();
274
+                                if (DateTime.TryParse("1900-01-01 " + workstart.Trim(), out dt2))
275
+                                    _model.F_WorkStartTimes = Convert.ToDateTime(dt2.ToString("1900-01-01 HH:mm:ss"));
276
+                            }
277
+                            if (!string.IsNullOrWhiteSpace(workend.Trim()))
278
+                            {
279
+                                DateTime dt2 = new DateTime();
280
+                                if (DateTime.TryParse("1900-01-01 " + workend.Trim(), out dt2))
281
+                                    _model.F_WorkEndTimes = Convert.ToDateTime(dt2.ToString("1900-01-01 HH:mm:ss"));
282
+                            }
283
+                            if (!string.IsNullOrWhiteSpace(timename.Trim()))
284
+                            {
285
+                                _model.F_TimeName = timename.Trim();
286
+                            }
287
+                            if (!string.IsNullOrWhiteSpace(remark.Trim()))
288
+                            {
289
+                                _model.F_Remark = remark.Trim();
290
+                            }
291
+                            _model.F_DeptId = CurrentUser.UserData.F_DeptId;
289 292
 
290
-                                int b = new BLL.T_Sys_WorkTimes().Add(_model);
291
-                                if (b > 0)
292
-                                {
293
-                                    res = Success("添加成功");
294
-                                }
295
-                                else
296
-                                {
297
-                                    res = Error("添加失败");
298
-                                }
293
+                            int b = new BLL.T_Sys_WorkTimes().Add(_model);
294
+                            if (b > 0)
295
+                            {
296
+                                res = Success("添加成功");
297
+                            }
298
+                            else
299
+                            {
300
+                                res = Error("添加失败");
299 301
                             }
300 302
                         }
301 303
                     }
302
-            
304
+                }
305
+
303 306
             }
304 307
             return res;
305 308
         }
@@ -310,28 +313,54 @@ namespace CallCenterApi.Interface.Controllers.tel
310 313
             ActionResult res = NoToken("未知错误,请重新登录");
311 314
             if (Request.IsAuthenticated)
312 315
             {
313
-                
314
-                    if (ids != null && ids.Length > 0)
316
+
317
+                if (ids != null && ids.Length > 0)
318
+                {
319
+                    string idd = " ";
320
+                    foreach (string str in ids)
315 321
                     {
316
-                        string idd = " ";
317
-                        foreach (string str in ids)
318
-                        {
319
-                            idd += "'" + str + "',";
320
-                        }
321
-                        if (new BLL.T_Sys_WorkTimes().DeleteList(idd.TrimEnd(',')))
322
-                        {
323
-                            res = Success("删除成功");
324
-                        }
325
-                        else
326
-                            res = Error("删除失败");
322
+                        idd += "'" + str + "',";
327 323
                     }
328
-                    else
324
+                    if (new BLL.T_Sys_WorkTimes().DeleteList(idd.TrimEnd(',')))
329 325
                     {
330
-                        res = Error("请选择要删除的记录");
326
+                        res = Success("删除成功");
331 327
                     }
332
-            
328
+                    else
329
+                        res = Error("删除失败");
330
+                }
331
+                else
332
+                {
333
+                    res = Error("请选择要删除的记录");
334
+                }
335
+
333 336
             }
334 337
             return res;
335 338
         }
339
+
340
+        [Authority]
341
+        public ActionResult GetIsOnDutyTime()
342
+        {
343
+            var deptId = CurrentUser.UserData.F_DeptId;
344
+            var list = workTimesBLL.DataTableToList(workTimesBLL.GetList($" F_DeptId={deptId} ").Tables[0]);
345
+            var isOnDutyTime = false;
346
+            var now = DateTime.Now.TimeOfDay;
347
+            foreach (var item in list)
348
+            {
349
+                var start = item.F_WorkStartTimes == null ? DateTime.MinValue : Convert.ToDateTime(item.F_WorkStartTimes);
350
+                var end = item.F_WorkEndTimes == null ? DateTime.MinValue : Convert.ToDateTime(item.F_WorkEndTimes);
351
+
352
+                var startTime = start.TimeOfDay;
353
+                var endTime = end.TimeOfDay;
354
+                if (now > startTime && now < endTime)
355
+                {
356
+                    isOnDutyTime = true;
357
+                    break;
358
+                }
359
+                continue;
360
+            }
361
+            if (isOnDutyTime)
362
+                return Success("");
363
+            return Error("未在正常上班时间,无法拨出电话");
364
+        }
336 365
     }
337 366
 }

+ 1 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Models/Filter/FilterCallPhone.cs

@@ -18,5 +18,6 @@ namespace CallCenterApi.Interface.Models.Filter
18 18
         public int HJJGID { get; set; } = -1;
19 19
         public int YHFKID { get; set; } = -1;
20 20
         public int RequestType { get; set; } = 1;
21
+        public bool IsExport { get; set; } = false;
21 22
     }
22 23
 }

+ 5 - 31
CallCenterApi/CallCenterApi.Model/T_Sys_WorkTimes.cs

@@ -15,10 +15,7 @@ namespace CallCenterApi.Model
15 15
         private DateTime? _f_workendtimes;
16 16
         private string _f_timename;
17 17
         private string _f_remark;
18
-        private int? _f_userid;
19
-        private string _f_usercode;
20
-        private string _f_username;
21
-        private DateTime? _f_createon;
18
+        private int? _f_deptid;
22 19
         /// <summary>
23 20
         /// 
24 21
         /// </summary>
@@ -62,35 +59,12 @@ namespace CallCenterApi.Model
62 59
         /// <summary>
63 60
         /// 
64 61
         /// </summary>
65
-        public int? F_UserID
62
+        public int? F_DeptId
66 63
         {
67
-            set { _f_userid = value; }
68
-            get { return _f_userid; }
69
-        }
70
-        /// <summary>
71
-        /// 
72
-        /// </summary>
73
-        public string F_UserCode
74
-        {
75
-            set { _f_usercode = value; }
76
-            get { return _f_usercode; }
77
-        }
78
-        /// <summary>
79
-        /// 
80
-        /// </summary>
81
-        public string F_UserName
82
-        {
83
-            set { _f_username = value; }
84
-            get { return _f_username; }
85
-        }
86
-        /// <summary>
87
-        /// 
88
-        /// </summary>
89
-        public DateTime? F_CreateOn
90
-        {
91
-            set { _f_createon = value; }
92
-            get { return _f_createon; }
64
+            set { _f_deptid = value; }
65
+            get { return _f_deptid; }
93 66
         }
67
+
94 68
         #endregion Model
95 69
 
96 70
     }

+ 152 - 3
CallCenterCommon/CallCenter.Utility/NPOI/NPOIHelper.cs

@@ -8,6 +8,7 @@ using NPOI.HSSF.UserModel;
8 8
 using NPOI.SS.UserModel;
9 9
 using NPOI.SS.Util;
10 10
 using NPOI.XSSF.UserModel;
11
+using System.Collections.Generic;
11 12
 
12 13
 namespace CallCenter.Utility
13 14
 {
@@ -247,14 +248,14 @@ namespace CallCenter.Utility
247 248
             {
248 249
                 HSSFWorkbook workbook = new HSSFWorkbook();
249 250
                 //ISheet sheet = workbook.CreateSheet("Sheet1");
250
-                
251
+
251 252
                 //数据总数
252 253
                 int count = dt.Rows.Count;
253 254
                 //注意:1、Excel2003及以前版本65536行,256列;  2、Excel2007、2010版本1048576行,16384列
254 255
                 int sheetpage = 50000;   //这里设置5w条
255 256
                 //向上取整
256 257
                 int sheetindexcount = int.Parse(Math.Ceiling(Convert.ToDecimal((double)count / sheetpage)).ToString());
257
-                if(sheetindexcount == 0)
258
+                if (sheetindexcount == 0)
258 259
                     sheetindexcount = 1;
259 260
 
260 261
                 for (int n = 1; n <= sheetindexcount; n++)
@@ -388,11 +389,159 @@ namespace CallCenter.Utility
388 389
                 }
389 390
                 return "";
390 391
             }
391
-            catch(Exception ex)
392
+            catch (Exception ex)
393
+            {
394
+                return "导出失败!" + ex.Message;
395
+            }
396
+        }
397
+
398
+
399
+        /// <summary>
400
+        /// 弹出下载框导出excel => 创建多个Sheet:例如sheet1,sheet2...【数据源为 List<List<string>> 】
401
+        /// </summary>
402
+        /// <param name="Name"></param>
403
+        /// <param name="list"></param>
404
+        /// <returns></returns>
405
+        public string ExportToExcel(string Name, List<List<string>> list, string[] cols = null)
406
+        {
407
+            try
408
+            {
409
+                HSSFWorkbook workbook = new HSSFWorkbook();
410
+                //ISheet sheet = workbook.CreateSheet("Sheet1");
411
+
412
+                //数据总数
413
+                int count = list.Count;
414
+                //注意:1、Excel2003及以前版本65536行,256列;  2、Excel2007、2010版本1048576行,16384列
415
+                int sheetpage = 50000;   //这里设置5w条
416
+                //向上取整
417
+                int sheetindexcount = int.Parse(Math.Ceiling(Convert.ToDecimal((double)count / sheetpage)).ToString());
418
+                if (sheetindexcount == 0)
419
+                    sheetindexcount = 1;
420
+
421
+                for (int n = 1; n <= sheetindexcount; n++)
422
+                {
423
+                    ISheet sheet = workbook.CreateSheet("Sheet" + n);
424
+                    ICellStyle HeadercellStyle = workbook.CreateCellStyle();
425
+                    HeadercellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
426
+                    HeadercellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
427
+                    HeadercellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
428
+                    HeadercellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
429
+                    HeadercellStyle.Alignment = HorizontalAlignment.Center;
430
+                    HeadercellStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index;
431
+                    HeadercellStyle.FillPattern = FillPattern.SolidForeground;
432
+                    HeadercellStyle.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index;
433
+
434
+                    //字体
435
+                    NPOI.SS.UserModel.IFont headerfont = workbook.CreateFont();
436
+                    headerfont.Boldweight = (short)FontBoldWeight.Bold;
437
+                    headerfont.FontHeightInPoints = 12;
438
+                    HeadercellStyle.SetFont(headerfont);
439
+
440
+
441
+                    //用column name 作为列名
442
+                    int icolIndex = 0;
443
+                    IRow headerRow = sheet.CreateRow(0);
444
+                    foreach (string dc in cols)
445
+                    {
446
+                        ICell cell = headerRow.CreateCell(icolIndex);
447
+                        cell.SetCellValue(dc);
448
+                        cell.CellStyle = HeadercellStyle;
449
+                        icolIndex++;
450
+                    }
451
+
452
+                    ICellStyle cellStyle = workbook.CreateCellStyle();
453
+
454
+                    //为避免日期格式被Excel自动替换,所以设定 format 为 『@』 表示一率当成text來看
455
+                    cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("@");
456
+                    cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
457
+                    cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
458
+                    cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
459
+                    cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
460
+
461
+
462
+                    NPOI.SS.UserModel.IFont cellfont = workbook.CreateFont();
463
+                    cellfont.Boldweight = (short)FontBoldWeight.Normal;
464
+                    cellStyle.SetFont(cellfont);
465
+                    if (list.Count > 0)
466
+                    {
467
+                        //建立内容行
468
+                        int iRowIndex = 0;
469
+                        #region 修改不用
470
+                        //foreach (DataRow dr in dt.Rows)
471
+                        //{
472
+                        //    int iCellIndex = 0;
473
+                        //    IRow irow = sheet.CreateRow(iRowIndex + 1);
474
+                        //    for (int i = 0; i < dt.Columns.Count; i++)
475
+                        //    {
476
+                        //        string strsj = string.Empty;
477
+                        //        if (dr[i] != null)
478
+                        //        {
479
+                        //            strsj = dr[i].ToString();
480
+                        //        }
481
+                        //        ICell cell = irow.CreateCell(iCellIndex);
482
+                        //        cell.SetCellValue(strsj);
483
+                        //        cell.CellStyle = cellStyle;
484
+                        //        iCellIndex++;
485
+                        //    }
486
+                        //    iRowIndex++;
487
+                        //}
488
+                        #endregion
489
+
490
+                        int startcount = (n - 1) * sheetpage;
491
+                        int endcount = n * sheetpage;
492
+                        if (sheetindexcount == n)
493
+                            endcount = count;
494
+
495
+                        //for (int x = 0; x < dt.Rows.Count; x++)
496
+                        for (int x = startcount; x < endcount; x++)
497
+                        {
498
+                            int iCellIndex = 0;
499
+                            IRow irow = sheet.CreateRow(iRowIndex + 1);
500
+                            for (int i = 0; i < list[iRowIndex].Count; i++)
501
+                            {
502
+                                string strsj = string.Empty;
503
+
504
+                                strsj = list[iRowIndex][i];
505
+
506
+                                ICell cell = irow.CreateCell(iCellIndex);
507
+                                cell.SetCellValue(strsj);
508
+                                cell.CellStyle = cellStyle;
509
+                                iCellIndex++;
510
+                            }
511
+                            iRowIndex++;
512
+                        }
513
+
514
+                        //自适应列宽度
515
+                        for (int i = 0; i < icolIndex; i++)
516
+                        {
517
+                            sheet.AutoSizeColumn(i);
518
+                        }
519
+                    }
520
+                }
521
+                using (MemoryStream ms = new MemoryStream())
522
+                {
523
+                    workbook.Write(ms);
524
+                    HttpContext curContext = HttpContext.Current;
525
+                    // 设置编码和附件格式
526
+                    curContext.Response.ContentType = "application/vnd.ms-excel";
527
+                    curContext.Response.ContentEncoding = Encoding.UTF8;
528
+                    curContext.Response.Charset = "";
529
+                    curContext.Response.AppendHeader("Content-Disposition",
530
+                        "attachment;filename=" + HttpUtility.UrlEncode(Name + ".xls", Encoding.UTF8));
531
+                    curContext.Response.BinaryWrite(ms.GetBuffer());
532
+                    workbook = null;
533
+                    ms.Close();
534
+                    ms.Dispose();
535
+                    curContext.Response.End();
536
+                }
537
+                return "";
538
+            }
539
+            catch (Exception ex)
392 540
             {
393 541
                 return "导出失败!" + ex.Message;
394 542
             }
395 543
         }
544
+
396 545
         /// <summary>
397 546
         /// 创建Sheet
398 547
         /// </summary>