1550076451 1 year ago
parent
commit
b2733e5312

+ 2 - 16
CallCenterApi/CallCenterApi.BLL/T_Sys_SystemConfig.cs

@@ -102,22 +102,8 @@ namespace CallCenterApi.BLL
102 102
         /// </summary>
103 103
         public List<Model.T_Sys_SystemConfig> GetModelList(string strWhere)
104 104
         {
105
-            var dt = GetRedis();
106
-            if (dt != null)
107
-            {
108
-                var dtnew = new DataTable();
109
-                var drs = dt.Select(strWhere);
110
-                if (drs.Length > 0)
111
-                {
112
-                    dtnew = drs.CopyToDataTable();
113
-                }
114
-                return DataTableToList(dtnew);
115
-            }
116
-            else
117
-            {
118
-                DataSet ds = dal.GetList(strWhere);
119
-                return DataTableToList(ds.Tables[0]);
120
-            }
105
+            DataSet ds = dal.GetList(strWhere);
106
+            return DataTableToList(ds.Tables[0]);
121 107
         }
122 108
         /// <summary>
123 109
         /// 获得数据列表

+ 16 - 7
CallCenterApi/CallCenterApi.DAL/submit_case_finish_info.cs

@@ -51,9 +51,9 @@ namespace CallCenterApi.DAL
51 51
         {
52 52
             StringBuilder strSql = new StringBuilder();
53 53
             strSql.Append("insert into submit_case_finish_info(");
54
-            strSql.Append("CASE_SERIAL,AREA_CODE,FINISH_TYPE,DEPT_NAME,DEPT_CODE,FINISH_TIME,FINISH_NAME,FINISH_CONTENT,END_TIME,END_LENGTH,CreateTime)");
54
+            strSql.Append("CASE_SERIAL,AREA_CODE,FINISH_TYPE,DEPT_NAME,DEPT_CODE,FINISH_TIME,FINISH_NAME,FINISH_CONTENT,END_TIME,END_LENGTH,CreateTime,FINISH_STATUS)");
55 55
             strSql.Append(" values (");
56
-            strSql.Append("@CASE_SERIAL,@AREA_CODE,@FINISH_TYPE,@DEPT_NAME,@DEPT_CODE,@FINISH_TIME,@FINISH_NAME,@FINISH_CONTENT,@END_TIME,@END_LENGTH,@CreateTime)");
56
+            strSql.Append("@CASE_SERIAL,@AREA_CODE,@FINISH_TYPE,@DEPT_NAME,@DEPT_CODE,@FINISH_TIME,@FINISH_NAME,@FINISH_CONTENT,@END_TIME,@END_LENGTH,@CreateTime,@FINISH_STATUS)");
57 57
             strSql.Append(";select @@IDENTITY");
58 58
             SqlParameter[] parameters = {
59 59
                     new SqlParameter("@CASE_SERIAL", SqlDbType.NVarChar,50),
@@ -66,7 +66,10 @@ namespace CallCenterApi.DAL
66 66
                     new SqlParameter("@FINISH_CONTENT", SqlDbType.NVarChar,-1),
67 67
                     new SqlParameter("@END_TIME", SqlDbType.NVarChar,50),
68 68
                     new SqlParameter("@END_LENGTH", SqlDbType.Int,4),
69
-                    new SqlParameter("@CreateTime", SqlDbType.DateTime)};
69
+                    new SqlParameter("@CreateTime", SqlDbType.DateTime),
70
+                    new SqlParameter("@FINISH_STATUS", SqlDbType.NVarChar,50)
71
+                    
72
+            };
70 73
             parameters[0].Value = model.CASE_SERIAL;
71 74
             parameters[1].Value = model.AREA_CODE;
72 75
             parameters[2].Value = model.FINISH_TYPE;
@@ -78,7 +81,8 @@ namespace CallCenterApi.DAL
78 81
             parameters[8].Value = model.END_TIME;
79 82
             parameters[9].Value = model.END_LENGTH;
80 83
             parameters[10].Value = model.CreateTime;
81
-
84
+            parameters[11].Value = model.FINISH_STATUS;
85
+            
82 86
             object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
83 87
             if (obj == null)
84 88
             {
@@ -196,7 +200,7 @@ namespace CallCenterApi.DAL
196 200
         {
197 201
 
198 202
             StringBuilder strSql = new StringBuilder();
199
-            strSql.Append("select  top 1 F_ID,CASE_SERIAL,AREA_CODE,FINISH_TYPE,DEPT_NAME,DEPT_CODE,FINISH_TIME,FINISH_NAME,FINISH_CONTENT,END_TIME,END_LENGTH,CreateTime from submit_case_finish_info ");
203
+            strSql.Append("select  top 1 F_ID,CASE_SERIAL,FINISH_STATUS,AREA_CODE,FINISH_TYPE,DEPT_NAME,DEPT_CODE,FINISH_TIME,FINISH_NAME,FINISH_CONTENT,END_TIME,END_LENGTH,CreateTime from submit_case_finish_info ");
200 204
             strSql.Append(" where F_ID=@F_ID");
201 205
             SqlParameter[] parameters = {
202 206
                     new SqlParameter("@F_ID", SqlDbType.Int,4)
@@ -272,6 +276,11 @@ namespace CallCenterApi.DAL
272 276
                 {
273 277
                     model.CreateTime = DateTime.Parse(row["CreateTime"].ToString());
274 278
                 }
279
+                if (row["FINISH_STATUS"] != null)
280
+                {
281
+                    model.FINISH_STATUS = row["FINISH_STATUS"].ToString();
282
+                }
283
+                
275 284
             }
276 285
             return model;
277 286
         }
@@ -282,7 +291,7 @@ namespace CallCenterApi.DAL
282 291
         public DataSet GetList(string strWhere)
283 292
         {
284 293
             StringBuilder strSql = new StringBuilder();
285
-            strSql.Append("select F_ID,CASE_SERIAL,AREA_CODE,FINISH_TYPE,DEPT_NAME,DEPT_CODE,FINISH_TIME,FINISH_NAME,FINISH_CONTENT,END_TIME,END_LENGTH,CreateTime ");
294
+            strSql.Append("select F_ID,FINISH_STATUS,CASE_SERIAL,AREA_CODE,FINISH_TYPE,DEPT_NAME,DEPT_CODE,FINISH_TIME,FINISH_NAME,FINISH_CONTENT,END_TIME,END_LENGTH,CreateTime ");
286 295
             strSql.Append(" FROM submit_case_finish_info ");
287 296
             if (strWhere.Trim() != "")
288 297
             {
@@ -302,7 +311,7 @@ namespace CallCenterApi.DAL
302 311
             {
303 312
                 strSql.Append(" top " + Top.ToString());
304 313
             }
305
-            strSql.Append(" F_ID,CASE_SERIAL,AREA_CODE,FINISH_TYPE,DEPT_NAME,DEPT_CODE,FINISH_TIME,FINISH_NAME,FINISH_CONTENT,END_TIME,END_LENGTH,CreateTime ");
314
+            strSql.Append(" F_ID,CASE_SERIAL,FINISH_STATUS,AREA_CODE,FINISH_TYPE,DEPT_NAME,DEPT_CODE,FINISH_TIME,FINISH_NAME,FINISH_CONTENT,END_TIME,END_LENGTH,CreateTime ");
306 315
             strSql.Append(" FROM submit_case_finish_info ");
307 316
             if (strWhere.Trim() != "")
308 317
             {

+ 4 - 1
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Configs/system.config

@@ -145,6 +145,9 @@
145 145
 
146 146
   <add key="maindeptid" value="1600"/>
147 147
   <add key="PushErrorOrder" value="http://localhost:51927/api/Info/addorder"/>
148
-  
149 148
 
149
+  <add key="DingTalk_AppKey" value="ding77tk1okpuoxhitxs"/>
150
+  <add key="DingTalk_AppSecret" value="lrV9pt51pjxUY00qCkPdoZ-393can29IujDFdlR9SZnechH_pSG1Tl1maWocWrDB"/>
151
+  <add key="DingTalk_AgentId" value="213552039"/>
152
+  <add key="DingTalk_TokenCacheTime" value="7200"/>
150 153
 </appSettings>

+ 613 - 45
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/workorder/AffairsController.cs

@@ -102,16 +102,25 @@ namespace CallCenterApi.Interface.Controllers.workorder
102 102
                 }
103 103
                 var modellist = new BLL.T_Bus_WorkOrder
104 104
                     ().GetModelList(100000, "F_WorkOrderId in( " +
105
-                    " select F_WorkOrderId  from T_Bus_Feedback  " +
106
-                    " where F_CreateTime > '2023-11-10 18:46:48.000'  " +
107
-                    " and F_CreateTime < '2024-03-13 17:02:45.000'  " +
108
-                    $" and F_IsDelete = 0 and F_Type = 1) and F_Id>={Phone} and F_IsDelete =0", " F_Id asc");
105
+                    " select b.case_serial from [dbo].[submit_case_finish_info] a left join [dbo].[submit_case_info] b on a.case_serial = b.case_serial  " +
106
+                    " where a.finish_type = '20' and b.case_isvisit = '1' " +
107
+                    " and b.applicant_time >= '2024-06-01 00:00:00' and b.applicant_time <= '2024-06-30 23:59:59' " +
108
+                    " and a.case_serial not in " +
109
+                    " (select a.case_serial from[dbo].[submit_case_finish_info] a left join[dbo].[submit_case_info] b on a.case_serial = b.case_serial " +
110
+                    " left join(select distinct case_serial from[dbo].[submit_task_handle_info]) c on a.case_serial = c.case_serial " +
111
+                    " left join(select distinct case_serial from[dbo].[submit_case_process_info]) d on a.case_serial = d.case_serial " +
112
+                    " left join(select distinct case_serial from[dbo].[submit_case_visit_info]) e on a.case_serial = e.case_serial " +
113
+                    " left join(select distinct case_serial from[dbo].[submit_case_visit_detail_info]) f on a.case_serial = f.case_serial " +
114
+                    " where a.finish_type = '20' and b.case_isvisit = '1' " +
115
+                    " and b.applicant_time >= '2024-06-01 00:00:00' and b.applicant_time <= '2024-06-30 23:59:59' " +
116
+                    " and  b.case_serial is not null and c.case_serial is not null and " +
117
+                    " d.case_serial is not null and e.case_serial is not null and f.case_serial is not null))", " F_Id asc");
109 118
                 if (modellist != null && modellist.Count > 0)
110 119
                 {
111 120
 
112 121
                     foreach (var it in modellist)
113 122
                     {
114
-                        Thread.Sleep(500);
123
+                        Thread.Sleep(3000);
115 124
                         Phone = it.F_Id;
116 125
                         Phonecount++;
117 126
                         WebClient web = new WebClient();
@@ -150,22 +159,75 @@ namespace CallCenterApi.Interface.Controllers.workorder
150 159
         #region 上传省政务平台
151 160
         #region 服务工单受理
152 161
 
162
+       
153 163
         public class paras
154 164
         {
165
+            /// <summary>
166
+            /// 行政区划代码
167
+            /// </summary>
155 168
             public string AREA_CODE { set; get; }
169
+            /// <summary>
170
+            /// 在线服务代表数
171
+            /// </summary>
156 172
             public string CRNT_SEATNUM { set; get; }
173
+            /// <summary>
174
+            /// 通话服务代表数
175
+            /// </summary>
157 176
             public string CRNT_TELNUM { set; get; }
177
+            /// <summary>
178
+            /// 今日诉求总量
179
+            /// </summary>
158 180
             public int TDY_NUM { set; get; }
181
+            /// <summary>
182
+            /// 今日电话总量
183
+            /// </summary>
159 184
             public string TDY_TELNUM { set; get; }
185
+            /// <summary>
186
+            /// 今日政务服务网诉求量
187
+            /// </summary>
160 188
             public string TDY_ZWNUM { set; get; }
189
+            /// <summary>
190
+            /// 今日网站诉求量
191
+            /// </summary>
161 192
             public string TDY_WZNUM { set; get; }
193
+            /// <summary>
194
+            /// 今日微信诉求量
195
+            /// </summary>
162 196
             public string TDY_WXNUM { set; get; }
197
+            /// <summary>
198
+            /// 今日APP诉求量
199
+            /// </summary>
163 200
             public string TDY_APNUM { set; get; }
201
+            /// <summary>
202
+            /// 今日其他诉求量
203
+            /// </summary>
164 204
             public string TDY_OTNUM { set; get; }
205
+            /// <summary>
206
+            /// 今日电话接通率
207
+            /// </summary>
165 208
             public string TDY_TELRATE { set; get; }
209
+            /// <summary>
210
+            /// 今日来电量
211
+            /// </summary>
166 212
             public string TDY_CALLNUM { set; get; }
213
+            /// <summary>
214
+            /// 今日接通量
215
+            /// </summary>
167 216
             public string TDY_CONNECTNUM { set; get; }
217
+            ///// <summary>
218
+            ///// 今日15秒接通量
219
+            ///// </summary>
220
+            //public string TDY_15_CONNECTNUM { set; get; }
221
+            ///// <summary>
222
+            ///// 今日回拨接通量
223
+            ///// </summary>
224
+            //public string TDY_RETURN_CONNECTNUM { set; get; }
168 225
         }
226
+
227
+
228
+
229
+
230
+
169 231
         string AREA_CODE = Configs.GetValue("AREACODE");
170 232
         string FrontUrl = Configs.GetValue("FrontUrl");
171 233
         string NativeURL = Configs.GetValue("NativeURL");
@@ -189,12 +251,7 @@ namespace CallCenterApi.Interface.Controllers.workorder
189 251
             string TH = "select top 1  Conversation from rep_service WITH(NOLOCK)  ";
190 252
             paras.CRNT_TELNUM = DbHelperSQL.GetSingle(TH).ToString();
191 253
 
192
-            // string GDCount = "select COUNT(1) from  T_Bus_WorkOrder WITH(NOLOCK)  where datediff(day , F_CreateTime   , getdate())= 0  ";
193
-
194
-
195
-            //string ldCount = "SELECT COUNT(1) FROM T_Call_CallRecords  WITH(NOLOCK)  WHERE datediff(day , BeginTime    , getdate())= 0    ";
196
-            //var ld = DbHelperSQL.GetSingle(ldCount).ToString();
197
-            //paras.TDY_CALLNUM  = ld;
254
+          
198 255
 
199 256
             string DHCount = "SELECT  COUNT(1)  FROM T_Bus_WorkOrder WITH(NOLOCK) WHERE F_InfoSource = 1 AND datediff(day , F_CreateTime   , getdate())= 0    ";
200 257
             paras.TDY_TELNUM = DbHelperSQL.GetSingle(DHCount).ToString();
@@ -215,18 +272,7 @@ namespace CallCenterApi.Interface.Controllers.workorder
215 272
             paras.TDY_NUM = int.Parse(paras.TDY_TELNUM) + int.Parse(paras.TDY_WZNUM) + int.Parse(paras.TDY_WXNUM) +
216 273
                 int.Parse(paras.TDY_APNUM) + int.Parse(paras.TDY_OTNUM);
217 274
 
218
-            //string jt = "SELECT COUNT(1) FROM T_Call_CallRecords  WITH(NOLOCK)  WHERE datediff(day , BeginTime    , getdate())= 0 and CallType =0  AND CallState =1  ";
219
-            //var jtl = DbHelperSQL.GetSingle(jt).ToString();
220
-            //paras.TDY_CONNECTNUM  = jtl;
221
-
222
-            ////  string wjt = "SELECT COUNT(1) FROM T_Call_CallRecords  WITH(NOLOCK)  WHERE datediff(day , BeginTime    , getdate())= 0 AND CallState =0  and isnull(UserCode,'')!=''";
223
-            ////var wjt1 = DbHelperSQL.GetSingle(wjt).ToString();
224
-            //string ldcount = "SELECT COUNT(1) FROM T_Call_CallRecords  WITH(NOLOCK) " +
225
-            //     " WHERE datediff(day , BeginTime    , getdate())= 0 and  CallType =0  " +
226
-            //     " and isnull(UserCode,'')!=''";
227
-            //var ldcount1 = DbHelperSQL.GetSingle(ldcount).ToString();
228
-            //paras.TDY_CALLNUM = ldcount1;
229
-            //string TDY_TELRATE = "0";
275
+           
230 276
             string jt = "SELECT COUNT(1) FROM T_Call_CallRecords  WITH(NOLOCK)  " +
231 277
                   "WHERE datediff(day , BeginTime    , getdate())= 0 AND CallState =1  ";
232 278
             var jtl = DbHelperSQL.GetSingle(jt).ToString();
@@ -248,18 +294,26 @@ namespace CallCenterApi.Interface.Controllers.workorder
248 294
                     TDY_TELRATE = string.Format("{0:f2}", float.Parse(jtl) / total * 100);
249 295
                     paras.TDY_TELRATE = TDY_TELRATE;
250 296
                 }
251
-                //float total = float.Parse(ldcount1) ;
252
-                //if (total > 0)
253
-                //{
254
-                //    TDY_TELRATE = string.Format("{0:f2}", float.Parse(jtl) / total * 100);
255
-                //    paras.TDY_TELRATE = TDY_TELRATE;
256
-                //}
297
+               
257 298
             }
258 299
             catch
259 300
             {
260 301
                 paras.TDY_TELRATE = TDY_TELRATE;
261 302
             }
262 303
 
304
+            //string CONNECTNUM = "SELECT COUNT(1) FROM T_Call_CallRecords  WITH(NOLOCK)  " +
305
+            //   "  WHERE datediff(day , BeginTime    , getdate())= 0 AND CallState = 1" +
306
+            //   "  and IvrEndTime is not null and RingStartTime is not null" +
307
+            //   "   and DATEDIFF(SECOND , IvrEndTime, RingStartTime)<= 15  ";
308
+            //var CONNECTNUM15 = DbHelperSQL.GetSingle(CONNECTNUM).ToString();
309
+            //paras.TDY_15_CONNECTNUM = CONNECTNUM15;
310
+
311
+
312
+            //string RETURN = " SELECT count(1) FROM T_Call_CallRecords WITH(NOLOCK) " +
313
+            //    "  WHERE datediff(day , BeginTime    , getdate())= 0 AND CallState = 1 " +
314
+            //    "     and CallbackCallid is not null and CallType = 1  ";
315
+            //var RETURN_CONNECTNUM = DbHelperSQL.GetSingle(RETURN).ToString();
316
+            //paras.TDY_RETURN_CONNECTNUM = RETURN_CONNECTNUM;
263 317
 
264 318
 
265 319
 
@@ -276,7 +330,6 @@ namespace CallCenterApi.Interface.Controllers.workorder
276 330
                    "", jsonParam, DateTime.Now, jo.code, jo.message, "实时服务信息上报接口", "", "推送成功数:"
277 331
                    + jo.body.successCount + " 推送总数:" + jo.body.totalCount);
278 332
                 object objres = DbHelperSQL.GetSingle(strSql);
279
-
280 333
                 string Sql = string.Format(@"INSERT INTO submit_dept_crnt_status ( [AREA_CODE], [CRNT_SEATNUM], [CRNT_TELNUM], 
281 334
                 [TDY_NUM], [TDY_TELNUM], [TDY_ZWNUM], [TDY_WZNUM], [TDY_WXNUM] , [TDY_APNUM]
282 335
                 , [TDY_OTNUM], [TDY_TELRATE], [TDY_CALLNUM], [TDY_CONNECTNUM], [CreateTime]) 
@@ -285,7 +338,17 @@ namespace CallCenterApi.Interface.Controllers.workorder
285 338
                   , paras.TDY_ZWNUM, paras.TDY_WZNUM, paras.TDY_WXNUM, paras.TDY_APNUM, paras.TDY_OTNUM,
286 339
                   paras.TDY_TELRATE, paras.TDY_CALLNUM, paras.TDY_CONNECTNUM, DateTime.Now);
287 340
                 object res = DbHelperSQL.GetSingle(Sql);
288
-            }
341
+            
342
+
343
+            //string Sql = string.Format(@"INSERT INTO submit_dept_crnt_status ( [AREA_CODE], [CRNT_SEATNUM], [CRNT_TELNUM], 
344
+            //[TDY_NUM], [TDY_TELNUM], [TDY_ZWNUM], [TDY_WZNUM], [TDY_WXNUM] , [TDY_APNUM]
345
+            //, [TDY_OTNUM], [TDY_TELRATE], [TDY_CALLNUM], [TDY_CONNECTNUM], [CreateTime],[TDY_15_CONNECTNUM],[TDY_RETURN_CONNECTNUM]) 
346
+            //   values   ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}') ;select @@IDENTITY ",
347
+            //  paras.AREA_CODE, paras.CRNT_SEATNUM, paras.CRNT_TELNUM, paras.TDY_NUM, paras.TDY_TELNUM
348
+            //  , paras.TDY_ZWNUM, paras.TDY_WZNUM, paras.TDY_WXNUM, paras.TDY_APNUM, paras.TDY_OTNUM,
349
+            //  paras.TDY_TELRATE, paras.TDY_CALLNUM, paras.TDY_CONNECTNUM, DateTime.Now, paras.TDY_15_CONNECTNUM, paras.TDY_RETURN_CONNECTNUM);
350
+            //object res = DbHelperSQL.GetSingle(Sql);
351
+          }
289 352
             else
290 353
             {
291 354
                 string error = "";
@@ -328,6 +391,9 @@ namespace CallCenterApi.Interface.Controllers.workorder
328 391
 
329 392
         }
330 393
 
394
+
395
+    
396
+
331 397
         public class submit_case_info
332 398
         {
333 399
             public List<jsonList> jsonList { set; get; }
@@ -1949,6 +2015,7 @@ namespace CallCenterApi.Interface.Controllers.workorder
1949 2015
                                 try
1950 2016
                                 {
1951 2017
 
2018
+
1952 2019
                                     string jsonParam = "paras=" + paras.ToJson() + "&message=签收工单&url=http://59.227.93.14:9000/share/fwgdqsjk&WorkOrderId=" + modelT_Bus_WorkOrder.F_WorkOrderId;
1953 2020
                                     var responseString = HttpMethods.HttpPost(FrontUrl +"/Affairs/receive_Push", jsonParam);
1954 2021
                                     bendiack jo = JsonConvert.DeserializeObject<bendiack>(responseString);
@@ -2019,6 +2086,214 @@ namespace CallCenterApi.Interface.Controllers.workorder
2019 2086
                 return Error("权限不足");
2020 2087
             }
2021 2088
         }
2089
+
2090
+        public class signgoback
2091
+        {
2092
+            public string code { set; get; }
2093
+            public string message { set; get; }
2094
+            public signbody body { set; get; }
2095
+        }
2096
+        public class signbody
2097
+        {
2098
+            public string TFDBACKTIME_BF { set; get; }
2099
+        }
2100
+        public ActionResult case_sign1(string workorderid)
2101
+        {
2102
+            Model.T_Bus_WorkOrder modelT_Bus_WorkOrder = workorderBLL.GetModel(workorderid);
2103
+            if (modelT_Bus_WorkOrder != null)
2104
+            {
2105
+                var affairs = affairsBll.GetModel(modelT_Bus_WorkOrder.F_WorkOrderId);
2106
+                receive_case_sign paras = new receive_case_sign();
2107
+                paras.TROWGUID = affairs.TROWGUID;
2108
+                paras.SIGN_NAME = "审核员";
2109
+                Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
2110
+                try
2111
+                {
2112
+                    string jsonParam = "", responseString = "";
2113
+                    string token = GetToken();
2114
+                    if (string.IsNullOrEmpty(token))
2115
+                        return Error("token获取失败");
2116
+                    jsonParam = "access_token=" + token + "&paras=" + paras.ToJson();
2117
+                    responseString = HttpMethods.HttpPost("http://59.227.93.14:9000/share/fwgdqsjk", jsonParam);
2118
+
2119
+                    signgoback jo = JsonConvert.DeserializeObject<signgoback>(responseString);
2120
+                    if (jo.code == "1")
2121
+                    {
2122
+
2123
+                        string strSql = string.Format(@"INSERT INTO T_Sys_PushMsg ( [WorkOrderId], [Conent], [CreatTime], [Code], [Message], [Title], [ErrorObjs], [Remarks]) 
2124
+                   values   ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}') ;select @@IDENTITY ", modelT_Bus_WorkOrder.F_WorkOrderId, paras, DateTime.Now, jo.code, jo.message, "签收工单", "", "");
2125
+                        object objres = DbHelperSQL.GetSingle(strSql);
2126
+                        if (jo.body != null)
2127
+                        {
2128
+                            affairs.TFDBACKTIME_BF = jo.body.TFDBACKTIME_BF;
2129
+                            affairsBll.Update(affairs);
2130
+                        }
2131
+                        keyValuePairs.Add("F_Administrative", "0");
2132
+                        return Success("成功");
2133
+                    }
2134
+                    else
2135
+                    {
2136
+                        if (!jo.message.Contains("该任务单已签收"))
2137
+                        {
2138
+                            keyValuePairs.Add("F_Administrative", "2");
2139
+                            LogFactory.GetLogger("签收").Error(jo.message);
2140
+                            return Error("签收失败");
2141
+                        }
2142
+                        else
2143
+                        {
2144
+                            keyValuePairs.Add("F_Administrative", "0");
2145
+                        }
2146
+                        string strSql = string.Format(@"INSERT INTO T_Sys_PushMsg ( [WorkOrderId], [Conent], [CreatTime], [Code], [Message], [Title], [ErrorObjs], [Remarks]) 
2147
+                   values   ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}') ;select @@IDENTITY ", modelT_Bus_WorkOrder.F_WorkOrderId, paras, DateTime.Now, jo.code, jo.message, "签收工单", jo.message, "");
2148
+                        object objres = DbHelperSQL.GetSingle(strSql);
2149
+                        return Error(jo.message);
2150
+                    }
2151
+
2152
+
2153
+                }
2154
+                catch (Exception e)
2155
+                {
2156
+                    keyValuePairs.Add("F_Administrative", "2");
2157
+                    LogFactory.GetLogger("签收").Error(e.Message);
2158
+                }
2159
+                bool n = workorderBLL.UpdateWorkOrder(modelT_Bus_WorkOrder.F_Id, keyValuePairs);
2160
+                return Success("");
2161
+            }
2162
+            else
2163
+                return Error("");
2164
+        }
2165
+        /// <summary>
2166
+        /// 提交签收工单
2167
+        /// </summary>
2168
+        /// <param name="ids"></param>
2169
+        /// <returns></returns>
2170
+        [Authority]
2171
+        public ActionResult SubmitWorkOrder1(string[] ids)
2172
+        {
2173
+            if (User.F_RoleCode == "ZXHWY" || User.F_RoleCode == "ZXBZ" || User.F_RoleCode == "SPZJZ" || User.F_RoleCode == "GLY" || User.F_RoleCode == "ZXLD" || User.F_RoleCode == "SPZJZ" || User.F_RoleCode == "DDZG" || User.F_RoleCode == "MTDD" || User.F_RoleCode == "DMTSH")
2174
+            {
2175
+                if (ids != null && ids.Length > 0)
2176
+                {
2177
+                    foreach (string str in ids)
2178
+                    {
2179
+                        using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 10, 0)))
2180
+                        {
2181
+                            Model.T_Bus_WorkOrder modelT_Bus_WorkOrder = workorderBLL.GetModel(str);
2182
+                            if (modelT_Bus_WorkOrder != null)
2183
+                            {
2184
+
2185
+                                var affairs = affairsBll.GetModel(modelT_Bus_WorkOrder.F_WorkOrderId);
2186
+                                receive_case_sign paras = new receive_case_sign();
2187
+                                paras.TROWGUID = affairs.TROWGUID;
2188
+                                paras.SIGN_NAME = User.F_UserName;
2189
+                                Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
2190
+                                try
2191
+                                {
2192
+
2193
+
2194
+
2195
+
2196
+
2197
+                                    string jsonParam = "", responseString = "";
2198
+                                    string token = GetToken();
2199
+                                    if (string.IsNullOrEmpty(token))
2200
+                                        return Error("token获取失败");
2201
+                                    jsonParam = "access_token=" + token + "&paras=" + paras.ToJson();
2202
+                                    responseString = HttpMethods.HttpPost("http://59.227.93.14:9000/share/fwgdqsjk", jsonParam);
2203
+
2204
+                                    signgoback jo = JsonConvert.DeserializeObject<signgoback>(responseString);
2205
+                                    if (jo.code == "1")
2206
+                                    {
2207
+
2208
+                                        string strSql = string.Format(@"INSERT INTO T_Sys_PushMsg ( [WorkOrderId], [Conent], [CreatTime], [Code], [Message], [Title], [ErrorObjs], [Remarks]) 
2209
+                   values   ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}') ;select @@IDENTITY ", modelT_Bus_WorkOrder.F_WorkOrderId, paras, DateTime.Now, jo.code, jo.message, "签收工单", "", "");
2210
+                                        object objres = DbHelperSQL.GetSingle(strSql);
2211
+                                        if (jo.body != null)
2212
+                                        {
2213
+                                            affairs.TFDBACKTIME_BF = jo.body.TFDBACKTIME_BF;
2214
+                                            affairsBll.Update(affairs);
2215
+                                        }
2216
+                                        return Success("成功");
2217
+                                    }
2218
+                                    else
2219
+                                    {
2220
+                                        if (!jo.message.Contains("该任务单已签收"))
2221
+                                        {
2222
+                                            keyValuePairs.Add("F_Administrative", "2");
2223
+                                            LogFactory.GetLogger("签收").Error(jo.message);
2224
+                                            return Error("签收失败");
2225
+                                        }
2226
+                                        string strSql = string.Format(@"INSERT INTO T_Sys_PushMsg ( [WorkOrderId], [Conent], [CreatTime], [Code], [Message], [Title], [ErrorObjs], [Remarks]) 
2227
+                   values   ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}') ;select @@IDENTITY ", modelT_Bus_WorkOrder.F_WorkOrderId, paras, DateTime.Now, jo.code, jo.message, "签收工单", jo.message, "");
2228
+                                        object objres = DbHelperSQL.GetSingle(strSql);
2229
+                                        return Error(jo.message);
2230
+                                    }
2231
+                                }
2232
+                                catch (Exception e)
2233
+                                {
2234
+                                    LogFactory.GetLogger("签收").Error(e.Message);
2235
+                                    return Error("签收失败");
2236
+                                }
2237
+
2238
+
2239
+
2240
+
2241
+                                if (modelT_Bus_WorkOrder.F_WorkState == (int)EnumWorkState.neworder || modelT_Bus_WorkOrder.F_WorkState == (int)EnumWorkState.audit)
2242
+                                {
2243
+
2244
+                                    #region 保存工单信息
2245
+                                    keyValuePairs.Add("F_SubmitTime", DateTime.Now);
2246
+                                    //  modelT_Bus_WorkOrder.F_SubmitTime = DateTime.Now;
2247
+                                    keyValuePairs.Add("F_WorkState", 1);
2248
+                                    modelT_Bus_WorkOrder.F_WorkState = (int)EnumWorkState.submit;//待交办
2249
+
2250
+                                    bool n = workorderBLL.UpdateWorkOrder(modelT_Bus_WorkOrder.F_Id, keyValuePairs);
2251
+                                    #endregion
2252
+
2253
+
2254
+                                    #region 插入操作记录
2255
+                                    Model.T_Bus_Operation oper = new Model.T_Bus_Operation();
2256
+                                    oper.F_WorkOrderId = modelT_Bus_WorkOrder.F_WorkOrderId;
2257
+                                    oper.F_State = 1;
2258
+
2259
+                                    string userinfo = User.depname + "(" + User.F_UserCode + ")";
2260
+                                    oper.F_Message = userinfo + " 提交并签收了工单";
2261
+                                    oper.F_CreateUser = User.F_UserCode;
2262
+                                    oper.F_CreateTime = DateTime.Now;
2263
+                                    oper.F_IsDelete = 0;
2264
+
2265
+                                    operBLL.Add(oper);
2266
+
2267
+
2268
+                                    #endregion
2269
+                                }
2270
+
2271
+                            }
2272
+                            trans.Complete();
2273
+                        }
2274
+                    }
2275
+                    return Success("操作成功");
2276
+                }
2277
+                else
2278
+                {
2279
+                    return Error("操作失败");
2280
+                }
2281
+            }
2282
+            else
2283
+            {
2284
+                return Error("权限不足");
2285
+            }
2286
+        }
2287
+
2288
+
2289
+
2290
+
2291
+
2292
+
2293
+
2294
+
2295
+
2296
+
2022 2297
         public class bendiack
2023 2298
         {
2024 2299
             public string state;
@@ -2037,22 +2312,59 @@ namespace CallCenterApi.Interface.Controllers.workorder
2037 2312
             {
2038 2313
 
2039 2314
                 responseString = HttpMethods.HttpPost(url, jsonParam);
2040
-            goback jo = JsonConvert.DeserializeObject<goback>(responseString);
2041
-            if (jo.code == "1")
2042
-            {
2315
+                if (message == "签收工单")
2316
+                {
2317
+                    signgoback jo = JsonConvert.DeserializeObject<signgoback>(responseString);
2318
+                    if (jo.code == "1")
2319
+                    {
2320
+                        if (!string.IsNullOrEmpty(WorkOrderId))
2321
+                        {
2322
+                            var affairs = affairsBll.GetModel(WorkOrderId);
2323
+                            if (affairs != null)
2324
+                            {
2325
+                                if (jo.body != null)
2326
+                                {
2327
+                                    affairs.TFDBACKTIME_BF = jo.body.TFDBACKTIME_BF;
2328
+                                    affairsBll.Update(affairs);
2329
+                                }
2330
+                            }
2331
+                        }
2043 2332
 
2044
-                string strSql = string.Format(@"INSERT INTO T_Sys_PushMsg ( [WorkOrderId], [Conent], [CreatTime], [Code], [Message], [Title], [ErrorObjs], [Remarks]) 
2333
+
2334
+                        string strSql = string.Format(@"INSERT INTO T_Sys_PushMsg ( [WorkOrderId], [Conent], [CreatTime], [Code], [Message], [Title], [ErrorObjs], [Remarks]) 
2045 2335
                    values   ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}') ;select @@IDENTITY ", WorkOrderId, paras, DateTime.Now, jo.code, jo.message, message, "", "");
2046
-                object objres = DbHelperSQL.GetSingle(strSql);
2047
-                return Success("成功");
2048
-            }
2049
-            else
2050
-            {
2051
-                string strSql = string.Format(@"INSERT INTO T_Sys_PushMsg ( [WorkOrderId], [Conent], [CreatTime], [Code], [Message], [Title], [ErrorObjs], [Remarks]) 
2336
+                        object objres = DbHelperSQL.GetSingle(strSql);
2337
+                        return Success("成功");
2338
+                    }
2339
+                    else
2340
+                    {
2341
+                        string strSql = string.Format(@"INSERT INTO T_Sys_PushMsg ( [WorkOrderId], [Conent], [CreatTime], [Code], [Message], [Title], [ErrorObjs], [Remarks]) 
2052 2342
                    values   ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}') ;select @@IDENTITY ", WorkOrderId, paras, DateTime.Now, jo.code, jo.message, message, jo.message, "");
2053
-                object objres = DbHelperSQL.GetSingle(strSql);
2054
-                return Error( jo.message);
2055
-            }
2343
+                        object objres = DbHelperSQL.GetSingle(strSql);
2344
+                        return Error(jo.message);
2345
+                    }
2346
+                }
2347
+                else
2348
+                {
2349
+                    goback jo = JsonConvert.DeserializeObject<goback>(responseString);
2350
+                    if (jo.code == "1")
2351
+                    {
2352
+
2353
+                        string strSql = string.Format(@"INSERT INTO T_Sys_PushMsg ( [WorkOrderId], [Conent], [CreatTime], [Code], [Message], [Title], [ErrorObjs], [Remarks]) 
2354
+                   values   ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}') ;select @@IDENTITY ", WorkOrderId, paras, DateTime.Now, jo.code, jo.message, message, "", "");
2355
+                        object objres = DbHelperSQL.GetSingle(strSql);
2356
+                        return Success("成功");
2357
+                    }
2358
+                    else
2359
+                    {
2360
+                        string strSql = string.Format(@"INSERT INTO T_Sys_PushMsg ( [WorkOrderId], [Conent], [CreatTime], [Code], [Message], [Title], [ErrorObjs], [Remarks]) 
2361
+                   values   ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}') ;select @@IDENTITY ", WorkOrderId, paras, DateTime.Now, jo.code, jo.message, message, jo.message, "");
2362
+                        object objres = DbHelperSQL.GetSingle(strSql);
2363
+                        return Error(jo.message);
2364
+                    }
2365
+
2366
+                }
2367
+                  
2056 2368
             }
2057 2369
             catch (Exception e)
2058 2370
             {
@@ -2154,6 +2466,10 @@ namespace CallCenterApi.Interface.Controllers.workorder
2154 2466
             public string FINISH_NAME { set; get; }
2155 2467
             public string FINISH_RESULT { set; get; }
2156 2468
             public string FINISH_ATTATH_ID { set; get; }
2469
+            /// <summary>
2470
+            /// 答复群众结果
2471
+            /// </summary>
2472
+           // public string FINISH_RESULT_QZ { set; get; }
2157 2473
         }
2158 2474
         /// <summary>
2159 2475
         /// 反馈结案工单
@@ -2299,6 +2615,8 @@ namespace CallCenterApi.Interface.Controllers.workorder
2299 2615
                         paras.TROWGUID = affairs.TROWGUID;
2300 2616
                         paras.FINISH_NAME = User.F_UserName;
2301 2617
                         paras.FINISH_RESULT = modelT_Bus_WorkOrder.F_Result.Replace("\n", "").Replace("\t", "").Replace("%", "%25");
2618
+
2619
+                       // paras.FINISH_RESULT_QZ = modelT_Bus_WorkOrder.F_Result.Replace("\n", "").Replace("\t", "").Replace("%", "%25");
2302 2620
                         paras.FINISH_ATTATH_ID = affairs.FILES;
2303 2621
                         try
2304 2622
                         {
@@ -2418,7 +2736,11 @@ namespace CallCenterApi.Interface.Controllers.workorder
2418 2736
                     paras.TROWGUID = affairs.TROWGUID;
2419 2737
                     paras.FINISH_NAME = username;
2420 2738
                     if (!string.IsNullOrEmpty(model.F_Result))
2739
+                    {
2421 2740
                         paras.FINISH_RESULT = model.F_Result.Replace("\n", "").Replace("\t", "").Replace("%", "%25");
2741
+                       // paras.FINISH_RESULT_QZ = model.F_Result.Replace("\n", "").Replace("\t", "").Replace("%", "%25");
2742
+                    }
2743
+                       
2422 2744
                     paras.FINISH_ATTATH_ID = affairs.FILES;
2423 2745
                     string token = GetToken();
2424 2746
                     string message = "";
@@ -2618,7 +2940,40 @@ namespace CallCenterApi.Interface.Controllers.workorder
2618 2940
             /// </summary>
2619 2941
             public string APPLY_TYPE { set; get; }
2620 2942
         }
2621
-      
2943
+        public class receive_case_delay_apply1
2944
+        {/// <summary>
2945
+         /// 任务单唯一标识
2946
+         /// </summary>
2947
+            public string TROWGUID { set; get; }
2948
+            /// <summary>
2949
+            /// 申请人姓名
2950
+            /// </summary>
2951
+            public string APPLY_NAME { set; get; }
2952
+            /// <summary>
2953
+            /// 申请延期天数
2954
+            /// </summary>
2955
+            public int APPLY_DELAYNUM { set; get; }
2956
+            /// <summary>
2957
+            /// 申请延期原因
2958
+            /// </summary>
2959
+            public string APPLY_REASON { set; get; }
2960
+            /// <summary>
2961
+            ///常规延时	10
2962
+            ///特殊延时	20
2963
+            ///类别错误更正	30
2964
+            /// </summary>
2965
+            public string APPLY_TYPE { set; get; }
2966
+
2967
+            ///// <summary>
2968
+            ///// 变更后诉求类型
2969
+            ///// </summary>
2970
+            public string APPLY_RQSTTYPE { set; get; }
2971
+            ///// <summary>
2972
+            ///// 延期附件
2973
+            ///// </summary>
2974
+            public string APPLY_ATTATH_ID { set; get; }
2975
+        }
2976
+
2622 2977
         /// <summary>
2623 2978
         /// 申请延时
2624 2979
         /// </summary>
@@ -2824,7 +3179,220 @@ namespace CallCenterApi.Interface.Controllers.workorder
2824 3179
             }
2825 3180
         }
2826 3181
 
3182
+        /// <summary>
3183
+        /// 申请延时
3184
+        /// </summary>
3185
+        /// <returns></returns>
3186
+        [Authority]
3187
+        public ActionResult NewDelayWorkOrder()
3188
+        {
3189
+
3190
+            if (User.F_RoleCode == "WLDW" || User.F_RoleCode == "SPZJZ" || User.F_RoleCode == "ZXLD" || User.F_RoleCode == "GLY" || User.F_RoleCode == "DDZG")
3191
+            {
3192
+                string workorderid = RequestString.GetFormString("workorderid");
3193
+                int newlimittime = RequestString.GetInt("newlimittime", 0);
3194
+                string reason = RequestString.GetFormString("reason");
3195
+                int infoType = RequestString.GetInt("infoType", 0);
3196
+
3197
+                  string files = RequestString.GetFormString("files");
3198
+                int types = RequestString.GetInt("types", 0);
3199
+                if (!string .IsNullOrEmpty(files))
3200
+                    return Error("请选择附件");
3201
+                //0常规延时1特殊延时2类别错误更正
3202
+                int type = RequestString.GetInt("type", 0);
3203
+                if(types == 2&& infoType<=0)
3204
+                {
3205
+                    return Error("请选择更正错误类别");
3206
+                }
3207
+
3208
+              
3209
+
3210
+                Model.T_Bus_WorkOrder modelT_Bus_WorkOrder = workorderBLL.GetModel(workorderid);
3211
+               
3212
+               if (User.F_RoleCode == "WLDW")
3213
+                {
3214
+              int n = DbHelperSQL.ExecuteSql(" update T_Bus_WorkOrder set F_WorkState=5 where F_Id ='" + modelT_Bus_WorkOrder.F_Id + "'");
3215
+                }
3216
+
3217
+               var Delay = new BLL.T_Bus_DelayTime().GetModelList("F_WorkOrderId='" + modelT_Bus_WorkOrder.F_WorkOrderId + "' " +
3218
+                "and F_AssignedId=-1 and (F_IsAudit=0 or F_IsAudit=3)");
3219
+                if (Delay != null && Delay.Count > 0)
3220
+                  return Error("已申请延时,请等待审核结束");
3221
+                
3222
+
3223
+                if (modelT_Bus_WorkOrder != null)
3224
+                {
3225
+                    using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 10, 0)))
3226
+                    {
3227
+                        #region 保存工单信息
3228
+                        #endregion
3229
+                        #region 插入申请延时信息
3230
+                        string workordercode = modelT_Bus_WorkOrder.F_WorkOrderId;
3231
+                        if (!string.IsNullOrEmpty(modelT_Bus_WorkOrder.F_MainWorkorder1))
3232
+                        {
3233
+                            workordercode = modelT_Bus_WorkOrder.F_MainWorkorder1;
3234
+                        }
2827 3235
 
3236
+                        var affairs = affairsBll.GetModel(workordercode);
3237
+                        Model.T_Bus_DelayTime delay = new Model.T_Bus_DelayTime();
3238
+                        delay.F_WorkOrderId = modelT_Bus_WorkOrder.F_WorkOrderId;
3239
+                        if (User.F_RoleCode == "WLDW")
3240
+                            delay.F_IsAudit = 0;
3241
+                        else
3242
+                            delay.F_IsAudit = 3;
3243
+                        delay.F_AssignedId = -1;
3244
+                        delay.F_State = modelT_Bus_WorkOrder.F_WorkState;
3245
+                        delay.F_OldTime = DateTime.Parse(affairs.TFDBACKTIME_BF);
3246
+                        delay.F_File = files;
3247
+                        string resdate = delay.F_OldTime.Value.ToString("yyyy-MM-dd");
3248
+                        DataTable dt = DbHelperSQL.Query("select top " + newlimittime + " F_OffDate from  T_Sys_WorkOFFDays  with(nolock) where F_OffState = 1   and F_OffDate>'" + resdate + "' order by F_OffDate").Tables[0];
3249
+                        var resdatetime = dt.Rows[dt.Rows.Count - 1]["F_OffDate"].ToString();
3250
+                        resdatetime = Convert.ToDateTime(resdatetime).ToString("yyyy-MM-dd") + " " + delay.F_OldTime.Value.ToString("HH:mm:ss");
3251
+                        delay.F_NewTime = Convert.ToDateTime(resdatetime);
3252
+                        delay.F_Reason = reason;
3253
+                        delay.F_IsDelete = 0;
3254
+                        delay.F_CreateUser = User.F_UserCode;
3255
+                        delay.F_CreateTime = DateTime.Now;
3256
+                     
3257
+                        new BLL.T_Bus_DelayTime().Add(delay);
3258
+                        #endregion
3259
+                        #region 插入操作记录
3260
+                        Model.T_Bus_Operation oper = new Model.T_Bus_Operation();
3261
+                        oper.F_WorkOrderId = modelT_Bus_WorkOrder.F_WorkOrderId;
3262
+                        //  oper.F_AssignedId = modelT_Bus_AssignedInfo.F_Id;
3263
+                        oper.F_State = modelT_Bus_WorkOrder.F_WorkState;
3264
+                        string userinfo = User.depname + "(" + User.F_UserCode + ")";
3265
+                        oper.F_Message = userinfo + " 申请了延时处理";
3266
+                        oper.F_CreateUser = User.F_UserCode;
3267
+                        oper.F_CreateTime = DateTime.Now;
3268
+                        oper.F_IsDelete = 0;
3269
+                        operBLL.Add(oper);
3270
+
3271
+                        receive_case_delay_apply1 paras = new receive_case_delay_apply1();
3272
+                        paras.TROWGUID = affairs.TROWGUID;
3273
+                        paras.APPLY_NAME = User.F_UserName;
3274
+                        paras.APPLY_DELAYNUM = newlimittime;
3275
+                        paras.APPLY_ATTATH_ID = files;
3276
+                        if (type == 1)
3277
+                            paras.APPLY_TYPE = "20";
3278
+                        else if (type == 2)
3279
+                            paras.APPLY_TYPE = "30";
3280
+                        else
3281
+                            paras.APPLY_TYPE = "10";
3282
+                        paras.APPLY_REASON = reason;
3283
+                        if (infoType>0)
3284
+                        {
3285
+                            if (infoType == 9)//咨询
3286
+                                paras.APPLY_RQSTTYPE = "10";
3287
+                            else if (infoType == 12)//建议
3288
+                                paras.APPLY_RQSTTYPE = "15";
3289
+                            else if (infoType == 11)//投诉
3290
+                                paras.APPLY_RQSTTYPE = "20";
3291
+                            else if (infoType == 10)//求助
3292
+                                paras.APPLY_RQSTTYPE = "30";
3293
+                            else if (infoType == 13)//表扬
3294
+                                paras.APPLY_RQSTTYPE = "35";
3295
+                            else
3296
+                                paras.APPLY_RQSTTYPE = "40";//其他
3297
+                        }
3298
+                      
3299
+
3300
+
3301
+
3302
+                        if (!string.IsNullOrEmpty(modelT_Bus_WorkOrder.F_MainWorkorder1))
3303
+                        {
3304
+                            var model = new BLL.T_Bus_WorkOrder().GetModel(modelT_Bus_WorkOrder.F_MainWorkorder1);
3305
+                            if (model != null)
3306
+                            {
3307
+                                if (!string.IsNullOrEmpty(model.F_SubWorkorder1))
3308
+                                {
3309
+                                    var modellist = workorderBLL.GetModelList
3310
+                                        ("F_WorkOrderId in(select col from dbo.SplitToNvarchar('" + model.F_SubWorkorder1 + "',',' )) " +
3311
+                                        " and F_IsDelete =0  ");
3312
+
3313
+                                    if (modellist != null && modellist.Count > 0)
3314
+                                    {
3315
+                                        foreach (var it in modellist)
3316
+                                        {
3317
+                                            Model.T_Bus_DelayTime delaynew = new Model.T_Bus_DelayTime();
3318
+                                            delaynew.F_WorkOrderId = it.F_WorkOrderId;
3319
+                                            if (type == 0)
3320
+                                            {
3321
+                                                delaynew.F_AssignedId = -1;
3322
+                                                delaynew.F_OldTime = DateTime.Parse(affairs.TFDBACKTIME_BF);
3323
+                                            }
3324
+                                            else
3325
+                                            {
3326
+                                                delaynew.F_AssignedId = 0;
3327
+                                                delaynew.F_OldTime = DateTime.Parse(affairs.TBACKTIME_BF);
3328
+                                            }
3329
+                                            string resdates = delaynew.F_OldTime.Value.ToString("yyyy-MM-dd");
3330
+                                            DataTable dt1 = DbHelperSQL.Query("select top " + newlimittime + " " +
3331
+                                                "F_OffDate from  T_Sys_WorkOFFDays  with(nolock) where F_OffState = 1   " +
3332
+                                                "and F_OffDate>'" + resdates + "' order by F_OffDate").Tables[0];
3333
+                                            var resdatetime1 = dt1.Rows[dt1.Rows.Count - 1]["F_OffDate"].ToString();
3334
+                                            resdatetime1 = Convert.ToDateTime(resdatetime1).ToString("yyyy-MM-dd") + " " +
3335
+                                                delaynew.F_OldTime.Value.ToString("HH:mm:ss");
3336
+
3337
+                                            delaynew.F_NewTime = Convert.ToDateTime(resdatetime1);
3338
+
3339
+                                            delaynew.F_Reason = reason;
3340
+                                            delaynew.F_State = 1;
3341
+                                            delaynew.F_IsAudit = 0;
3342
+                                            delaynew.F_IsDelete = 0;
3343
+
3344
+                                            //  delay.F_AssignedId = "";
3345
+                                            delaynew.F_CreateUser = User.F_UserCode;
3346
+                                            delaynew.F_CreateTime = DateTime.Now;
3347
+                                            //  delay.F_File = files;
3348
+                                            new BLL.T_Bus_DelayTime().Add(delaynew);
3349
+                                        }
3350
+                                    }
3351
+
3352
+                                }
3353
+                            }
3354
+
3355
+                        }
3356
+
3357
+                        try
3358
+                        {
3359
+
3360
+                            if (User.F_RoleCode != "WLDW" || type != 0)
3361
+                            {
3362
+                                string jsonParam = "paras=" + paras.ToJson() + "&message=申请延时&url=http://59.227.93.14:9000/share/fwgdyqsqjk&WorkOrderId=" + modelT_Bus_WorkOrder.F_WorkOrderId;
3363
+
3364
+                                var responseString = HttpMethods.HttpPost(FrontUrl + "/Affairs/receive_Push", jsonParam);
3365
+                                bendiack jo = JsonConvert.DeserializeObject<bendiack>(responseString);
3366
+                                if (jo.state != "success")
3367
+                                    return Error("申请延时失败");
3368
+
3369
+                            }
3370
+
3371
+
3372
+
3373
+                        }
3374
+                        catch
3375
+                        {
3376
+
3377
+                        }
3378
+                        #endregion
3379
+
3380
+                        trans.Complete();
3381
+                    }
3382
+                    return Success("操作成功");
3383
+
3384
+
3385
+                }
3386
+                else
3387
+                {
3388
+                    return Error("操作失败");
3389
+                }
3390
+            }
3391
+            else
3392
+            {
3393
+                return Error("权限不足");
3394
+            }
3395
+        }
2828 3396
         public class case_delay_audit
2829 3397
         {
2830 3398
             /// <summary>

+ 211 - 27
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/workorder/ConvergeController.cs

@@ -4,6 +4,7 @@ using CallCenterApi.Interface.Controllers.Base;
4 4
 using Newtonsoft.Json;
5 5
 using System;
6 6
 using System.Collections.Generic;
7
+using System.Data;
7 8
 using System.Linq;
8 9
 using System.Threading;
9 10
 using System.Web;
@@ -26,32 +27,26 @@ namespace CallCenterApi.Interface.Controllers
26 27
                     id = int.Parse(BusPushPhone.Rows[0]["id"].ToString());
27 28
                     count = int.Parse(BusPushPhone.Rows[0]["count"].ToString());
28 29
                 }
29
-                var modellist = new BLL.T_Bus_WorkOrder
30
-                    ().GetModelList(20000, "  F_CreateTime>'2024-04-01 00:00:00.000' " +
31
-                    $" and F_CreateTime < '2024-04-07 12:38:42' and F_Id>={id} and F_IsDelete =0 " +
32
-                    $" and  F_InfoSource !='4113' " +
33
-                    $" and F_InfoSource != '4' and F_InfoSource != '2580' ", " F_Id asc");
34
-                if (modellist != null && modellist.Count > 0)
30
+                var Feedback = new BLL.T_Bus_WorkOrder
31
+                    ().GetList(20000, "F_CreateTime>'2024-05-22 10:20:10' " +
32
+                    $" and F_CreateTime < '2024-06-18 16:55:39' and F_Id>={id} and F_IsDelete =0 " +
33
+                    $" and isnull(F_CallId,'')!=''   ", "  F_Id asc").Tables[0];
34
+                if (Feedback != null && Feedback.Rows.Count>0)
35 35
                 {
36 36
                     int i = 0;
37
-                    foreach (var model in modellist)
37
+                    foreach (DataRow dr in Feedback.Rows)
38 38
                     {
39
-                        Thread.Sleep(300);
40
-                        id = model.F_Id;
41
-                        pushcase_info(model.F_WorkOrderId);
42
-                        pushhandle_info_1(model.F_WorkOrderId);
43
-                        pushhandle_info_2(model.F_WorkOrderId);
44
-                        if (model.F_WorkState == 9)
39
+                        if (dr["F_InfoSource"].ToString() != "2580" && dr["F_InfoSource"].ToString() != "4606")
45 40
                         {
46
-                            pushcase_visit_info(model.F_WorkOrderId);
47
-                            pushcase_finish_info(model.F_WorkOrderId);
41
+                            Thread.Sleep(1000);
42
+                            id = int.Parse(dr["F_Id"].ToString());
43
+                            pushcase_record(dr["F_WorkOrderId"].ToString(),dr["F_CallId"].ToString());
44
+                            i++; count++;
45
+                            string ts = "update T_Bus_PushWorkorder set id='" + id
46
+                                   + "' ,count='" + count + "'";
47
+                            var rh = DbHelperSQL.GetSingle(ts);
48 48
                         }
49
-                        pushprocess_info(model);
50
-                        pushcase_visit_detail_info(model.F_WorkOrderId);
51
-                        i++; count++;
52
-                        string ts = "update T_Bus_PushWorkorder set id='" + id
53
-                               + "' ,count='" + count + "'";
54
-                        var rh = DbHelperSQL.GetSingle(ts);
49
+                        
55 50
                     }
56 51
                     message = "成功";
57 52
                 }
@@ -62,9 +57,153 @@ namespace CallCenterApi.Interface.Controllers
62 57
                 var rh = DbHelperSQL.GetSingle(ts);
63 58
                 return Error(e.ToJson());
64 59
             }
65
-
66 60
             return Success(message);
67 61
         }
62
+        /// <summary>
63
+        /// 电话服务记录
64
+        /// </summary>
65
+        /// <param name="sender"></param>
66
+        /// <param name="e"></param>
67
+        public void  pushcase_record(string WorkOrderId, string F_CallId)
68
+        {
69
+          
70
+            var model = new BLL.T_Call_CallRecords().GetModelByCallId(F_CallId);
71
+            if (model!=null)
72
+            {
73
+                submit_case_record paras = new submit_case_record();
74
+                paras.jsonList = new List<record>();
75
+                record jsonList = new record();
76
+                string newwokrkorder = WorkOrderId;
77
+                if (WorkOrderId.Contains("QT"))
78
+                    newwokrkorder = "WZ" + WorkOrderId.Substring(2, WorkOrderId.Length - 2);
79
+                jsonList.CASE_SERIAL = newwokrkorder;
80
+                jsonList.AREA_CODE = AREA_CODE;
81
+                jsonList.RECORD_ID = model.CallRecordsId.ToString();
82
+                jsonList.RECORD_PHONE = model.CallNumber;
83
+                if (model.TalkEndTime != null)
84
+                    jsonList.RECORD_STATUS = "30";
85
+                else
86
+                    jsonList.RECORD_STATUS = "10";
87
+                if (model.CallType == 0)
88
+                    jsonList.RECORD_TYPE = "10";
89
+                else
90
+                    jsonList.RECORD_TYPE = "30";
91
+                if (model.TalkStartTime != null)
92
+                    jsonList.RECORD_STARTTIME = model.TalkStartTime
93
+                    .Value.ToString("yyyy-MM-dd HH:mm:ss");
94
+                else
95
+                    jsonList.RECORD_STARTTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
96
+                if (model.TalkEndTime != null)
97
+                    jsonList.RECORD_ENDTIME = model.TalkEndTime
98
+                    .Value.ToString("yyyy-MM-dd HH:mm:ss");
99
+                else
100
+                    jsonList.RECORD_ENDTIME = "";
101
+
102
+                if (jsonList.RECORD_ENDTIME == "" && !string.IsNullOrEmpty(jsonList.RECORD_STARTTIME))
103
+                {
104
+                    jsonList.RECORD_ENDTIME = DateTime.Parse(jsonList.RECORD_STARTTIME)
105
+                   .AddMinutes(1).ToString("yyyy-MM-dd HH:mm:ss");
106
+                }
107
+
108
+
109
+
110
+                if (jsonList.RECORD_STARTTIME != null && jsonList.RECORD_ENDTIME != "")
111
+                    jsonList.RECORD_LENGTH = int.Parse(DbHelperSQL.GetSingle
112
+                        (" SELECT DATEDIFF(SECOND,'" + jsonList.RECORD_STARTTIME +
113
+                        "', '" + jsonList.RECORD_ENDTIME + "')").ToString());
114
+                else
115
+                    jsonList.RECORD_LENGTH = 0;
116
+
117
+
118
+                if (!string.IsNullOrEmpty(model.UserCode))
119
+                    jsonList.RECORD_LOGINID = model.UserCode;
120
+                else
121
+                    jsonList.RECORD_LOGINID = "无";
122
+                var config = new BLL.T_Sys_SystemConfig().
123
+                    GetModelList(" F_ParamCode='PlayPath' ").FirstOrDefault();
124
+
125
+                if (config != null && !string.IsNullOrEmpty(config.F_ParamValue) && model.FilePath != null)
126
+                {
127
+                    var ym = config.F_ParamValue;
128
+                    if (ym.Substring(ym.Length - 1) == "/")
129
+                    {
130
+                        ym = ym.Substring(0, ym.Length - 1);
131
+                    }
132
+
133
+                    string lujing = model.FilePath.Substring(model.FilePath.IndexOf(':') + 1).Replace('\\', '/');
134
+                    string wlpath = ym + lujing;
135
+
136
+                    jsonList.RECORD_URL = wlpath;
137
+                }
138
+                paras.jsonList.Add(jsonList);
139
+                string token = GetToken();
140
+                if (string.IsNullOrEmpty(token))
141
+                {
142
+                    AddError(paras.ToJson(), "http://59.227.93.14:9000/share/dhfwjl"
143
+                        , "token 错误", "电话服务记录", 7);
144
+
145
+                }
146
+                string jsonParam = "access_token=" + token + "&paras=" + paras.ToJson();
147
+                try
148
+                {
149
+
150
+
151
+                    var responseString = HttpMethods.HttpPost("http://59.227.93.14:9000/share/dhfwjl", jsonParam);
152
+
153
+                    Push jo = JsonConvert.DeserializeObject<Push>(responseString);
154
+                    if (jo.code == "1")
155
+                    {
156
+
157
+                        Model.submit_case_record model_case_record = Classcase_record(jsonList);
158
+                        int n = new BLL.submit_case_record().Add(model_case_record);
159
+
160
+                    }
161
+                    else
162
+                    {
163
+                        string error = "";
164
+                        if (jo.body.errorObjs != null && jo.body.errorObjs.Length > 0)
165
+                        {
166
+                            foreach (var it in jo.body.errorObjs)
167
+                            {
168
+                                if (!string.IsNullOrEmpty(it.resturl))
169
+                                {
170
+                                    error += " 推送接口名称:" + it.resturl;
171
+                                }
172
+                                if (!string.IsNullOrEmpty(it.caseserial))
173
+                                {
174
+                                    error += " 推送工单号:" + it.caseserial;
175
+                                }
176
+                                if (!string.IsNullOrEmpty(it.resturl))
177
+                                {
178
+                                    error += " 推送标识:" + it.errorid;
179
+                                }
180
+                                if (!string.IsNullOrEmpty(it.resturl))
181
+                                {
182
+                                    error += " 推送失败原因:" + it.errormsg;
183
+                                }
184
+                            }
185
+                        }
186
+                        AddError(paras.ToJson(), "http://59.227.93.14:9000/share/dhfwjl"
187
+                          , error, "电话服务记录", 7);
188
+
189
+
190
+                    }
191
+                }
192
+                catch (Exception ex)
193
+                {
194
+                    AddError(paras.ToJson(), "http://59.227.93.14:9000/share/dhfwjl"
195
+                         , ex.Message, "电话服务记录", 7);
196
+
197
+                }
198
+
199
+            }
200
+
201
+
202
+        }
203
+
204
+
205
+
206
+
68 207
         public string pushcase_info(string workorderid)
69 208
         {
70 209
             Model.T_Bus_WorkOrder model = new BLL.T_Bus_WorkOrder().GetModel(workorderid);
@@ -241,7 +380,7 @@ namespace CallCenterApi.Interface.Controllers
241 380
         }
242 381
         public string pushhandle_info_1(string workorderid)
243 382
         {
244
-            Thread.Sleep(3000);
383
+           
245 384
             var workorder = workorderBLL.GetModel(workorderid);
246 385
             var model = new BLL.T_Bus_Feedback().GetNewModelByWorkOrderID(workorderid);
247 386
             var info = new BLL.T_Bus_AssignedInfo().GetNewModelByWorkOrderID(workorderid);
@@ -1476,7 +1615,7 @@ namespace CallCenterApi.Interface.Controllers
1476 1615
                 jsonList.TASK_PARENTID = "TOP";
1477 1616
                 if (model.F_CreateDeptId!=null)
1478 1617
                 {
1479
-                    var TASK_OUNAME = deptBLL.GetDeptNames(model.F_CreateDeptId.ToString());
1618
+                    var TASK_OUNAME = DbHelperSQL.GetSingle(" select dbo.GetDeptNames('" + model.F_CreateDeptId + "')");
1480 1619
                     if (TASK_OUNAME != null)
1481 1620
                         jsonList.TASK_OUNAME = TASK_OUNAME.ToString();
1482 1621
                     else
@@ -1635,7 +1774,7 @@ namespace CallCenterApi.Interface.Controllers
1635 1774
 
1636 1775
                 if (model.F_CreateDeptId != null)
1637 1776
                 {
1638
-                    var TASK_OUNAME = deptBLL.GetDeptNames(model.F_CreateDeptId.ToString());
1777
+                    var TASK_OUNAME = DbHelperSQL.GetSingle(" select dbo.GetDeptNames('" + model.F_CreateDeptId + "')");
1639 1778
                     if (TASK_OUNAME != null)
1640 1779
                         jsonList.TASK_OUNAME = TASK_OUNAME.ToString();
1641 1780
                     else
@@ -2023,6 +2162,11 @@ namespace CallCenterApi.Interface.Controllers
2023 2162
             /// 处办时长
2024 2163
             /// </summary>
2025 2164
             public int END_LENGTH { set; get; }
2165
+
2166
+            /// <summary>
2167
+            /// 办结状态
2168
+            /// </summary>
2169
+           // public string  FINISH_STATUS { set; get; }
2026 2170
         }
2027 2171
         /// <summary>
2028 2172
         /// 服务工单办结
@@ -2131,7 +2275,7 @@ namespace CallCenterApi.Interface.Controllers
2131 2275
                 }
2132 2276
                 else
2133 2277
                     jsonList.END_LENGTH = 100000;
2134
-
2278
+                //jsonList.FINISH_STATUS = "10";
2135 2279
                 paras.jsonList.Add(jsonList);
2136 2280
                 string token = GetToken();
2137 2281
                 if (string.IsNullOrEmpty(token))
@@ -2143,7 +2287,7 @@ namespace CallCenterApi.Interface.Controllers
2143 2287
                 string jsonParam = "access_token=" + token + "&paras=" + paras.ToJson();
2144 2288
                 try
2145 2289
                 {
2146
-
2290
+                  
2147 2291
                     var responseString = HttpMethods.HttpPost("http://59.227.93.14:9000/share/fwgdbj", jsonParam);
2148 2292
                     Push jo = JsonConvert.DeserializeObject<Push>(responseString);
2149 2293
                     if (jo.code == "1")
@@ -2219,8 +2363,22 @@ namespace CallCenterApi.Interface.Controllers
2219 2363
             model.END_TIME = jsonList.END_TIME;//答复
2220 2364
             model.END_LENGTH = jsonList.END_LENGTH;//处办时长
2221 2365
             model.CreateTime = DateTime.Now;
2366
+           // model.FINISH_STATUS = jsonList.FINISH_STATUS;
2222 2367
             return model;
2223 2368
         }
2369
+
2370
+
2371
+    
2372
+
2373
+
2374
+
2375
+
2376
+
2377
+
2378
+
2379
+
2380
+
2381
+
2224 2382
         #endregion
2225 2383
         #region 工单处理流程
2226 2384
         public class submit_case_process_info
@@ -3097,6 +3255,10 @@ namespace CallCenterApi.Interface.Controllers
3097 3255
                             model.ErrorMsg = ex.Message;
3098 3256
                             bool n = new BLL.submit_RePush().Update(model);
3099 3257
                         }
3258
+                        if (model.number > 5)
3259
+                        {
3260
+                            HttpMethods.HttpGet(NativeURL + "/Converge/DingTalkSendMessageText?mobile=17839539537&content=" + model.ErrorMsg);
3261
+                        }
3100 3262
                     }
3101 3263
                 }
3102 3264
                 return Success("推送完毕");
@@ -3107,6 +3269,7 @@ namespace CallCenterApi.Interface.Controllers
3107 3269
             }
3108 3270
 
3109 3271
         }
3272
+        string NativeURL = Configs.GetValue("NativeURL");
3110 3273
         /// <summary>
3111 3274
         /// 重推其他
3112 3275
         /// </summary>
@@ -3235,6 +3398,10 @@ namespace CallCenterApi.Interface.Controllers
3235 3398
                             model.ErrorMsg = ex.Message;
3236 3399
                             bool n = new BLL.submit_RePush().Update(model);
3237 3400
                         }
3401
+                        if (model.number > 5 && !model.ErrorMsg.Contains("服务工单受理表无数据"))
3402
+                        {
3403
+                            HttpMethods.HttpGet(NativeURL+ "/Converge/DingTalkSendMessageText?mobile=17839539537&content=" + model.ErrorMsg);
3404
+                        }
3238 3405
                     }
3239 3406
                 }
3240 3407
                 return Success("推送完毕");
@@ -3315,6 +3482,23 @@ namespace CallCenterApi.Interface.Controllers
3315 3482
             public string errormsg { set; get; }
3316 3483
             public string caseserial { set; get; }
3317 3484
         }
3485
+
3486
+        /// <summary>
3487
+        /// 钉钉发送消息
3488
+        /// </summary>
3489
+        /// <param name="userid"></param>
3490
+        /// <param name="content"></param>
3491
+        /// <returns></returns>
3492
+        public ActionResult DingTalkSendMessageText(string mobile, string content)
3493
+        {
3494
+            content = "【鹤壁监控报警】" + content;
3495
+            var userid = DingTalkHelper.GetUserIdByMobile(mobile);
3496
+            var userid1 = DingTalkHelper.GetUserIdByMobile("18238806522");
3497
+            var userid2 = DingTalkHelper.GetUserIdByMobile("13241334761");
3498
+            DingTalkHelper.SendMessageText(userid1, "", content);
3499
+            DingTalkHelper.SendMessageText(userid2, "", content);
3500
+            return Success(DingTalkHelper.SendMessageText(userid, "", content));
3501
+        }
3318 3502
         #endregion
3319 3503
     }
3320 3504
 }

File diff suppressed because it is too large
+ 778 - 117
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/workorder/WorkOrderController.cs


+ 115 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/workorder/hb_affairsController.cs

@@ -605,7 +605,122 @@ namespace CallCenterApi.Interface.Controllers.workorder
605 605
 
606 606
 
607 607
         }
608
+        /// <summary>
609
+        /// 服务工单退回结果
610
+        /// </summary>
611
+        /// <returns></returns>
612
+        //[Authority]
613
+        public ActionResult receive_case_back_audit()
614
+        {
615
+            StreamReader reader = new StreamReader(System.Web.HttpContext.Current.Request.InputStream);
616
+            var postString = reader.ReadToEnd();
617
+            JObject paras = null;
618
+            paras = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(postString);
619
+            var txnBodyCom = paras["paras"].ToString();
620
+            var result = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(txnBodyCom);
621
+            if (result["TROWGUID"] == null)
622
+            {
623
+                var obj = new
624
+                {
625
+                    code = "0",
626
+                    message = "TROWGUID不能为空"
627
+                };
628
+                return Content(obj.ToJson());
629
+            }
630
+            if (string.IsNullOrEmpty(result["TROWGUID"].ToString()))
631
+            {
632
+                var obj = new
633
+                {
634
+                    code = "0",
635
+                    message = "TROWGUID不能为空"
636
+                };
637
+                return Content(obj.ToJson());
638
+            }
639
+
640
+            var affairs = affairsBll.GetModelList("TROWGUID='" + result["TROWGUID"].ToString() + "'");
641
+            if (affairs != null && affairs.Count > 0)
642
+            {
643
+                Model.T_Bus_WorkOrder modelT_Bus_WorkOrder = workorderBLL.GetModel(affairs.FirstOrDefault().F_WorkOrderId);
644
+
645
+                using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 10, 0)))
646
+                {
647
+                    string Message = "省平台审核";
648
+
649
+                    var AUDIT_RESULT = result["AUDIT_RESULT"] == null ? "" : result["AUDIT_RESULT"].ToString();
650
+                    if (string.IsNullOrEmpty(AUDIT_RESULT))
651
+                    {
652
+                        var obj = new
653
+                        {
654
+                            code = "0",
655
+                            message = "AUDIT_RESULT不能为空"
656
+                        };
657
+                        return Content(obj.ToJson());
658
+                    }
659
+                   
660
+
661
+
662
+                    if (result["AUDIT_RESULT"].ToString() == "1")
663
+                    {
664
+                        Message += "通过了退回工单";
665
+                        var AUDIT_OPINION = result["AUDIT_OPINION"] == null ? "" : result["AUDIT_OPINION"].ToString();
666
+                        if (string.IsNullOrEmpty(AUDIT_OPINION))
667
+                        {
668
+                            Message += ",审核意见:"+ AUDIT_OPINION;
669
+                        }
670
+                    }
671
+                    else if (result["SUPPLY_TYPE"].ToString() == "0")
672
+                    {
608 673
 
674
+                        Message += "拒绝了退回工单";
675
+                        var AUDIT_OPINION = result["AUDIT_OPINION"] == null ? "" : result["AUDIT_OPINION"].ToString();
676
+                        if (string.IsNullOrEmpty(AUDIT_OPINION))
677
+                        {
678
+                            Message += ",审核意见:" + AUDIT_OPINION;
679
+                        }
680
+                        Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
681
+                        keyValuePairs.Add("F_WorkState", "0");
682
+                        keyValuePairs.Add("F_DealDeptId",null);
683
+                        keyValuePairs.Add("F_DealUser", "");
684
+                        keyValuePairs.Add("F_DealTime", null);
685
+                        keyValuePairs.Add("F_IsClosed", 0);
686
+                        keyValuePairs.Add("F_CloseUser", "");
687
+                        keyValuePairs.Add("F_Result", "");
688
+                        keyValuePairs.Add("F_CloseTime",null);
689
+                        workorderBLL.UpdateWorkOrder(modelT_Bus_WorkOrder.F_Id, keyValuePairs);
690
+                    }
691
+                   
692
+                    #region 插入操作记录
693
+                    Model.T_Bus_Operation oper = new Model.T_Bus_Operation();
694
+                    oper.F_WorkOrderId = modelT_Bus_WorkOrder.F_WorkOrderId;
695
+                    oper.F_State = modelT_Bus_WorkOrder.F_WorkState;
696
+                    oper.F_Message = Message;
697
+                    oper.F_CreateUser = result["AUDIT_NAME"] == null ? "" : result["AUDIT_NAME"].ToString();
698
+                    oper.F_CreateTime = DateTime.Now;
699
+                    oper.F_IsDelete = 0;
700
+                    operBLL.Add(oper);
701
+                    #endregion 
702
+                    trans.Complete();
703
+                }
704
+                var obj1 = new
705
+                {
706
+                    code = "1",
707
+                    message = "推送成功"
708
+                };
709
+                return Content(obj1.ToJson());
710
+
711
+            }
712
+            else
713
+            {
714
+                var obj = new
715
+                {
716
+                    code = "0",
717
+                    message = "推送失败"
718
+                };
719
+                return Content(obj.ToJson());
720
+            }
721
+
722
+
723
+        }
609 724
         /// <summary>
610 725
         /// 服务工单交办催单/撤单/补单接口
611 726
         /// </summary>

+ 1 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Models/Common/ButtonGroup.cs

@@ -257,6 +257,7 @@ namespace CallCenterApi.Interface.Models.Common
257 257
         {
258 258
             return new button(69, "呼叫");
259 259
         }
260
+       
260 261
         /// <summary>
261 262
         /// 已办未果通过
262 263
         /// </summary>

+ 1 - 0
CallCenterApi/CallCenterApi.Model/submit_case_finish_info.cs

@@ -123,6 +123,7 @@ namespace CallCenterApi.Model
123 123
             set { _createtime = value; }
124 124
             get { return _createtime; }
125 125
         }
126
+        public string FINISH_STATUS { set; get; }
126 127
         #endregion Model
127 128
 
128 129
     }

+ 2 - 2
CallCenterCommon/CallCenter.QuartzService/PushWorkorder.cs

@@ -27,7 +27,7 @@ namespace CallCenter.QuartzService
27 27
             
28 28
             try
29 29
             {
30
-                var Dataurl = HttpMethods.HttpPost("http://10.0.38.106:8002/PushMessage/SmsOverTime");
30
+               // var Dataurl = HttpMethods.HttpPost("http://10.0.38.106:8002/PushMessage/SmsOverTime");
31 31
             }
32 32
             catch (Exception)
33 33
             {
@@ -37,7 +37,7 @@ namespace CallCenter.QuartzService
37 37
             try
38 38
             {
39 39
                 //var Dataurl2 = HttpMethods.HttpPost("http://10.0.38.106:8002/WorkOrder/PushErrorWorkOrder");
40
-                var Dataurl2 = HttpMethods.HttpPost("http://localhost:63663/App/PushErrorWorkOrder");
40
+                var Dataurl2 = HttpMethods.HttpPost("http://10.0.38.106:8002/App/PushErrorWorkOrder");
41 41
             }
42 42
             catch (Exception)
43 43
             {

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

@@ -89,6 +89,7 @@
89 89
     <Compile Include="Configs\Configs.cs" />
90 90
     <Compile Include="ConvertJson.cs" />
91 91
     <Compile Include="DataTableExtensions.cs" />
92
+    <Compile Include="DingTalkHelper.cs" />
92 93
     <Compile Include="DirFileHelper.cs" />
93 94
     <Compile Include="EncryptHelper.cs" />
94 95
     <Compile Include="FileUp.cs" />

+ 443 - 0
CallCenterCommon/CallCenter.Utility/DingTalkHelper.cs

@@ -0,0 +1,443 @@
1
+
2
+using Newtonsoft.Json;
3
+using Newtonsoft.Json.Linq;
4
+using System;
5
+using System.Collections.Generic;
6
+using System.Collections.Specialized;
7
+using System.IO;
8
+using System.Linq;
9
+using System.Net;
10
+using System.Net.Http;
11
+using System.Net.Http.Headers;
12
+using System.Text;
13
+
14
+namespace CallCenter.Utility
15
+{
16
+    public class DingTalkHelper
17
+    {
18
+        /// <summary>
19
+        /// 获取AccessToken
20
+        /// </summary>
21
+        /// <returns></returns>
22
+        public static string GetAccessToken()
23
+        {
24
+            var accesstoken = RedisHelper1.StringGet("DingTalkToken")?.ToString() ?? "";
25
+            if (string.IsNullOrEmpty(accesstoken))
26
+            {
27
+                string result = HttpMethods.HttpGet(string.Format("https://oapi.dingtalk.com/gettoken?appkey={0}&appsecret={1}",
28
+                    Configs.GetValue("DingTalk_AppKey"), Configs.GetValue("DingTalk_AppSecret")));
29
+                var resultobj = result.ToJObject();
30
+                if (resultobj["errcode"].ToString() == "0")
31
+                {
32
+                    accesstoken = resultobj["access_token"].ToString();
33
+                    string cachetime = Configs.GetValue("DingTalk_TokenCacheTime");
34
+                    RedisHelper1.StringSet("DingTalkToken", accesstoken, new TimeSpan(0, 0, int.Parse(cachetime)));
35
+                }
36
+            }
37
+
38
+            return accesstoken;
39
+        }
40
+
41
+        /// <summary>
42
+        /// 根据手机号获取用户id
43
+        /// </summary>
44
+        /// <param name="mobile">手机号</param>
45
+        /// <returns></returns>
46
+        public static string GetUserIdByMobile(string mobile)
47
+        {
48
+            string userid = string.Empty;
49
+            var param = new
50
+            {
51
+                mobile = mobile
52
+            };
53
+            var strresult = HttpMethods.HttpPost(string.Format("https://oapi.dingtalk.com/topapi/v2/user/getbymobile?access_token={0}", GetAccessToken()), param.ToJson(), "application/json");
54
+            if (!string.IsNullOrEmpty(strresult))
55
+            {
56
+                var resultobj = strresult.ToJObject();
57
+                if (resultobj["errcode"].ToString() != "0")
58
+                {
59
+                    LogFactory.GetLogger("DINGDING ").Error(strresult);
60
+                    //userid = resultobj["errmsg"].ToString();
61
+                }
62
+                else
63
+                {
64
+                    var robj = resultobj["result"].ToString().ToJObject();
65
+                    userid = robj["userid"].ToString();
66
+                }
67
+            }
68
+
69
+            return userid;
70
+        }
71
+
72
+        /// <summary>
73
+        /// 发送模板消息
74
+        /// </summary>
75
+        /// <param name="userids">多个用户逗号隔开</param>
76
+        /// <param name="deptids">多个部门逗号隔开</param>
77
+        /// <param name="msgjson">模板参数json</param>
78
+        /// <param name="templateid">模板ID</param>
79
+        /// <returns></returns>
80
+        public static string SendMessageByTemplate(string userids, string deptids, string msgjson, string templateid)
81
+        {
82
+            string result = string.Empty;
83
+            var param = new
84
+            {
85
+                agent_id = Configs.GetValue("DingTalk_AgentId"),
86
+                template_id = templateid,
87
+                //data = "{\"name\":\"淘宝6\",\"name2\":\"http://www.taobao.com\"}",
88
+                data = msgjson,
89
+                //userid_list = "213,234,123",
90
+                userid_list = userids,
91
+                //dept_id_list = "421,897,262"
92
+                dept_id_list = deptids
93
+            };
94
+            var strresult = HttpMethods.HttpPost(string.Format("https://oapi.dingtalk.com/topapi/message/corpconversation/sendbytemplate?access_token={0}", GetAccessToken()), param.ToJson(), "application/json");
95
+            if (!string.IsNullOrEmpty(strresult))
96
+            {
97
+                var resultobj = strresult.ToJObject();
98
+                if (resultobj["errcode"].ToString() != "0")
99
+                {
100
+                    LogFactory.GetLogger("DINGDING ").Error(strresult);
101
+                    result = resultobj["errmsg"].ToString();
102
+                }
103
+            }
104
+            return result;
105
+        }
106
+
107
+
108
+        /// <summary>
109
+        /// 发送工作通知
110
+        /// </summary>
111
+        /// <param name="userids">多个用户逗号隔开</param>
112
+        /// <param name="deptids">多个部门逗号隔开</param>
113
+        /// <param name="msgjson">内容json</param>
114
+        /// <param name="isall">是否全部群发</param>
115
+        /// <returns></returns>
116
+        public static string SendMessage(string userids, string deptids, string msgjson, bool isall = false)
117
+        {
118
+            string result = string.Empty;
119
+            var param = new JObject();
120
+            param["agent_id"] = Configs.GetValue("DingTalk_AgentId");
121
+            if (!string.IsNullOrEmpty(userids))
122
+            {
123
+                param["userid_list"] = userids;
124
+            }
125
+            if (!string.IsNullOrEmpty(deptids))
126
+            {
127
+                param["dept_id_list"] = deptids;
128
+            }
129
+            param["to_all_user"] = isall;
130
+            param["msg"] = msgjson.ToJObject();
131
+            //var param=new
132
+            //{
133
+            //    agent_id = ConfigHelper.GetValue("DingTalk_AgentId"),
134
+            //    //userid_list = "213,234,123",
135
+            //    userid_list = userids,
136
+            //    //dept_id_list = "421,897,262"
137
+            //    dept_id_list = deptids,
138
+            //    to_all_user = isall,
139
+            //    //msg = new {
140
+            //    //    msgtype="text",
141
+            //    //    text = new {content="内容" }
142
+            //    //},
143
+            //    //msg = new
144
+            //    //{
145
+            //    //    msgtype = "markdown",
146
+            //    //    markdown = new { text = "内容",title="标题" }
147
+            //    //},
148
+            //    msg
149
+            //};
150
+            var strresult = HttpMethods.HttpPost(string.Format("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token={0}", GetAccessToken()), param.ToJson(), "application/json");
151
+            if (!string.IsNullOrEmpty(strresult))
152
+            {
153
+                var resultobj = strresult.ToJObject();
154
+                if (resultobj["errcode"].ToString() != "0")
155
+                {
156
+                    LogFactory.GetLogger("DINGDING ").Error(strresult);
157
+                    result = resultobj["errmsg"].ToString();
158
+                }
159
+                else
160
+                {
161
+                    result = resultobj["task_id"].ToString();
162
+                }
163
+            }
164
+            return result;
165
+        }
166
+
167
+        /// <summary>
168
+        /// 发送工作通知-文本
169
+        /// </summary>
170
+        /// <param name="userids">多个用户逗号隔开</param>
171
+        /// <param name="deptids">多个部门逗号隔开</param>
172
+        /// <param name="content">文本内容</param>
173
+        /// <returns></returns>
174
+        public static string SendMessageText(string userids, string deptids, string content)
175
+        {
176
+            var msg = new
177
+            {
178
+                msgtype = "text",
179
+                text = new { content }
180
+            };
181
+            string result = SendMessage(userids, deptids, msg.ToJson());
182
+            return result;
183
+        }
184
+
185
+        /// <summary>
186
+        /// 发送链接工作通知-文本
187
+        /// </summary>
188
+        /// <param name="userids">多个用户逗号隔开</param>
189
+        /// <param name="deptids">多个部门逗号隔开</param>
190
+        /// <param name="content">文本内容</param>
191
+        /// <returns></returns>
192
+        public static string SendUrlText(string userids, string deptids, string content, string url, string title, string pc_message_url, string picurl = "@lALPDeC286_fT0rNAePNAnM")
193
+        {
194
+            var msg = new
195
+            {
196
+                msgtype = "oa",
197
+                oa = new
198
+                {
199
+                    message_url = url,
200
+                    pc_message_url,
201
+                    head = new { bgcolor = "FFBBBBBB", text = title },
202
+                    body = new { title, content = content }
203
+
204
+
205
+                }
206
+            };
207
+            string result = SendMessage(userids, deptids, msg.ToJson());
208
+            return result;
209
+        }
210
+        /// <summary>
211
+        /// 获取工作通知结果
212
+        /// <returns></returns>
213
+        public static int GetMessage(string task_id)
214
+        {
215
+            int result = 0;
216
+            var param = new JObject();
217
+            param["agent_id"] = Configs.GetValue("DingTalk_AgentId");
218
+            if (!string.IsNullOrEmpty(task_id))
219
+            {
220
+                param["task_id"] = task_id;
221
+            }
222
+            var strresult = HttpMethods.HttpPost(string.Format("https://oapi.dingtalk.com/topapi/message/corpconversation/getsendresult?access_token={0}", GetAccessToken()), param.ToJson(), "application/json");
223
+            if (!string.IsNullOrEmpty(strresult))
224
+            {
225
+                var resultobj = strresult.ToJObject();
226
+                if (resultobj["errcode"].ToString() != "0")
227
+                {
228
+                    LogFactory.GetLogger("DINGDING ").Error(strresult);
229
+                    result = 0;
230
+                }
231
+                else
232
+                {
233
+                    send_result jo = JsonConvert.DeserializeObject<send_result>(resultobj["send_result"].ToString());
234
+                    if (jo != null)
235
+                    {
236
+                        if (jo.read_user_id_list != null && jo.read_user_id_list.Count > 0)
237
+                            result = 1;
238
+                        else if (jo.unread_user_id_list != null && jo.unread_user_id_list.Count > 0)
239
+                            result = 2;
240
+                    }
241
+                }
242
+            }
243
+            return result;
244
+        }
245
+
246
+
247
+
248
+        /// <summary>
249
+        /// 通过免登码获取用户信息
250
+        /// <returns></returns>
251
+        public static string GetUserInfo(string code)
252
+        {
253
+            string result = "";
254
+            var param = new JObject();
255
+            if (!string.IsNullOrEmpty(code))
256
+            {
257
+                param["code"] = code;
258
+            }
259
+            var strresult = HttpMethods.HttpPost(string.Format("https://oapi.dingtalk.com/topapi/v2/user/getuserinfo?access_token={0}", GetAccessToken()), param.ToJson(), "application/json");
260
+            if (!string.IsNullOrEmpty(strresult))
261
+            {
262
+                JObject jo = (JObject)JsonConvert.DeserializeObject(strresult);
263
+                if (jo["errcode"].ToString() != "0")
264
+                {
265
+                    LogFactory.GetLogger("DINGDING ").Error(strresult);
266
+                    result = "err";
267
+                }
268
+                else
269
+                {
270
+                    var message = jo["result"].ToString();
271
+                    var messages = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(message);
272
+                    result = messages["userid"].ToString();
273
+                }
274
+            }
275
+            return result;
276
+        }
277
+
278
+        /// <summary>
279
+        /// 上传附件
280
+        /// <returns></returns>
281
+        public static string Upload(string media)
282
+        {
283
+            string result = "";
284
+
285
+
286
+
287
+            using (var client = new HttpClient())
288
+            {
289
+
290
+
291
+                using (var content = new MultipartFormDataContent())
292
+                {
293
+                    NameValueCollection fileCollection = new NameValueCollection();
294
+                    fileCollection.Add("media", media);
295
+
296
+                    //处理文件内容
297
+                    string[] fileKeys = fileCollection.AllKeys;
298
+                    foreach (string key in fileKeys)
299
+                    {
300
+                        byte[] bmpBytes = File.ReadAllBytes(fileCollection[key]);
301
+                        var fileContent = new ByteArrayContent(bmpBytes);//填充文件字节
302
+                        fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
303
+                        {
304
+                            Name = key,
305
+                            FileName = Path.GetFileName(fileCollection[key])
306
+                        };
307
+                        content.Add(fileContent);
308
+                    }
309
+
310
+                    var Postresult = client.PostAsync(string.Format("https://oapi.dingtalk.com/media/upload?access_token={0}&type=image", GetAccessToken()), content).Result;//post请求
311
+                    string strresult = Postresult.Content.ReadAsStringAsync().Result;
312
+                    if (!string.IsNullOrEmpty(strresult))
313
+                    {
314
+                        JObject jo = (JObject)JsonConvert.DeserializeObject(strresult);
315
+                        if (jo["errcode"].ToString() != "0")
316
+                        {
317
+                            LogFactory.GetLogger("DINGDING ").Error(strresult);
318
+                            result = "err";
319
+                        }
320
+                        else
321
+                        {
322
+                            result = jo["media_id"].ToString();
323
+                        }
324
+                    }
325
+
326
+                }
327
+            }
328
+            return result;
329
+
330
+        }
331
+
332
+
333
+
334
+        /// <summary>
335
+        /// 查询用户详情
336
+        /// <returns></returns>
337
+        public static string GetUser(string userid)
338
+        {
339
+            string result = "";
340
+            var param = new JObject();
341
+            if (!string.IsNullOrEmpty(userid))
342
+            {
343
+                param["userid"] = userid;
344
+                param["language"] = "zh_CN";
345
+            }
346
+            var strresult = HttpMethods.HttpPost(string.Format("https://oapi.dingtalk.com/topapi/v2/user/get?access_token={0}", GetAccessToken()), param.ToJson(), "application/json");
347
+            if (!string.IsNullOrEmpty(strresult))
348
+            {
349
+                JObject jo = (JObject)JsonConvert.DeserializeObject(strresult);
350
+                if (jo["errcode"].ToString() != "0")
351
+                {
352
+                    LogFactory.GetLogger("DINGDING ").Error(strresult);
353
+                    result = "err";
354
+                }
355
+                else
356
+                {
357
+                    var message = jo["result"].ToString();
358
+                    var messages = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(message);
359
+                    result = messages["mobile"].ToString();
360
+
361
+                }
362
+            }
363
+            return result;
364
+        }
365
+        public class send_result
366
+        {
367
+            public List<string> read_user_id_list { set; get; }
368
+            public List<string> unread_user_id_list { set; get; }
369
+        }
370
+        /// <summary>
371
+        /// 
372
+        /// </summary>
373
+        /// <param name="userid"></param>
374
+        /// <returns></returns>
375
+        public static string GetUserInfoByUserId(string userid)
376
+        {
377
+            //WebClient web = new WebClient();
378
+            //web.Encoding = Encoding.UTF8;
379
+            //string strresult = web.DownloadString(string.Format("https://oapi.dingtalk.com/user/get?access_token={0}&userid={1}", GetAccessToken(), userid));
380
+
381
+            //JObject jo = (JObject)JsonConvert.DeserializeObject(strresult);
382
+
383
+
384
+            //return jo.ToJson();
385
+
386
+
387
+            string url = string.Format("https://oapi.dingtalk.com/user/get?access_token={0}&userid={1}", GetAccessToken(), userid);
388
+
389
+            var strresult = HttpMethods.HttpGet(url);
390
+
391
+            return strresult;
392
+        }
393
+
394
+        //给某个部门的所有的人发消息
395
+        /// <summary>
396
+        /// 获取部门列表 参数传1 是根节点的子部门
397
+        /// https://open.dingtalk.com/document/orgapp-server/obtain-the-department-list-v2
398
+        /// </summary>
399
+        /// <returns></returns>   
400
+        public static string GetDeptlist()
401
+        {
402
+            WebClient web = new WebClient();
403
+            web.Encoding = Encoding.UTF8;
404
+            string strresult = web.DownloadString(string.Format("https://oapi.dingtalk.com/topapi/v2/department/listsub?access_token={0}&dept_id={1}", GetAccessToken(), 1));
405
+
406
+            JObject jo = (JObject)JsonConvert.DeserializeObject(strresult);
407
+
408
+
409
+            return jo.ToJson();
410
+
411
+        }
412
+
413
+        /// <summary>
414
+        ///   获取部门所有的userid
415
+        /// </summary>
416
+        /// <param name="deptid">Get   https://oapi.dingtalk.com/user/getDeptMember </param>
417
+        /// <returns></returns>
418
+        public static string GetUserIdsByDeptId(double deptid)
419
+        {
420
+
421
+
422
+            WebClient web = new WebClient();
423
+            web.Encoding = Encoding.UTF8;
424
+            string strresult = web.DownloadString(string.Format("https://oapi.dingtalk.com/user/getDeptMember?access_token={0}&deptId={1}", GetAccessToken(), deptid));
425
+
426
+            JObject jo = (JObject)JsonConvert.DeserializeObject(strresult);
427
+            if (jo != null && jo["userIds"] != null)
428
+            {
429
+                return jo["userIds"].ToString();
430
+            }
431
+
432
+            //JsonConvert.SerializeObject();
433
+            //TreeModel model= JsonConvert.DeserializeObject<TreeModel>(strresult);
434
+
435
+
436
+            return "";
437
+
438
+        }
439
+
440
+
441
+
442
+    }
443
+}