ソースを参照

综合调度相关的修改

liyuanyuan 2 年 前
コミット
5f53b9aeb6

+ 7 - 2
RMYY_CallCenter_Api/Common/WorkOrderBase.cs

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

+ 170 - 1
RMYY_CallCenter_Api/Controllers/FaultRepairController.cs

@@ -14,6 +14,8 @@ using System.Reflection;
14 14
 using System.Text;
15 15
 using System.Web;
16 16
 using System.Web.Mvc;
17
+using System.Diagnostics;
18
+using System.Security.Cryptography;
17 19
 
18 20
 namespace RMYY_CallCenter_Api.Controllers
19 21
 {
@@ -42,7 +44,7 @@ namespace RMYY_CallCenter_Api.Controllers
42 44
         private static InternalMessagesController msg = new InternalMessagesController();
43 45
 
44 46
         private static SchedulingController schcon = new SchedulingController();
45
-
47
+        private AjaxResult ajresult = new AjaxResult();
46 48
         #region 获取工单详情相关的接口
47 49
         public DataTable GetFileData(string ids,string prefix)
48 50
         {
@@ -3464,5 +3466,172 @@ namespace RMYY_CallCenter_Api.Controllers
3464 3466
 
3465 3467
 
3466 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,41 +690,42 @@ namespace RMYY_CallCenter_Api.Controllers
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 699
             Model.T_IntegratedScheduling_Base model = baseBll.GetModel(workordercode);
697 700
             if (model == null)
698 701
             {
699 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 714
                 model.F_DealDept = "";
705 715
                 model.F_DealMan = "";
706 716
                 model.F_Deadline = null;
707 717
                 model.F_AssignTime = null;
708 718
                 model.F_AssignUser = "";
709 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 727
                 return Success("撤回操作成功");
723
-            }
724
-            else
725
-            {
726
-                return Error("只能撤回未接单的工单");
727
-            }
728
+             
728 729
         }
729 730
 
730 731
 
@@ -947,25 +948,36 @@ namespace RMYY_CallCenter_Api.Controllers
947 948
         }
948 949
 
949 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 958
             Model.T_IntegratedScheduling_Base model = baseBll.GetModel(WorkOrderCode);
959
+            
960
+
958 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 971
                 model.F_CollectFile = file;
961 972
                 model.F_CollectTime = DateTime.Now;
962 973
                 baseBll.Update(model);
963
-                string stradd = "";
974
+                string stradd = "收取急查标本:" + jcnum+",非急查标本:"+fjcnum;
964 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 982
                 return Success("收取标本成功!");
971 983
             }
@@ -1009,7 +1021,7 @@ namespace RMYY_CallCenter_Api.Controllers
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,8 +24,10 @@ namespace RMYY_CallCenter_Api.Models.Enum
24 24
         dealed,      
25 25
 
26 26
         [Description("已完结")]
27
-        finish
28
-        
27
+        finish,
28
+        [Description("已撤销")]
29
+        revoked
30
+
29 31
 
30 32
 
31 33
     }