Esempio n. 1
0
        static int ApprovalDetails(string Id)
        {
            IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
            OapiProcessinstanceGetRequest request = new OapiProcessinstanceGetRequest();

            request.ProcessInstanceId = Id;
            string token = AccessToken.GetAccessToken();
            OapiProcessinstanceGetResponse response = client.Execute(request, token);

            if (response.Errcode == 0)
            {
                if (response.ProcessInstance.Status == "COMPLETED")
                {
                    return(1);
                }
                else
                {
                    return(0);
                }
            }
            else
            {
                return(2);
            }
        }
Esempio n. 2
0
        public static OapiProcessinstanceGetResponse ApprovalDetails(string ProcessId, string Token)
        {
            IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
            OapiProcessinstanceGetRequest request = new OapiProcessinstanceGetRequest();

            request.ProcessInstanceId = ProcessId;
            OapiProcessinstanceGetResponse response = client.Execute(request, Token);

            return(response);
        }
Esempio n. 3
0
        /// <summary>
        /// 获取审批实例详情 根据审批实例id调用此接口获取审批实例详情,包括审批表单信息、操作记录列表、操作人、抄送人、审批任务列表等。
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="processInstanceId">审批实例id</param>
        /// <returns></returns>
        public OapiProcessinstanceGetResponse Get(string accessToken, string processInstanceId)
        {
            IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
            OapiProcessinstanceGetRequest request = new OapiProcessinstanceGetRequest();

            request.ProcessInstanceId = processInstanceId;
            OapiProcessinstanceGetResponse response = client.Execute(request, accessToken);

            return(response);
        }
Esempio n. 4
0
        public OapiProcessinstanceGetResponse.ProcessInstanceTopVoDomain GetApprove(string processInstanceId)
        {
            IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
            OapiProcessinstanceGetRequest request = new OapiProcessinstanceGetRequest();

            request.ProcessInstanceId = processInstanceId;
            OapiProcessinstanceGetResponse response = client.Execute(request, _oper.AccessToken);

            if (response.Errcode == 0)
            {
                return(response.ProcessInstance);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 获取单个审批实例
        /// </summary>
        /// <param name="accessToken">accessToken</param>
        /// <param name="process_instance_id">审批实例id</param>
        /// <returns></returns>
        public static Processinstance GetListIds(string accessToken, string process_instance_id)
        {
            try
            {
                DefaultDingTalkClient         client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
                OapiProcessinstanceGetRequest request = new OapiProcessinstanceGetRequest();
                request.ProcessInstanceId = process_instance_id;
                OapiProcessinstanceGetResponse response = client.Execute(request, accessToken);
                if (response.Errcode == 0)
                {
                    Processinstance processinstance = new Processinstance();
                    processinstance.Title               = response.ProcessInstance.Title;
                    processinstance.CreateTime          = response.ProcessInstance.CreateTime;
                    processinstance.FinishTime          = response.ProcessInstance.FinishTime;
                    processinstance.OriginatorUserId    = response.ProcessInstance.OriginatorUserid;
                    processinstance.OriginatorDeptId    = Convert.ToInt32(response.ProcessInstance.OriginatorDeptId);
                    processinstance.Status              = response.ProcessInstance.Status;
                    processinstance.CcUserids           = response.ProcessInstance.CcUserids;
                    processinstance.Result              = response.ProcessInstance.Result;
                    processinstance.BizAction           = response.ProcessInstance.BizAction;
                    processinstance.BusinessId          = response.ProcessInstance.BusinessId;
                    processinstance.OriginatorDeptName  = response.ProcessInstance.OriginatorDeptName;
                    processinstance.FormComponentValues = new List <FormComponentValue>();
                    foreach (OapiProcessinstanceGetResponse.FormComponentValueVoDomain item in response.ProcessInstance.FormComponentValues)
                    {
                        FormComponentValue form = new FormComponentValue();
                        form.Name     = item.Name;
                        form.Value    = item.Value;
                        form.ExtValue = item.ExtValue;
                        processinstance.FormComponentValues.Add(form);
                    }

                    foreach (OapiProcessinstanceGetResponse.OperationRecordsVoDomain item in response.ProcessInstance.OperationRecords)
                    {
                        OperationRecord model = new OperationRecord();
                        model.UserId          = item.Userid;
                        model.Date            = Convert.ToDateTime(item.Date);;
                        model.OperationType   = item.OperationType;
                        model.OperationResult = item.OperationResult;
                        model.Remark          = item.Remark;
                        processinstance.OperationRecords.Add(model);
                    }
                    foreach (OapiProcessinstanceGetResponse.TaskTopVoDomain item in response.ProcessInstance.Tasks)
                    {
                        Task model = new Task();
                        model.UserId     = item.Userid;
                        model.TaskStatus = item.TaskStatus;
                        model.TaskResult = item.TaskResult;
                        model.CreateTime = Convert.ToDateTime(item.CreateTime);
                        model.FinishTime = Convert.ToDateTime(item.FinishTime);
                        processinstance.Tasks.Add(model);
                    }
                    return(processinstance);
                }
                else
                {
                    throw new Exception(response.Errcode.ToString());
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            try
            {
                YiFang_CustomerComplaintEntities DbContext = new YiFang_CustomerComplaintEntities();
                var list = DbContext.KS_Customer.Where(p => p.DingTalkApproval != null && p.Number == 4).Select(p => new { p.DingTalkApproval, p.Id }).ToList();
                //list.ForEach(ks =>
                //{
                //    var info = DbContext.KS_Customer.FirstOrDefault(p => p.Id == ks.Id);
                //    var number = ApprovalDetails(ks.DingTalkApproval);
                //    info.Number = number;

                //    Console.WriteLine("同步客诉单【" + ks.Id + "】");
                //});
                var person = DbContext.OR_Person.Where(p => p.LeaveDate == null);
                var all    = DbContext.KS_Customer_Approval.Where(p => p.state > 2);
                foreach (var ks in list)
                {
                    Console.WriteLine("同步客诉单【" + ks.Id + "】");
                    IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
                    OapiProcessinstanceGetRequest request = new OapiProcessinstanceGetRequest();
                    request.ProcessInstanceId = ks.DingTalkApproval;
                    string token = AccessToken.GetAccessToken();
                    OapiProcessinstanceGetResponse response = client.Execute(request, token);
                    Console.WriteLine(response.Errmsg);
                    if (response.Errcode == 0)
                    {
                        if (response.ProcessInstance.Status == "COMPLETED")
                        {
                            Console.WriteLine("审批单结束");
                            var info = DbContext.KS_Customer.FirstOrDefault(p => p.Id == ks.Id);
                            if (response.ProcessInstance.Result == "agree")
                            {
                                info.Number       = 1;
                                info.DeliveryDate = DateTime.Now;
                                info.State        = 2;
                            }
                            if (response.ProcessInstance.Result == "refuse")
                            {
                                info.Number       = 2;
                                info.DeliveryDate = DateTime.Now;
                                info.State        = 2;
                            }
                            DbContext.SaveChanges();
                            Console.WriteLine("审批完成");
                        }
                        //新增审批详情
                        foreach (var u in response.ProcessInstance.Tasks)
                        {
                            if (u.Userid == null)
                            {
                                continue;
                            }
                            Console.WriteLine(u.Userid);
                            var ren = person.FirstOrDefault(p => p.PsnNum == u.Userid);
                            if (ren == null)
                            {
                                continue;
                            }
                            Console.WriteLine(ren.Id.ToString());
                            if (all.Any(p => p.IdCustomer == ks.Id && p.IdPerson == ren.Id))
                            {
                                continue;
                            }

                            if (u.TaskResult == "AGREE")
                            {
                                KS_Customer_Approval kS_Customer = new KS_Customer_Approval
                                {
                                    FinishTime = DateTime.Now,
                                    IdCustomer = ks.Id,
                                    IdPerson   = ren.Id,
                                    Name       = ren.Name,
                                    state      = 3
                                };
                                Console.WriteLine("审批同意");
                                DbContext.KS_Customer_Approval.Add(kS_Customer);
                            }
                            if (u.TaskResult == "REFUSE")
                            {
                                KS_Customer_Approval kS_Customer = new KS_Customer_Approval
                                {
                                    FinishTime = DateTime.Now,
                                    IdCustomer = ks.Id,
                                    IdPerson   = ren.Id,
                                    Name       = ren.Name,
                                    state      = 4
                                };
                                Console.WriteLine("审批拒绝");
                                DbContext.KS_Customer_Approval.Add(kS_Customer);
                            }
                        }
                        Console.WriteLine("成功");
                    }
                }
                DbContext.SaveChanges();
                Console.WriteLine("同步完成");
                //Environment.Exit(0);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            System.Environment.Exit(0);
        }