liyuanyuan лет назад: 2
Родитель
Сommit
5f53b9aeb6

+ 7 - 2
RMYY_CallCenter_Api/Common/WorkOrderBase.cs

655
             }
655
             }
656
             else if (type == 2000)//综合调度
656
             else if (type == 2000)//综合调度
657
             {
657
             {
658
-                typeIdArray = new List<int> { -1, 0, 1, 2, 3, 4 };
658
+                typeIdArray = new List<int> { -1, 0, 1, 2, 3, 4 ,5};
659
                  
659
                  
660
             }
660
             }
661
             else if (type == 4000)
661
             else if (type == 4000)
679
                         strArr = new List<string> { "待提交", "待分配", "待接单", "已接单", "处理中", "待评价", "已完成" };
679
                         strArr = new List<string> { "待提交", "待分配", "待接单", "已接单", "处理中", "待评价", "已完成" };
680
                     else if (type == 3000)
680
                     else if (type == 3000)
681
                         strArr = new List<string> { "待提交", "待派单", "待接单", "已接单", "待评价", "已完成", "已完成", "已接单", "确认耗材中" };
681
                         strArr = new List<string> { "待提交", "待派单", "待接单", "已接单", "待评价", "已完成", "已完成", "已接单", "确认耗材中" };
682
+                    else if (type == 2000)
682
 
683
 
684
+                        strArr = new List<string> { "待提交", "待派单", "待接单", "已接单", "待评价", "已完成", "已撤销" };
683
                     else
685
                     else
684
                         strArr = new List<string> { "待提交", "待派单", "待接单", "已接单", "待评价", "已完成", "已完成", "已接单", "已退回", "办理中", "待回访" }; break;
686
                         strArr = new List<string> { "待提交", "待派单", "待接单", "已接单", "待评价", "已完成", "已完成", "已接单", "已退回", "办理中", "待回访" }; break;
685
                 case MENUENUM.工单列表:
687
                 case MENUENUM.工单列表:
686
                     if(type==3000)
688
                     if(type==3000)
687
                         strArr = new List<string> { "待提交", "待派单", "待接单", "待完成", "已处理", "异常完结", "已完结", "待完成","确认耗材中" };
689
                         strArr = new List<string> { "待提交", "待派单", "待接单", "待完成", "已处理", "异常完结", "已完结", "待完成","确认耗材中" };
690
+                    else if (type == 2000)
691
+
692
+                        strArr = new List<string> { "待提交", "待派单", "待接单", "待完成", "已处理", "已完成", "已撤销" };
688
                     else
693
                     else
689
                     strArr = new List<string> { "待提交", "待派单", "待接单", "待完成", "已处理", "已完成", "已完成", "已接单", "已退回", "办理中", "待回访" }; break;
694
                     strArr = new List<string> { "待提交", "待派单", "待接单", "待完成", "已处理", "已完成", "已完成", "已接单", "已退回", "办理中", "待回访" }; break;
690
                 case MENUENUM.报修列表:
695
                 case MENUENUM.报修列表:
691
                     strArr = new List<string> { "待提交", "-", "待接单", "已接单", "已完成", "已完成", "已完成", "待完成", "确认耗材中" }; break;         
696
                     strArr = new List<string> { "待提交", "-", "待接单", "已接单", "已完成", "已完成", "已完成", "待完成", "确认耗材中" }; break;         
692
 
697
 
693
                 case MENUENUM.调度工单列表:
698
                 case MENUENUM.调度工单列表:
694
-                    strArr = new List<string> { "待提交", "待指派", "待接单", "待完成", "待评价", "已完成" }; break;
699
+                    strArr = new List<string> { "待提交", "待指派", "待接单", "待完成", "待评价", "已完成","已撤销" }; break;
695
                 default: break;
700
                 default: break;
696
             }
701
             }
697
             int index = typeIdArray.IndexOf(state);
702
             int index = typeIdArray.IndexOf(state);

+ 170 - 1
RMYY_CallCenter_Api/Controllers/FaultRepairController.cs

14
 using System.Text;
14
 using System.Text;
15
 using System.Web;
15
 using System.Web;
16
 using System.Web.Mvc;
16
 using System.Web.Mvc;
17
+using System.Diagnostics;
18
+using System.Security.Cryptography;
17
 
19
 
18
 namespace RMYY_CallCenter_Api.Controllers
20
 namespace RMYY_CallCenter_Api.Controllers
19
 {
21
 {
42
         private static InternalMessagesController msg = new InternalMessagesController();
44
         private static InternalMessagesController msg = new InternalMessagesController();
43
 
45
 
44
         private static SchedulingController schcon = new SchedulingController();
46
         private static SchedulingController schcon = new SchedulingController();
45
-
47
+        private AjaxResult ajresult = new AjaxResult();
46
         #region 获取工单详情相关的接口
48
         #region 获取工单详情相关的接口
47
         public DataTable GetFileData(string ids,string prefix)
49
         public DataTable GetFileData(string ids,string prefix)
48
         {
50
         {
3464
 
3466
 
3465
 
3467
 
3466
         #endregion
3468
         #endregion
3469
+
3470
+
3471
+        #region 对外提供的接口
3472
+        public static bool ICodeValidates(string strParams, string ICode)
3473
+        {
3474
+            string SecurityCode = "wuyuan%#@6"; //ConfigurationManager.AppSettings["SecurityCode"];
3475
+            string pwd = Md5(SecurityCode + strParams);
3476
+            return pwd.Equals(ICode);
3477
+            //return true;
3478
+        }
3479
+        public static string Md5(string txt)
3480
+        {
3481
+            byte[] sor = Encoding.UTF8.GetBytes(txt);
3482
+            MD5 md5 = MD5.Create();
3483
+            byte[] result = md5.ComputeHash(sor);
3484
+            StringBuilder strbul = new StringBuilder(40);
3485
+            for (int i = 0; i < result.Length; i++)
3486
+            {
3487
+                //加密结果"x2"结果为32位,"x3"结果为48位,"x4"结果为64位
3488
+                strbul.Append(result[i].ToString("x2"));
3489
+            }
3490
+            return strbul.ToString().ToLower(); ;
3491
+        }
3492
+        /// <summary>
3493
+        /// 提交工单接口
3494
+        /// </summary>
3495
+        /// <param name="timestamp"></param>
3496
+        /// <returns></returns>
3497
+        public ActionResult AddWorkOrder(long timestamp)
3498
+        {
3499
+            string port_password = HttpUtility.UrlDecode(RequestString.GetQueryString("port_password"));   //加密信息(安全验证用)
3500
+            string uuid = HttpUtility.UrlDecode(RequestString.GetQueryString("uuid"));          //客户唯一标识(安全验证用)
3501
+            string applicant = HttpUtility.UrlDecode(RequestString.GetQueryString("applicant"));
3502
+            string ApplicationDeptCode = HttpUtility.UrlDecode(RequestString.GetQueryString("ApplicationDeptCode"));
3503
+
3504
+            string Phone = HttpUtility.UrlDecode(RequestString.GetQueryString("Phone"));
3505
+            string Applicantsphone = HttpUtility.UrlDecode(RequestString.GetQueryString("Applicantsphone"));
3506
+            string WorkOrderCategory = HttpUtility.UrlDecode(RequestString.GetQueryString("WorkOrderCategory"));
3507
+            string Content = HttpUtility.UrlDecode(RequestString.GetQueryString("Content"));
3508
+            string PlaceOfRepair = HttpUtility.UrlDecode(RequestString.GetQueryString("PlaceOfRepair"));
3509
+            string EmergencyTypes = HttpUtility.UrlDecode(RequestString.GetQueryString("EmergencyTypes"));
3510
+
3511
+            if (string.IsNullOrEmpty(uuid))
3512
+            {
3513
+                ajresult.state = (int)CodeStatus.ID不存在;
3514
+                ajresult.message = "客户唯一标识不能为空";
3515
+                return Process();
3516
+            }
3517
+            else if (uuid.Length > 50)
3518
+            {
3519
+                ajresult.state = (int)CodeStatus.字符串超出长度;
3520
+                ajresult.message = "客户唯一标识超出长度";
3521
+            }
3522
+            try
3523
+            {
3524
+                DateTime time = DateTimeConvert.FromTimetag(timestamp);
3525
+            }
3526
+            catch
3527
+            {
3528
+                var err = new
3529
+                {
3530
+                    code = "1",
3531
+                    message = "时间戳错误"
3532
+                };
3533
+                return Error(err.ToJson());
3534
+            }
3535
+            if (! ICodeValidates(uuid + timestamp, port_password))
3536
+            {
3537
+                ajresult.state = (int)CodeStatus.安全验证未通过;
3538
+                ajresult.message = "安全验证未通过";
3539
+                return Process();
3540
+            }
3541
+            if (string.IsNullOrEmpty(ApplicationDeptCode))
3542
+            {
3543
+                ajresult.state = (int)CodeStatus.必填字段为空;
3544
+                ajresult.message = "科室编码不能为空";
3545
+                return Process();
3546
+            }
3547
+            if (string.IsNullOrEmpty(WorkOrderCategory))
3548
+            {
3549
+                ajresult.state = (int)CodeStatus.必填字段为空;
3550
+                ajresult.message = "工单类别不能为空";
3551
+                return Process();
3552
+            }
3553
+            Model.T_FaultRepair_Base model = new Model.T_FaultRepair_Base();      
3554
+
3555
+            string sql = "select F_DeptId from T_Sys_Department where F_DeptCode='" + ApplicationDeptCode + "' ";
3556
+            string deptid = DbHelperSQL.GetSingle(sql).ToString();
3557
+
3558
+            if (string.IsNullOrEmpty(deptid))
3559
+            {
3560
+                model.F_ApplicationDept = deptid;
3561
+            }
3562
+            else
3563
+            {
3564
+                ajresult.state = (int)CodeStatus.必填字段为空;
3565
+                ajresult.message = "科室编码不能为空";
3566
+                return Process();
3567
+            }
3568
+            model.F_Phone = Phone;
3569
+            model.F_Applicantsphone = Applicantsphone;
3570
+            
3571
+            model.F_WorkOrderCategory = WorkOrderCategory;
3572
+            model.F_Content = Content;
3573
+            model.F_PlaceOfRepair = PlaceOfRepair;//报修地点       
3574
+
3575
+
3576
+         
3577
+            model.F_WorkOrderCode = DateTime.Now.ToString("yyyyMMddHHmmssfff");//工单编号
3578
+            model.F_EmergencyTypes = EmergencyTypes;
3579
+         
3580
+            string message = "";
3581
+            var dicvalue = new Model.T_Sys_GongDan();
3582
+            dicvalue = new Bll.T_Sys_GongDan().GetModel(Convert.ToInt32(model.F_WorkOrderCategory));
3583
+            if (dicvalue != null)
3584
+            {
3585
+                message = "\n工单类型:故障报修/" + dicvalue.F_Name;
3586
+            }
3587
+            model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.neworder;
3588
+            model.F_CreateTime = DateTime.Now;
3589
+            model.F_ReplayCount = 0;
3590
+            int returnid = baseBll.Add(model);
3591
+            if (returnid > 0)
3592
+            {
3593
+                AddAddlog(model.F_WorkOrderCode);
3594
+                AddOperatorLog(applicant + "创建报修工单", (int)EnumOperatorType.add, model.F_WorkOrderCode);
3595
+                return Success("添加成功!", returnid);
3596
+            }
3597
+             return Error("添加失败!");
3598
+            
3599
+        }
3600
+             /// <summary>
3601
+             /// 成功的消息格式化
3602
+             /// </summary>
3603
+             /// <param name="message"></param>
3604
+             /// <returns></returns>
3605
+        protected virtual ActionResult Process()
3606
+        {
3607
+            string methodName = new StackTrace(true).GetFrame(1).GetMethod().Name;   //事件源
3608
+            LogHelper.Info(this.GetType().ToString() + " -- " + methodName + "\r\n" + ajresult.state + "|" + ajresult.data + ajresult.message); //日志
3609
+            var jsonMsg = new AjaxResult { state = ajresult.state, message = ajresult.message, data = ajresult.data }.ToJson();
3610
+            return Content(jsonMsg);
3611
+        }
3612
+        /// <summary>
3613
+        /// 状态枚举
3614
+        /// </summary>
3615
+        enum CodeStatus
3616
+        {
3617
+            SUCCESS = 200,
3618
+            安全验证未通过 = 400,
3619
+            无法预测的程序错误 = 501,
3620
+            参数格式错误 = 100,
3621
+            必填字段为空 = 101,
3622
+            字符串超出长度 = 102,
3623
+            数据库错误 = 103,
3624
+            执行超时 = 104,
3625
+            参数逻辑错误 = 105,
3626
+            ID不存在 = 106,
3627
+            无可上传文件 = 107,
3628
+            执行失败 = 108,
3629
+            用户已禁用 = 120,
3630
+
3631
+            异常结果类型 = 500
3632
+
3633
+        }
3634
+
3635
+        #endregion
3467
     }
3636
     }
3468
 }
3637
 }

+ 38 - 26
RMYY_CallCenter_Api/Controllers/SchedulingController.cs

690
 
690
 
691
 
691
 
692
         //综合保障中心 撤回(已指派未接单的可进行撤回,工单状态为“待指派”)
692
         //综合保障中心 撤回(已指派未接单的可进行撤回,工单状态为“待指派”)
693
-        public ActionResult Retract(string workordercode)
693
+
694
+        //综合保障中心 撤回;综合调度类工单在撤单的时候增加下拉框选择对应撤单原因(已接单撤单,等用字典维护),也可输入文本原因(接单没接单都能撤单,)(加一个工单状态,工单状态显示已撤销)
695
+        public ActionResult Retract(string workordercode,   string BackReason, int key, string value)
694
         {
696
         {
697
+            string str = "";
695
 
698
 
696
             Model.T_IntegratedScheduling_Base model = baseBll.GetModel(workordercode);
699
             Model.T_IntegratedScheduling_Base model = baseBll.GetModel(workordercode);
697
             if (model == null)
700
             if (model == null)
698
             {
701
             {
699
                 return Error("没有获取到工单号");
702
                 return Error("没有获取到工单号");
700
             }
703
             }
701
-            if (model.F_WorkOrderState == (int)EnumSchedullingWorkOrderState.receive)
704
+            if (!string.IsNullOrEmpty(BackReason))
702
             {
705
             {
703
-                model.F_WorkOrderState = (int)EnumSchedullingWorkOrderState.neworder;
706
+                str = "," + BackReason;
707
+            }
708
+            if (model.F_WorkOrderState == (int)EnumSchedullingWorkOrderState.revoked)
709
+            {
710
+                return Error("工单已经撤回");
711
+            }
712
+
713
+            model.F_WorkOrderState = (int)EnumSchedullingWorkOrderState.revoked;
704
                 model.F_DealDept = "";
714
                 model.F_DealDept = "";
705
                 model.F_DealMan = "";
715
                 model.F_DealMan = "";
706
                 model.F_Deadline = null;
716
                 model.F_Deadline = null;
707
                 model.F_AssignTime = null;
717
                 model.F_AssignTime = null;
708
                 model.F_AssignUser = "";
718
                 model.F_AssignUser = "";
709
                 model.F_UpdateTime = DateTime.Now;
719
                 model.F_UpdateTime = DateTime.Now;
720
+                model.F_Endtime = DateTime.Now;
710
 
721
 
722
+            baseBll.Update(model);
711
 
723
 
712
-                baseBll.Update(model);
713
-
714
-                ////催办次数改成0 
715
-                //BLL.T_Wo_CommonBase wcbll = new BLL.T_Wo_CommonBase();
716
-                //Model.T_Wo_CommonBase wcmodel = wcbll.GetModel(workordercode);
717
-                //wcmodel.F_UrgeCount = 0;
718
-                //wcmodel.F_UpdateTime = DateTime.Now;
719
-                //wcbll.Update(wcmodel);
724
+            string s = "\n原因:" + value + str;
720
 
725
 
721
-                AddOperatorLog("撤回了工单", (int)EnumOperatorType.retract, model.F_WorkOrderCode);
726
+            AddOperatorLogAboutKey("撤回了工单"+s, (int)EnumOperatorType.retract, model.F_WorkOrderCode,key,value, BackReason);
722
                 return Success("撤回操作成功");
727
                 return Success("撤回操作成功");
723
-            }
724
-            else
725
-            {
726
-                return Error("只能撤回未接单的工单");
727
-            }
728
+             
728
         }
729
         }
729
 
730
 
730
 
731
 
947
         }
948
         }
948
 
949
 
949
         //chuliren收取急查标本
950
         //chuliren收取急查标本
950
-        public ActionResult CollectSpecimens(string WorkOrderCode, string file ,string remark)
951
+        public ActionResult CollectSpecimens(string WorkOrderCode, string file ,string remark,int jcnum=0,int fjcnum=0)
951
         {
952
         {
952
-            if (string.IsNullOrEmpty(file))
953
-            {
954
-                return Error("急查类型必须上传附件");
955
-            }
953
+            //if (string.IsNullOrEmpty(file))
954
+            //{
955
+            //    return Error("急查类型必须上传附件");
956
+            //}
956
 
957
 
957
             Model.T_IntegratedScheduling_Base model = baseBll.GetModel(WorkOrderCode);
958
             Model.T_IntegratedScheduling_Base model = baseBll.GetModel(WorkOrderCode);
959
+            
960
+
958
             if (model != null)
961
             if (model != null)
959
             {
962
             {
963
+                //判断工单类型是否是急查标本
964
+                string sql = "select  F_GDId FROM  T_Sys_GongDan  where F_Name ='急查标本'";
965
+                string jctype = DbHelperSQL.GetSingle(sql).ToString();
966
+                if (model.F_WorkOrderCategory == jctype && jcnum == 0)
967
+                {
968
+                    return Error("急查标本数量需要大于0");
969
+                }
970
+
960
                 model.F_CollectFile = file;
971
                 model.F_CollectFile = file;
961
                 model.F_CollectTime = DateTime.Now;
972
                 model.F_CollectTime = DateTime.Now;
962
                 baseBll.Update(model);
973
                 baseBll.Update(model);
963
-                string stradd = "";
974
+                string stradd = "收取急查标本:" + jcnum+",非急查标本:"+fjcnum;
964
                 if (!string.IsNullOrEmpty(remark))
975
                 if (!string.IsNullOrEmpty(remark))
965
                 {
976
                 {
966
-                    stradd = "," + remark;
977
+                    stradd += "," + remark;
967
                 }
978
                 }
968
-                AddOperatorLog("收取标本"+stradd, (int)EnumOperatorType.collect, model.F_WorkOrderCode);
979
+
980
+                AddOperatorLog(stradd, (int)EnumOperatorType.collect, model.F_WorkOrderCode);
969
 
981
 
970
                 return Success("收取标本成功!");
982
                 return Success("收取标本成功!");
971
             }
983
             }
1009
 
1021
 
1010
 
1022
 
1011
 
1023
 
1012
-            return Success("");
1024
+            return Success("送达成功");
1013
 
1025
 
1014
         }
1026
         }
1015
 
1027
 

+ 4 - 2
RMYY_CallCenter_Api/Models/Enum/EnumSchedullingWorkOrderState.cs

24
         dealed,      
24
         dealed,      
25
 
25
 
26
         [Description("已完结")]
26
         [Description("已完结")]
27
-        finish
28
-        
27
+        finish,
28
+        [Description("已撤销")]
29
+        revoked
30
+
29
 
31
 
30
 
32
 
31
     }
33
     }