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

自动外呼弹屏,自动外呼通话记录

yuqian лет назад: 8
Родитель
Сommit
b699d29a0c

+ 4 - 0
CallCenterApi/CallCenterApi.BLL/T_Call_TaskTelNum.cs

@@ -409,6 +409,10 @@ namespace CallCenterApi.BLL
409 409
                     {
410 410
                         model.F_YHFKName = dt.Rows[n]["F_YHFKName"] == DBNull.Value ? "" : dt.Rows[n]["F_YHFKName"].ToString();
411 411
                     }
412
+                    if (dtColums.Contains("F_LastCallTime"))
413
+                    {
414
+                        model.F_LastCallTime = dt.Rows[n]["F_LastCallTime"] == DBNull.Value ? (DateTime?)null : DateTime.Parse(dt.Rows[n]["F_LastCallTime"].ToString());
415
+                    }
412 416
                     modelList.Add(model);
413 417
                 }
414 418
             }

+ 3 - 3
CallCenterApi/CallCenterApi.DAL/CallRecords.cs

@@ -24,14 +24,14 @@ namespace CallCenterApi.DAL
24 24
                 model.Id = row["Id"] == DBNull.Value ? 0 : Convert.ToInt32(row["Id"]);
25 25
                 model.TaskId = row["itemid"] == DBNull.Value ? 0 : Convert.ToInt32(row["itemid"]);
26 26
                 model.CallNumber = row["Callee"] == DBNull.Value ? "" : row["Callee"].ToString();
27
-                model.Usercode = row["agentid"] == DBNull.Value ? "" : row["agentid"].ToString();
27
+                model.Usercode = row["AgentId"] == DBNull.Value ? "" : row["AgentId"].ToString();
28 28
                 model.StartDate = row["StartDate"] == DBNull.Value ? (DateTime?)null : Convert.ToDateTime(row["StartDate"].ToString());
29 29
                 model.GetInAgentDate = row["GetInAgentDate"] == DBNull.Value ? (DateTime?)null : Convert.ToDateTime(row["GetInAgentDate"].ToString());
30 30
                 model.EndDate = row["EndDate"] == DBNull.Value ? (DateTime?)null : Convert.ToDateTime(row["EndDate"].ToString());
31 31
                 model.RecordPath = row["RecordPath"] == DBNull.Value ? "" : row["RecordPath"].ToString();
32 32
                 model.Username = row["Username"] == DBNull.Value ? "" : row["Username"].ToString();
33
-                model.State = row["calltype"] == DBNull.Value ? "" : row["calltype"].ToString();
34
-                model.TalkTime = row["talktime"] == DBNull.Value ? 0 : Convert.ToInt32(row["talktime"]);
33
+                model.CallType = row["CallType"] == DBNull.Value ? 1 : Convert.ToInt32(row["CallType"].ToString());
34
+                model.TalkTime = row["TalkTime"] == DBNull.Value ? 0 : Convert.ToInt32(row["TalkTime"]);
35 35
             }
36 36
             return model;
37 37
         }

+ 121 - 72
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/callout/CallPlanController.cs

@@ -1,4 +1,5 @@
1 1
 using CallCenter.Utility;
2
+using CallCenter.Utility.Time;
2 3
 using CallCenterApi.DB;
3 4
 using CallCenterApi.Interface.Controllers.Base;
4 5
 using CallCenterApi.Interface.Models.Dto;
@@ -347,23 +348,26 @@ namespace CallCenterApi.Interface.Controllers.callout
347 348
                                 }
348 349
                                 break;
349 350
                             case 4: //从Excel中导入
350
-                                string[] strArr = input.SelectIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
351
-                                var idArr = strArr.Select(x => Convert.ToInt32(x)).ToArray();
352
-                                var fieldList = pageFieldBLL.DataTableToList(pageFieldBLL.GetList($"F_ID in ({string.Join(",", idArr)})").Tables[0]);
353
-                                NPOIHelper npoi = new NPOIHelper();
354
-                                var dtExcel = npoi.ExcelToTable(input.FilePath, 0);
355
-                                for (int i = 0; i < dtExcel.Rows.Count; i++)
351
+                                if (!string.IsNullOrWhiteSpace(input.SelectIds))
356 352
                                 {
357
-                                    var row = dt.NewRow();
358
-                                    for (int j = 0; j < dtExcel.Columns.Count; j++)
353
+                                    string[] strArr = input.SelectIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
354
+                                    var idArr = strArr.Select(x => Convert.ToInt32(x)).ToArray();
355
+                                    var fieldList = pageFieldBLL.DataTableToList(pageFieldBLL.GetList($"F_ID in ({string.Join(",", idArr)})").Tables[0]);
356
+                                    NPOIHelper npoi = new NPOIHelper();
357
+                                    var dtExcel = npoi.ExcelToTable(input.FilePath, 0);
358
+                                    for (int i = 0; i < dtExcel.Rows.Count; i++)
359 359
                                     {
360
-                                        if (fieldList.Count < (j + 1))
361
-                                            break;
362
-                                        row["F_TaskId"] = model.TaskID;
363
-                                        var field = fieldList.SingleOrDefault(x => x.F_Id == idArr[j]);
364
-                                        row[field.F_DBFieldlName] = dtExcel.Rows[i][j];
360
+                                        var row = dt.NewRow();
361
+                                        for (int j = 0; j < dtExcel.Columns.Count; j++)
362
+                                        {
363
+                                            if (fieldList.Count < (j + 1))
364
+                                                break;
365
+                                            row["F_TaskId"] = model.TaskID;
366
+                                            var field = fieldList.SingleOrDefault(x => x.F_Id == idArr[j]);
367
+                                            row[field.F_DBFieldlName] = dtExcel.Rows[i][j];
368
+                                        }
369
+                                        dt.Rows.Add(row);
365 370
                                     }
366
-                                    dt.Rows.Add(row);
367 371
                                 }
368 372
                                 break;
369 373
                         }
@@ -689,7 +693,7 @@ namespace CallCenterApi.Interface.Controllers.callout
689 693
                 sql += $" and F_HJJGID={filter.HJJGID} ";
690 694
             }
691 695
 
692
-            var field = "F_Id,t.TaskName,F_Phone,F_FPState,F_HCState,F_YJState,F_Username,tn.F_CreateTime,F_HJJGName,F_YHFKName";
696
+            var field = "F_Id,t.TaskName,F_Phone,F_FPState,F_HCState,F_YJState,F_Username,tn.F_CreateTime,F_HJJGName,F_YHFKName,F_LastCallTime";
693 697
 
694 698
 
695 699
             var recordCount = 0;
@@ -933,10 +937,10 @@ namespace CallCenterApi.Interface.Controllers.callout
933 937
                 sb.Append(item.F_DBFieldlName + ",");
934 938
                 dicTitle.Add(item.F_DBFieldlName, item.F_Name);
935 939
             }
940
+            Dictionary<string, string> dic = new Dictionary<string, string>();
936 941
             if (!string.IsNullOrWhiteSpace(sb.ToString()))
937 942
             {
938 943
                 var callNum = DbHelperSQL.Query($"SELECT {sb.ToString().Trim(',')} FROM T_Call_TaskTelNum WHERE F_ID={id}").Tables[0];
939
-                Dictionary<string, string> dic = new Dictionary<string, string>();
940 944
                 for (int j = 0; j < callNum.Columns.Count; j++)
941 945
                 {
942 946
                     dic.Add(callNum.Columns[j].ColumnName, callNum.Rows[0][j].ToString());
@@ -955,7 +959,28 @@ namespace CallCenterApi.Interface.Controllers.callout
955 959
 
956 960
                 });
957 961
             }
958
-            return Success("");
962
+            else
963
+            {
964
+                var callNum = DbHelperSQL.Query($"SELECT F_Phone FROM T_Call_TaskTelNum WHERE F_ID={id}").Tables[0];
965
+                for (int j = 0; j < callNum.Columns.Count; j++)
966
+                {
967
+                    dic.Add(callNum.Columns[j].ColumnName, callNum.Rows[0][j].ToString());
968
+                }
969
+                return Success("获取成功", new
970
+                {
971
+                    detail = dic.Select(x => new
972
+                    {
973
+                        field = x.Key,
974
+                        text = "电话号码",
975
+                        value = x.Value,
976
+                    }),
977
+                    pagerid = task.y_TkModelId ?? 0,
978
+                    taskid = task.TaskID,
979
+                    id = id
980
+
981
+                });
982
+            }
983
+
959 984
         }
960 985
         /// <summary>
961 986
         /// 更新拨出号码的 呼叫状态
@@ -1094,57 +1119,63 @@ namespace CallCenterApi.Interface.Controllers.callout
1094 1119
                     paperid = (int)tmodel.y_TkModelId.Value;
1095 1120
                     #region 获取问卷试题信息以及答案
1096 1121
                     var pmodel = pagerInfoBLL.GetModel(paperid);
1097
-                    var qlist = questionBLL.GetModelList(" F_DeleteFlag=0 and F_QuestionId in (select F_QuestionId from T_Ask_PagerItems where F_PagerId=" + paperid + ")  order by F_QuestionId ");
1098
-                    var qilist = questionItemBLL.GetModelList(" F_QuestionId in (select F_QuestionId from T_Ask_PagerItems where F_PagerId=" + paperid + ")  order by F_ItemId ");
1099
-                    var newmodel = new
1122
+                    if (pmodel != null)
1100 1123
                     {
1101
-                        F_Title = pmodel.F_Title,
1102
-                        F_Remark = pmodel.F_Remark,
1103
-                        F_Questions = qlist.Select(q =>
1124
+                        var qlist = questionBLL.GetModelList(" F_DeleteFlag=0 and F_QuestionId in (select F_QuestionId from T_Ask_PagerItems where F_PagerId=" + paperid + ")  order by F_QuestionId ");
1125
+                        var qilist = questionItemBLL.GetModelList(" F_QuestionId in (select F_QuestionId from T_Ask_PagerItems where F_PagerId=" + paperid + ")  order by F_ItemId ");
1126
+                        var newmodel = new
1104 1127
                         {
1105
-                            var answers = "";
1106
-                            var qalist = anslist.Where(al => al.F_QID.Value == q.F_QuestionId).ToList<Model.T_Call_Answers>();
1107
-                            if (qalist.Count > 0)
1128
+                            F_Title = pmodel.F_Title,
1129
+                            F_Remark = pmodel.F_Remark,
1130
+                            F_Questions = qlist.Select(q =>
1108 1131
                             {
1109
-                                if (q.F_Type > 1)
1132
+                                var answers = "";
1133
+                                var qalist = anslist.Where(al => al.F_QID.Value == q.F_QuestionId).ToList<Model.T_Call_Answers>();
1134
+                                if (qalist.Count > 0)
1110 1135
                                 {
1111
-                                    foreach (var item in qalist)
1136
+                                    if (q.F_Type > 1)
1112 1137
                                     {
1113
-                                        answers += item.F_QIID + "|";
1138
+                                        foreach (var item in qalist)
1139
+                                        {
1140
+                                            answers += item.F_QIID + "|";
1141
+                                        }
1142
+                                    }
1143
+                                    else
1144
+                                    {
1145
+                                        answers = qalist[0].F_Answer;
1114 1146
                                     }
1115 1147
                                 }
1116
-                                else
1117
-                                {
1118
-                                    answers = qalist[0].F_Answer;
1119
-                                }
1120
-                            }
1121
-                            return new
1122
-                            {
1123
-                                quesid = q.F_QuestionId,
1124
-                                questitle = q.F_Title,
1125
-                                questype = q.F_Type,
1126
-                                quescontent = q.F_Content,
1127
-                                quesremark = q.F_Remark,
1128
-                                quesanswers = answers.Trim('|'),
1129
-                                quesitems = qilist.Where(qq => qq.F_QuestionId == q.F_QuestionId).Select(qi =>
1148
+                                return new
1130 1149
                                 {
1131
-                                    return new
1150
+                                    quesid = q.F_QuestionId,
1151
+                                    questitle = q.F_Title,
1152
+                                    questype = q.F_Type,
1153
+                                    quescontent = q.F_Content,
1154
+                                    quesremark = q.F_Remark,
1155
+                                    quesanswers = answers.Trim('|'),
1156
+                                    quesitems = qilist.Where(qq => qq.F_QuestionId == q.F_QuestionId).Select(qi =>
1132 1157
                                     {
1133
-                                        itemid = qi.F_ItemId,
1134
-                                        itemname = qi.F_ItemName,
1135
-                                        itemremark = qi.F_Remark,
1136
-                                    };
1137
-                                })
1138
-                            };
1139
-                        })
1140
-                    };
1158
+                                        return new
1159
+                                        {
1160
+                                            itemid = qi.F_ItemId,
1161
+                                            itemname = qi.F_ItemName,
1162
+                                            itemremark = qi.F_Remark,
1163
+                                        };
1164
+                                    })
1165
+                                };
1166
+                            })
1167
+                        };
1168
+                        return Success("获取详情成功", new
1169
+                        {
1170
+                            taskModel = model,
1171
+                            paperModel = newmodel
1172
+                        });
1173
+                    }
1141 1174
                     #endregion
1142
-                    var objy = new
1175
+                    return Success("获取详情成功", new
1143 1176
                     {
1144
-                        taskModel = model,
1145
-                        paperModel = newmodel
1146
-                    };
1147
-                    return Success("获取详情成功", objy);
1177
+                        taskModel = model
1178
+                    });
1148 1179
                 }
1149 1180
             }
1150 1181
             return Error("获取详情失败");
@@ -1407,10 +1438,9 @@ namespace CallCenterApi.Interface.Controllers.callout
1407 1438
         /// 获取通话记录列表
1408 1439
         /// </summary>
1409 1440
         /// <returns></returns>
1441
+        //[Authority]
1410 1442
         public ActionResult GetTalkRecords(FilterTalkRecord filter)
1411 1443
         {
1412
-            //if (!Request.IsAuthenticated)
1413
-            //    return NoToken("未知错误,请重新登录");
1414 1444
             var sort = "ORDER BY startdate desc";
1415 1445
             if (!string.IsNullOrWhiteSpace(filter.SortField))
1416 1446
             {
@@ -1432,9 +1462,17 @@ namespace CallCenterApi.Interface.Controllers.callout
1432 1462
             {
1433 1463
                 where.Append(" and callee like '%" + filter.Phone + "%'");
1434 1464
             }
1465
+
1466
+            //全部=0
1467
+            //未转坐席 = 1,
1468
+            //被叫接通转坐席未接 = 2,
1469
+            //转坐席且接通 = 3,
1435 1470
             if (filter.CallType != 0)
1436 1471
             {
1437
-                where.Append(" and calltype=" + filter.CallType);
1472
+                EnumTalkRecordsCallType calltype;
1473
+                if (!Enum.TryParse(filter.CallType.ToString(), out calltype))
1474
+                    return Error("通话类型字段参数错误");
1475
+                where.Append(" and calltype=" + (int)calltype);
1438 1476
             }
1439 1477
 
1440 1478
             if (!string.IsNullOrWhiteSpace(filter.TalkTime))
@@ -1460,25 +1498,21 @@ namespace CallCenterApi.Interface.Controllers.callout
1460 1498
 
1461 1499
             if (filter.StartTime == null || filter.EndTime == null)
1462 1500
             {
1463
-                filter.StartTime = DateTime.Now.AddDays(-3);
1464
-                filter.EndTime = DateTime.Now;
1501
+                filter.StartTime = DateTools.FirstSecondOfOneDay(DateTime.Now);
1502
+                filter.EndTime = DateTools.LastSecondOfOneDay(DateTime.Now);
1465 1503
             }
1466
-            where.Append(" and datediff(s,'" + filter.StartTime + "',getdate())>=0 and datediff(s,getdate(),'" + filter.EndTime + "')>=0 ");
1504
+            where.Append(" and datediff(s,'" + filter.StartTime + "',StartDate)>=0 and datediff(s,EndDate,'" + filter.EndTime + "')>=0 ");
1505
+
1467 1506
 
1468 1507
 
1469 1508
 
1470
-            // 全部=0
1471
-            // 未接通=1       
1472
-            // 接通排队=2
1473
-            // 接通未转入坐席=3
1474
-            // 接通且分配坐席=4  
1475 1509
             int recordCount = 0;
1476 1510
             Model.PageData<Model.CallResult> pageModel = new Model.PageData<Model.CallResult>();
1477 1511
             StringBuilder fields = new StringBuilder();
1478 1512
             var dt = BLL.PagerBLL.GetListPager(
1479 1513
                        "V_AutoCallResult",
1480
-                       "V_AutoCallResult.id",
1481
-                       "V_AutoCallResult.id,itemid, callee, agentid, username,startdate,enddate,getinagentdate,calltype,talktime,RecordPath",
1514
+                       "Id",
1515
+                       "id,itemid, callee, agentid, username,startdate,enddate,getinagentdate,calltype,talktime,RecordPath",
1482 1516
                        where.ToString(),
1483 1517
                        sort,
1484 1518
                        filter.PageSize,
@@ -1512,8 +1546,8 @@ namespace CallCenterApi.Interface.Controllers.callout
1512 1546
                     enddate = x.EndDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "",
1513 1547
                     recordpath = recordPath,
1514 1548
                     username = x.Username,
1515
-                    state = x.State,
1516
-                    talktime = x.TalkTime > 0 ? x.TalkTime.ToString() : ""
1549
+                    calltype = Enum.Parse(typeof(EnumTalkRecordsCallType), x.CallType.ToString()).ToString(),
1550
+                    talktime = x.TalkTime > 0 ? x.TalkTime.ToString() : "0"
1517 1551
                 });
1518 1552
             });
1519 1553
 
@@ -1524,6 +1558,21 @@ namespace CallCenterApi.Interface.Controllers.callout
1524 1558
             };
1525 1559
             return Content(obj.ToJson());
1526 1560
         }
1561
+
1562
+        public ActionResult GetCallType()
1563
+        {
1564
+            Dictionary<string, string> dic = new Dictionary<string, string>();
1565
+            foreach (int item in Enum.GetValues(typeof(EnumTalkRecordsCallType)))
1566
+            {
1567
+                dic.Add(((EnumTalkRecordsCallType)item).ToString(), item.ToString());
1568
+            }
1569
+            return Success("", dic.Select(x => new
1570
+            {
1571
+                text = x.Key,
1572
+                value = x.Value
1573
+            }));
1574
+        }
1575
+
1527 1576
         #endregion
1528 1577
 
1529 1578
         #region 过滤号码

+ 1 - 1
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Models/Dto/AutoCallResordDto.cs

@@ -16,7 +16,7 @@ namespace CallCenterApi.Interface.Models.Dto
16 16
         public string enddate { get; set; }
17 17
         public string recordpath { get; set; }
18 18
         public string username { get; set; }
19
-        public string state { get; set; }
19
+        public string calltype { get; set; }
20 20
         public string talktime { get; set; }
21 21
 
22 22
     }

+ 8 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Models/Filter/FilterTalkRecord.cs

@@ -56,4 +56,12 @@ namespace CallCenterApi.Interface.Models.Filter
56 56
         enddate = 6,
57 57
         talktime = 7
58 58
     }
59
+
60
+
61
+    public enum EnumTalkRecordsCallType
62
+    {
63
+        未转坐席 = 1,
64
+        被叫接通转坐席未接 = 2,
65
+        转坐席且接通 = 3,
66
+    }
59 67
 }

+ 1 - 1
CallCenterApi/CallCenterApi.Model/CallResult.cs

@@ -43,7 +43,7 @@ namespace CallCenterApi.Model
43 43
         /// <summary>
44 44
         /// 呼叫状态
45 45
         /// </summary>
46
-        public string State { get; set; }
46
+        public int CallType { get; set; }
47 47
         /// <summary>
48 48
         /// 通话时长
49 49
         /// </summary>

+ 1 - 0
CallCenterCommon/CallCenter.Utility/CallCenter.Utility.csproj

@@ -78,6 +78,7 @@
78 78
     <Compile Include="Linq\PredicateExtensionses.cs" />
79 79
     <Compile Include="SaltAndHashHelper.cs" />
80 80
     <Compile Include="SysInformationHelper.cs" />
81
+    <Compile Include="Time\DataTools.cs" />
81 82
     <Compile Include="Time\DateTimeConvert.cs" />
82 83
     <Compile Include="VerifyCode\VerifyCode.cs" />
83 84
     <Compile Include="Web\TreeGrid\TreeGrid.cs" />

+ 138 - 0
CallCenterCommon/CallCenter.Utility/Time/DataTools.cs

@@ -0,0 +1,138 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Threading.Tasks;
6
+
7
+namespace CallCenter.Utility.Time
8
+{
9
+    public class DateTools
10
+    {
11
+        /// <summary>  
12
+        /// 得到本周第一天(以星期天为第一天)  
13
+        /// </summary>  
14
+        /// <param name="datetime"></param>  
15
+        /// <returns></returns>  
16
+        public static DateTime GetWeekFirstDaySun(DateTime datetime)
17
+        {
18
+            //星期天为第一天  
19
+            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
20
+            int daydiff = (-1) * weeknow;
21
+
22
+            //本周第一天  
23
+            string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
24
+            return Convert.ToDateTime(FirstDay);
25
+        }
26
+
27
+        /// <summary>  
28
+        /// 得到本周第一天(以星期一为第一天)  
29
+        /// </summary>  
30
+        /// <param name="datetime"></param>  
31
+        /// <returns></returns>  
32
+        public static DateTime GetWeekFirstDayMon(DateTime datetime)
33
+        {
34
+            //星期一为第一天  
35
+            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
36
+
37
+            //因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。  
38
+            weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1));
39
+            int daydiff = (-1) * weeknow;
40
+
41
+            //本周第一天  
42
+            string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
43
+            return Convert.ToDateTime(FirstDay);
44
+        }
45
+
46
+        /// <summary>  
47
+        /// 得到本周最后一天(以星期六为最后一天)  
48
+        /// </summary>  
49
+        /// <param name="datetime"></param>  
50
+        /// <returns></returns>  
51
+        public static DateTime GetWeekLastDaySat(DateTime datetime)
52
+        {
53
+            //星期六为最后一天  
54
+            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
55
+            int daydiff = (7 - weeknow) - 1;
56
+
57
+            //本周最后一天  
58
+            string LastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
59
+            return Convert.ToDateTime(LastDay);
60
+        }
61
+
62
+        /// <summary>  
63
+        /// 得到本周最后一天(以星期天为最后一天)  
64
+        /// </summary>  
65
+        /// <param name="datetime"></param>  
66
+        /// <returns></returns>  
67
+        public static DateTime GetWeekLastDaySun(DateTime datetime)
68
+        {
69
+            //星期天为最后一天  
70
+            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
71
+            weeknow = (weeknow == 0 ? 7 : weeknow);
72
+            int daydiff = (7 - weeknow);
73
+
74
+            //本周最后一天  
75
+            string LastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
76
+            return Convert.ToDateTime(LastDay);
77
+        }
78
+
79
+        /// <summary>
80
+        /// 取得某月的第一天
81
+        /// </summary>
82
+        /// <param name="datetime">要取得月份第一天的时间</param>
83
+        /// <returns></returns>
84
+        public static DateTime FirstDayOfMonth(DateTime datetime)
85
+        {
86
+            return datetime.AddDays(1 - datetime.Day);
87
+        }
88
+        /// <summary>
89
+        /// 取得某月的最后一天
90
+        /// </summary>
91
+        /// <param name="datetime">要取得月份最后一天的时间</param>
92
+        /// <returns></returns>
93
+        public static DateTime LastDayOfMonth(DateTime datetime)
94
+        {
95
+            return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1);
96
+        }
97
+
98
+        /// <summary>
99
+        /// 取得上个月第一天
100
+        /// </summary>
101
+        /// <param name="datetime">要取得上个月第一天的当前时间</param>
102
+        /// <returns></returns>
103
+        public static DateTime FirstDayOfPreviousMonth(DateTime datetime)
104
+        {
105
+            return datetime.AddDays(1 - datetime.Day).AddMonths(-1);
106
+        }
107
+
108
+
109
+        /// <summary>
110
+        /// 取得上个月的最后一天
111
+        /// </summary>
112
+        /// <param name="datetime">要取得上个月最后一天的当前时间</param>
113
+        /// <returns></returns>
114
+        public static DateTime LastDayOfPrdviousMonth(DateTime datetime)
115
+        {
116
+            return datetime.AddDays(1 - datetime.Day).AddDays(-1);
117
+        }
118
+
119
+        /// <summary>
120
+        /// 获取当天第一秒的时间
121
+        /// </summary>
122
+        /// <param name="datetime"></param>
123
+        /// <returns></returns>
124
+        public static DateTime FirstSecondOfOneDay(DateTime datetime)
125
+        {
126
+            return datetime.Date.AddSeconds(1);
127
+        }
128
+        /// <summary>
129
+        /// 获取当天最后一秒的时间
130
+        /// </summary>
131
+        /// <param name="datetime"></param>
132
+        /// <returns></returns>
133
+        public static DateTime LastSecondOfOneDay(DateTime datetime)
134
+        {
135
+            return datetime.Date.AddDays(1).AddSeconds(-1);
136
+        }
137
+    }
138
+}

+ 5 - 0
CallCenterCommon/CallCenter.Utility/Time/DateTimeConvert.cs

@@ -287,5 +287,10 @@ namespace CallCenter.Utility
287 287
             DateTime t1 = t.AddDays(iDay - RInt);
288 288
             return t1;
289 289
         }
290
+
291
+
292
+
293
+
294
+
290 295
     }
291 296
 }