示例#1
0
        public ActionResult SubmitIdentify(IdentifyVM ivm)
        {
            DataLayer    dl        = new DataLayer();
            List <Order> orderlist = (from x in dl.orders
                                      where x.CreditCard == ivm.credit && x.InvoiceNumber == ivm.InvoiceId && x.Status == 1
                                      select x).ToList <Order>();

            if (orderlist.Count == 0)
            {
                ViewData["msg"] = "Invalid Credit Card and/or Invoice!";
                return(View("ChangeOrder", ivm));
            }

            int ino = orderlist.First().InvoiceNumber;

            List <QuickSupportTicket> qst = (from x in dl.quickSupportTickets
                                             where x.InvoiceId == ino && x.Resolved == 0
                                             select x).ToList <QuickSupportTicket>();

            if (qst.Count != 0)
            {
                ViewData["msg"] = "You Already Opened a support for this order!";
                return(View("ChangeOrder", ivm));
            }

            string orderStartDate;

            if (orderlist[0].Type == "Hotel")
            {
                orderStartDate = (from x in dl.hotelOrders
                                  where x.InvoiceID == ino
                                  select x.StartDate).ToList <string>()[0];
            }
            else if (orderlist[0].Type == "Flight")
            {
                orderStartDate = (from x in dl.flightOrders
                                  where x.InvoiceID == ino
                                  select x.DepartureDate).ToList <string>()[0];
            }
            else if (orderlist[0].Type == "CarRent")
            {
                orderStartDate = (from x in dl.rentCarOrder
                                  where x.InvoiceID == ino
                                  select x.PickUpDate).ToList <string>()[0];
            }
            else // (orderlist[0].Type == "Package")
            {
                orderStartDate = (from x in dl.packageOrders
                                  where x.InvoiceID == ino
                                  select x.DepartureDate).ToList <string>()[0];
            }


            if (!ToolsClass.iskDateValidForSupport(ToolsClass.getDate(orderStartDate)))
            {
                ViewData["msg"] = "You Cannot Change a past Order!";
                return(View("ChangeOrder", ivm));
            }

            TempData["OrderType"]     = orderlist.First().Type;
            TempData["OrderDate"]     = orderlist.First().OrderDate;
            TempData["CreditCard"]    = orderlist.First().CreditCard;
            TempData["ID"]            = orderlist.First().InvoiceNumber;
            TempData["InvoiceNumber"] = orderlist.First().InvoiceNumber;
            return(View("WriteQuickNote"));
        }
示例#2
0
        private string ddUrl = "";  //钉钉前端地址

        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }
            string signUrl = ToolsClass.GetConfig("signUrl"); context.Response.ContentType = "text/plain";
            string ymadk   = System.Configuration.ConfigurationManager.AppSettings["ymadk"].ToString() + "/";

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            //sqlServer
            da = new DbHelper.SqlHelper("SqlServer", connectionString);

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", ",").Replace("'", "‘").Replace("\t", ":").Replace("\r", ",").Replace("\n", ",");
            string JsonData = CsJson;

            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            AppWyy    = ToolsClass.GetConfig("AppWyy");
            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");

            if (isWrite == "1")
            {
                ToolsClass.TxtLog("多级审批出差申请日志", "\r\n申请入参:" + CsJson + "\r\n");
            }

            TAMcs tAMcs = new TAMcs();

            tAMcs = (TAMcs)JsonConvert.DeserializeObject(CsJson, typeof(TAMcs));
            string path = context.Request.Path.Replace("Approval/TAMultistage.ashx", "tam");
            //验证请求sign
            string sign = ToolsClass.md5(signUrl + path + "Romens1/DingDing2" + path, 32);

            ToolsClass.TxtLog("生成的sign", "生成的" + sign + "传入的sign" + tAMcs.Sign + "\r\n 后台字符串:" + signUrl + path + "Romens1/DingDing2" + path);
            if (sign != tAMcs.Sign)
            {
                context.Response.Write("{\"errmsg\":\"认证信息Sign不存在或者不正确!\",\"errcode\":1}");
                return;
            }
            //string s = JsonConvert.SerializeObject(tAMcs.NodeInfo);
            string NodeInfo = JsonConvert.SerializeObject(tAMcs.NodeInfo).Replace(",{\"AType\":\"\",\"PersonId\":\"select\",\"PersonName\":\"请选择\"}", "");

            if (tAMcs.Detail.Length <= 0)
            {
                context.Response.Write("{\"errmsg\":\"行程不允许为空,请添加行程(DD6001)\",\"errcode\":1}");
                return;
            }

            try
            {
                #region 获取access_token

                url    = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                TokenClass tokenClass = new TokenClass();
                tokenClass   = (TokenClass)JsonConvert.DeserializeObject(FhJson, typeof(TokenClass));
                access_token = tokenClass.access_token;
                errcode      = tokenClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取ACCESS_TOKEN报错(DD0004)\",\"errcode\":1}");
                    return;
                }

                #endregion 获取access_token

                #region 获取用户详情

                url    = "https://oapi.dingtalk.com/user/get?access_token=" + access_token + "&userid=" + tAMcs.DDOperatorId;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                GetUserXq userXqClass = new GetUserXq();
                userXqClass = (GetUserXq)JsonConvert.DeserializeObject(FhJson, typeof(GetUserXq));
                errcode     = userXqClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取申请人详细信息报错(DD6003)\",\"errcode\":1}");
                    return;
                }
                operatorName = userXqClass.name;

                #endregion 获取用户详情

                #region 获取用户guid

                Sql = "select top 1 guid from  FlowEmployee where employeecode='" + userXqClass.jobnumber + $"' and orgcode='{tAMcs.DeptCode}'";
                obj = da.GetValue(Sql);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"用户不存在(DD6000)\",\"errcode\":1}");
                    return;
                }
                operatorGuid = obj.ToString();

                #endregion 获取用户guid

                #region 获取申请流水号

                Sql    = "select dbo.GetBillNo('DDTrvelReq','" + userXqClass.jobnumber + "',getdate())";
                obj    = da.GetValue(Sql);
                billno = obj.ToString();

                if (billno == "1")
                {
                    billno = "CL" + userXqClass.jobnumber + DateTime.Now.ToString("yyyyMMdd") + "0001";

                    Sql = "update BillNumber set MaxNum=1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='DDTrvelReq' and BillDate<>convert(varchar(20),GETDATE(),120)";
                }
                else
                {
                    Sql = "update BillNumber set MaxNum=MaxNum+1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='DDTrvelReq'";
                }
                obj = da.ExecSql(Sql);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"更新审批信息出错(DD6006)\",\"errcode\":1}");
                    return;
                }

                if (tAMcs.NodeInfo.Length == 0)
                {
                    //自动同意

                    #region 保存行程信息

                    sqlList.Clear();
                    sqlTou.Clear();

                    sqlTou.Append("insert into TravelReq(BillNo,TravelReason,Notes,DeptName,DeptCode,DDOperatorId,OperatorGuid,Urls,ProcessNodeInfo,BillDate,IsAuditing,OperatorName,AppendixUrl,PictureUrl) values('").Append(billno).Append("','")
                    .Append(tAMcs.TravelReason).Append("','")
                    .Append(tAMcs.Notes).Append("','")
                    .Append(tAMcs.DeptName).Append("','")
                    .Append(tAMcs.DeptCode).Append("','")
                    .Append(tAMcs.DDOperatorId).Append("','")
                    .Append(operatorGuid).Append("','")    //内部数据库用户GUID
                    .Append(JsonConvert.SerializeObject(tAMcs.Urls)).Append("','")
                    .Append(NodeInfo).Append("','")
                    .Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Append("','")
                    .Append("0").Append("','")
                    .Append(operatorName).Append("','");
                    if (string.IsNullOrEmpty(tAMcs.AppendixUrl))
                    {
                        sqlTou.Append("未传").Append("','");
                    }
                    else
                    {
                        sqlTou.Append(tAMcs.AppendixUrl).Append("','");
                    }
                    if (string.IsNullOrEmpty(tAMcs.PictureUrl))
                    {
                        sqlTou.Append("未传").Append("')");
                    }
                    else
                    {
                        sqlTou.Append(tAMcs.PictureUrl).Append("')");
                    }
                    sqlList.Add(sqlTou.ToString());

                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("多级审批出差申请日志", "\r\n操作TravelReq表:" + sqlTou.ToString() + "\r\n");
                    }

                    sqlTou.Clear();
                    sqlTou.Append("insert into TravelReqDetail(BillNo,Guid,TranMode,OtherTranMode,IsReturn,DepaCity,DepaCity1,DepaCity2,DestCity,DestCity1,DestCity2,StartDate,EndDate,Hours,Days,BearOrga,CustCode,CustName,Peers,PeersName) values('");
                    for (int i = 0; i < tAMcs.Detail.Length; i++)
                    {
                        sqlTi.Clear();
                        sqlTi.Append(sqlTou.ToString()).Append(billno).Append("','")
                        .Append(Guid.NewGuid().ToString()).Append("','")
                        .Append(tAMcs.Detail[i].TranMode).Append("','")
                        .Append(tAMcs.Detail[i].OtherTranMode).Append("','")
                        .Append(tAMcs.Detail[i].IsReturn).Append("','")
                        .Append(tAMcs.Detail[i].DepaCity).Append("','")
                        .Append(tAMcs.Detail[i].DepaCity1).Append("','")
                        .Append(tAMcs.Detail[i].DepaCity2).Append("','")
                        .Append(tAMcs.Detail[i].DestCity).Append("','")
                        .Append(tAMcs.Detail[i].DestCity1).Append("','")
                        .Append(tAMcs.Detail[i].DestCity2).Append("','")
                        .Append(tAMcs.Detail[i].StartDate).Append(":01','")
                        .Append(tAMcs.Detail[i].EndDate).Append(":01','")
                        .Append(tAMcs.Detail[i].Hours).Append("','")
                        .Append(tAMcs.Detail[i].Days).Append("','")
                        .Append(tAMcs.Detail[i].BearOrga).Append("','")
                        .Append(tAMcs.Detail[i].CustCode).Append("','")
                        .Append(tAMcs.Detail[i].CustName).Append("','")
                        .Append(tAMcs.Detail[i].Peers).Append("','")
                        .Append(tAMcs.Detail[i].PeersName).Append("')");
                        sqlList.Add(sqlTi.ToString());
                        if (isWrite == "1")
                        {
                            ToolsClass.TxtLog("多级审批出差申请日志", "操作TravelReq表:" + sqlTi.ToString() + "\r\n");
                        }
                    }
                    //执行SQL语句Insert
                    obj = da.ExecSql(sqlList);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"保存出差申请信息出错(DD6002)\",\"errcode\":1}");
                        return;
                    }

                    #endregion 保存行程信息

                    Sql = "update TravelReq set isauditing='1',auditingdate=getdate()  where billno='" + billno + "'";
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("多级审批出差申请审批日志", "\r\n操作TravelReq表:" + Sql.ToString() + "\r\n");
                    }
                    obj = da.ExecSql(Sql);

                    urlcsjson = ddUrl + $"/shenpi/index.html?billno={billno}&BillClassId={tAMcs.BillClassId}&showmenu=false";
                    urlcsjson = HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);
                    url       = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                    CsJson    = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + tAMcs.DDOperatorId + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + "dingtalk://dingtalkclient/page/link?url=" + urlcsjson + "&pc_slide=true\",\"picUrl\":\"@\",\"title\":\"" + operatorName + "的【出差】申请\",\"text\":\"出发日期: " + tAMcs.Detail[0].StartDate.Substring(0, 10) + "\r\n返程日期: " + tAMcs.Detail[0].EndDate.Substring(0, 10) + "\r\n事由: " + tAMcs.TravelReason + "\"}}}";
                    FhJson    = ToolsClass.ApiFun("POST", url, CsJson);

                    context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                    return;
                }

                #endregion 获取申请流水号

                //获取第一级流程的人员信息
                NodeInfoDetailPerson[] NodeInfodetailPeople = tAMcs.NodeInfo[0].NodeInfoDetails[0].Persons;

                //从入参中得到审批人及抄送人的信息
                //指定人员的id列表
                StringBuilder piddept = new StringBuilder();
                string        sql     = "";

                for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                {
                    if (i > 0)
                    {
                        piddept.Append(",");
                    }

                    //判断传空
                    if (NodeInfodetailPeople[i].PersonId != "select" && NodeInfodetailPeople[i].PersonId != "")
                    {
                        sql = $"select distinct DDId from FlowEmployee where EmployeeCode ='{NodeInfodetailPeople[i].PersonId}'";
                        piddept.Append(da.GetValue(sql).ToString());
                    }
                }

                #region 保存行程信息

                sqlList.Clear();
                sqlTou.Clear();

                sqlTou.Append("insert into TravelReq(BillNo,TravelReason,Notes,DeptName,DeptCode,DDOperatorId,OperatorGuid,JsonData,Urls,ProcessNodeInfo,BillDate,IsAuditing,OperatorName,AppendixUrl,PictureUrl) values('").Append(billno).Append("','")
                .Append(tAMcs.TravelReason).Append("','")
                .Append(tAMcs.Notes).Append("','")
                .Append(tAMcs.DeptName).Append("','")
                .Append(tAMcs.DeptCode).Append("','")
                .Append(tAMcs.DDOperatorId).Append("','")
                .Append(operatorGuid).Append("','")    //内部数据库用户GUID
                .Append(JsonData).Append("','")
                .Append(JsonConvert.SerializeObject(tAMcs.Urls)).Append("','")
                .Append(NodeInfo).Append("','")
                .Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Append("','")
                .Append("0").Append("','")
                .Append(operatorName).Append("','");
                if (string.IsNullOrEmpty(tAMcs.AppendixUrl))
                {
                    sqlTou.Append("未传").Append("','");
                }
                else
                {
                    sqlTou.Append(tAMcs.AppendixUrl).Append("','");
                }
                if (string.IsNullOrEmpty(tAMcs.PictureUrl))
                {
                    sqlTou.Append("未传").Append("')");
                }
                else
                {
                    sqlTou.Append(tAMcs.PictureUrl).Append("')");
                }
                sqlList.Add(sqlTou.ToString());

                if (isWrite == "1")
                {
                    ToolsClass.TxtLog("多级审批出差申请日志", "\r\n操作TravelReq表:" + sqlTou.ToString() + "\r\n");
                }

                sqlTou.Clear();
                sqlTou.Append("insert into TravelReqDetail(BillNo,Guid,TranMode,OtherTranMode,IsReturn,DepaCity,DepaCity1,DepaCity2,DestCity,DestCity1,DestCity2,StartDate,EndDate,Hours,Days,BearOrga,CustCode,CustName,Peers,PeersName) values('");
                for (int i = 0; i < tAMcs.Detail.Length; i++)
                {
                    sqlTi.Clear();
                    sqlTi.Append(sqlTou.ToString()).Append(billno).Append("','")
                    .Append(Guid.NewGuid().ToString()).Append("','")
                    .Append(tAMcs.Detail[i].TranMode).Append("','")
                    .Append(tAMcs.Detail[i].OtherTranMode).Append("','")
                    .Append(tAMcs.Detail[i].IsReturn).Append("','")
                    .Append(tAMcs.Detail[i].DepaCity).Append("','")
                    .Append(tAMcs.Detail[i].DepaCity1).Append("','")
                    .Append(tAMcs.Detail[i].DepaCity2).Append("','")
                    .Append(tAMcs.Detail[i].DestCity).Append("','")
                    .Append(tAMcs.Detail[i].DestCity1).Append("','")
                    .Append(tAMcs.Detail[i].DestCity2).Append("','")
                    .Append(tAMcs.Detail[i].StartDate).Append(":01','")
                    .Append(tAMcs.Detail[i].EndDate).Append(":01','")
                    .Append(tAMcs.Detail[i].Hours).Append("','")
                    .Append(tAMcs.Detail[i].Days).Append("','")
                    .Append(tAMcs.Detail[i].BearOrga).Append("','")
                    .Append(tAMcs.Detail[i].CustCode).Append("','")
                    .Append(tAMcs.Detail[i].CustName).Append("','")
                    .Append(tAMcs.Detail[i].Peers).Append("','")
                    .Append(tAMcs.Detail[i].PeersName).Append("')");
                    sqlList.Add(sqlTi.ToString());
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("多级审批出差申请日志", "操作TravelReq表:" + sqlTi.ToString() + "\r\n");
                    }
                }
                //执行SQL语句Insert
                obj = da.ExecSql(sqlList);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"保存出差申请信息出错(DD6002)\",\"errcode\":1}");
                    return;
                }

                #endregion 保存行程信息

                //保存流程信息到comments表
                sqlList.Clear();
                for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                {
                    sqlTou.Clear();
                    if (NodeInfodetailPeople[i].PersonId != "select")
                    {
                        sqlTou.Append("insert into ApprovalComments(CommentsId,BillClassId,BillNo,ApprovalID,ApprovalName,ApprovalComments,ApprovalStatus,AType,ApprovalDate,IsAndOr,IsLeader,PersonType,NodeNumber) values('").Append(Guid.NewGuid().ToString()).Append("','")
                        .Append(tAMcs.BillClassId).Append("','")
                        .Append(billno).Append("','")
                        .Append(NodeInfodetailPeople[i].PersonId).Append("','")
                        .Append(NodeInfodetailPeople[i].PersonName).Append("','")//内部数据库用户GUID
                        .Append("").Append("','")
                        .Append("0").Append("','")
                        .Append(NodeInfodetailPeople[i].AType).Append("','")
                        .Append(DateTime.Now).Append("','")
                        .Append(tAMcs.NodeInfo[0].NodeInfoDetails[0].IsAndOr).Append("','")
                        .Append(tAMcs.NodeInfo[0].NodeInfoDetails[0].IsLeader).Append("','")
                        .Append(tAMcs.NodeInfo[0].NodeInfoType).Append("','")
                        .Append("2").Append("')");
                        sqlList.Add(sqlTou.ToString());
                        if (isWrite == "1")
                        {
                            ToolsClass.TxtLog("多级审批出差申请日志", "\r\n操作ApprovalComments表:" + sqlTou.ToString() + "\r\n");
                        }
                    }
                }
                //执行SQL语句Insert
                obj = da.ExecSql(sqlList);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"保存出差申请节点信息出错(DD6002)\",\"errcode\":1}");
                    return;
                }

                #region 发送工作通知消息

                url       = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                urlcsjson = ddUrl + $"/shenpi/index.html?billno={billno}&BillClassId={tAMcs.BillClassId}&showmenu=false";
                urlcsjson = HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);
                CsJson    = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + piddept.ToString() + "," + tAMcs.DDOperatorId + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + "dingtalk://dingtalkclient/page/link?url=" + urlcsjson + "&pc_slide=true\",\"picUrl\":\"@\",\"title\":\"" + operatorName + "的【出差】申请\",\"text\":\"出发日期: " + tAMcs.Detail[0].StartDate.Substring(0, 10) + "\r\n返程日期: " + tAMcs.Detail[0].EndDate.Substring(0, 10) + "\r\n事由: " + tAMcs.TravelReason + "\"}}}";
                FhJson    = ToolsClass.ApiFun("POST", url, CsJson);

                ToolsClass.TxtLog("多级审批出差申请日志", "发起申请" + CsJson.ToString() + "\r\n");
                XXTZ xxtzClass = new XXTZ();
                xxtzClass = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                errcode   = xxtzClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"您的出差申请消息通知失败(DD6004)\",\"errcode\":1}");
                    return;
                }

                #endregion 发送工作通知消息

                path = context.Request.Path.Replace("Approval/TAMultistage.ashx", "tasp");
                //验证请求sign
                sign = ToolsClass.md5(signUrl + path + "Romens1/DingDing2" + path, 32);
                TaskFactory taskFactory = new TaskFactory();
                if (tAMcs.NodeInfo[0].NodeInfoType == "3")
                {
                    //根据数据开启多个线程调用审批接口

                    taskFactory.StartNew(() =>
                    {
                        for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                        {
                            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(ymadk + "tasp");
                            webrequest.Method         = "post";

                            new Action(() =>
                            {
                                fasongqingqiu ad = new fasongqingqiu
                                {
                                    BillNo       = billno,
                                    DDAuditingId = da.GetValue($"select distinct ddid from FlowEmployee where employeecode='{NodeInfodetailPeople[i].PersonId}'").ToString(),
                                    IsAuditing   = "3",
                                    DDOperatorId = tAMcs.DDOperatorId,
                                    OperatorName = operatorName,
                                    BillClassId  = tAMcs.BillClassId,
                                    Sign         = sign
                                };
                                byte[] postdatabyte      = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ad));
                                webrequest.ContentLength = postdatabyte.Length;
                                Stream stream;
                                stream = webrequest.GetRequestStream();
                                stream.Write(postdatabyte, 0, postdatabyte.Length);
                                stream.Close();
                                using (var httpWebResponse = webrequest.GetResponse())
                                    using (StreamReader responseStream = new StreamReader(httpWebResponse.GetResponseStream()))
                                    {
                                        String ret = responseStream.ReadToEnd();
                                    }
                            }).Invoke();
                        }
                    });
                }
                if (tAMcs.NodeInfo[0].NodeInfoType == "2")
                {
                    DataRow[] dataRows = null;

                    sql = "";
                    sql = $"select ApprovalComments,ApprovalName,ApprovalID  from ApprovalComments where BillNo ='{billno}'  and BillClassId='{tAMcs.BillClassId}' and ApprovalStatus ='1'";
                    DataTable logComments = da.GetDataTable(sql);
                    //如果下个环节中的人在之前已同意,自动调用此接口同意完成审批
                    taskFactory.StartNew(() =>
                    {
                        for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                        {
                            dataRows = logComments.Select("ApprovalID ='" + NodeInfodetailPeople[i].PersonId + "'");
                            //如果之前已经同意或者是发起人
                            if (dataRows.Length != 0 || da.GetValue($"select distinct DDId from FlowEmployee where EmployeeCode ='{NodeInfodetailPeople[i].PersonId}'").ToString() == tAMcs.DDOperatorId)
                            {
                                HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(ymadk + "tasp");
                                webrequest.Method         = "post";
                                new Action(() =>
                                {
                                    fasongqingqiu ad = new fasongqingqiu
                                    {
                                        BillNo       = billno,
                                        DDAuditingId = da.GetValue($"select distinct ddid from FlowEmployee where employeecode='{NodeInfodetailPeople[i].PersonId}'").ToString(),
                                        IsAuditing   = "1",
                                        DDOperatorId = tAMcs.DDOperatorId,
                                        OperatorName = operatorName,
                                        BillClassId  = tAMcs.BillClassId,
                                        AuditingIdea = "同意",
                                        Sign         = sign
                                    };
                                    byte[] postdatabyte      = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ad));
                                    webrequest.ContentLength = postdatabyte.Length;
                                    Stream stream;
                                    stream = webrequest.GetRequestStream();
                                    stream.Write(postdatabyte, 0, postdatabyte.Length);
                                    stream.Close();
                                    using (var httpWebResponse = webrequest.GetResponse())
                                        using (StreamReader responseStream = new StreamReader(httpWebResponse.GetResponseStream()))
                                        {
                                            String ret = responseStream.ReadToEnd();
                                        }
                                }).Invoke();
                            }
                        }
                    });
                }

                context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#3
0
        private string ddUrl = ""; //钉钉前端地址

        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            //sqlServer
            da = new DbHelper.SqlHelper("SqlServer", connectionString);

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            string signUrl = ToolsClass.GetConfig("signUrl"); context.Response.ContentType = "text/plain";

            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", ",").Replace("'", "‘").Replace("\t", ":").Replace("\r", ",").Replace("\n", ",");
            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            string AppWyy = ToolsClass.GetConfig("AppWyy");

            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");

            if (isWrite == "1")
            {
                ToolsClass.TxtLog("服务日志记录", "\r\n服务日志记录:" + CsJson + "\r\n");
            }

            SL sl = new SL();

            sl = (SL)JsonConvert.DeserializeObject(CsJson, typeof(SL));
            string path = context.Request.Path.Replace("Common/ServiceLog.ashx", "servicelog");
            //验证请求sign
            string sign = ToolsClass.md5(signUrl + path + "Romens1/DingDing2" + path, 32);

            ToolsClass.TxtLog("生成的sign", "生成的" + sign + "传入的sign" + sl.Sign + "\r\n 后台字符串:" + signUrl + path + "Romens1/DingDing2" + path);
            if (sign != sl.Sign)
            {
                context.Response.Write("{\"errmsg\":\"认证信息Sign不存在或者不正确!\",\"errcode\":1}");
                return;
            }
            try
            {
                //根据用户工号获取guid
                string userGuid = da.GetValue($"select guid from employee where employeecode ='{sl.JobNumber}'").ToString();

                //保存日志信息
                if (sl.Type == "Save")
                {
                    //获取单号
                    Sql    = "select dbo.GetBillNo('100525010010','" + sl.JobNumber + "',getdate())";
                    obj    = da.GetValue(Sql);
                    billno = obj.ToString();

                    if (billno == "1")
                    {
                        billno = "FW" + sl.JobNumber + DateTime.Now.ToString("yyyyMMdd") + "0001";

                        Sql = "update BillNumber set MaxNum=1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='100525010010' and BillDate<>convert(varchar(20),GETDATE(),120)";
                    }
                    else
                    {
                        Sql = "update BillNumber set MaxNum=MaxNum+1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='100525010010'";
                    }
                    obj = da.ExecSql(Sql);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"更新单号信息出错(DD6006)\",\"errcode\":1}");
                        return;
                    }
                    //获取当前操作人的部门信息相对应的guid
                    string sqlss = ",";

                    #region 保存日志信息

                    sqlList.Clear();
                    sqlTou.Clear();
                    sqlTou.Append("insert into CUSTSERVLOG(GUID,BillDate,CustCode,BillNo,ProbType,HourMuch,ProbDesc,UnSolvCaus,OperatorGUID,ProcState,SolutionDesc,IMPLPERS,SERVDUEDATE,PicUrls) values('")
                    .Append(Guid.NewGuid().ToString()).Append("','")
                    .Append(sl.BillDate).Append("','")
                    .Append(sl.CustCode).Append("','")
                    .Append(billno).Append("','")
                    .Append(sl.ProbType).Append("','")
                    .Append(sl.HourMuch).Append("','")
                    .Append(sl.ProbDesc).Append("','")
                    .Append(sl.UnSolvCaus).Append("','")
                    .Append(userGuid).Append("','")
                    .Append(sl.ProState).Append("','")
                    .Append(sl.SolutionDesc).Append("','")
                    .Append(sl.SJobNumber).Append("','")
                    .Append(sl.ServDueDate).Append("','")
                    .Append(JsonConvert.SerializeObject(sl.Urls))
                    .Append("')");
                    sqlss = sqlTou.ToString() + sqlss;
                    sqlList.Add(sqlTou.ToString());
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("服务日志记录", "\r\n保存日志信息中执行的sql:" + sqlss + "\r\n");
                    }
                    //执行SQL语句Insert
                    obj = da.ExecSql(sqlList);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"保存服务日志记录出错(DD6002)\",\"errcode\":1}");
                        return;
                    }

                    #endregion 保存日志信息

                    context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                    return;
                }

                //确定客户的时候,查询相应的信息
                if (sl.Type == "SelectSSFW")
                {
                    DataTable ssfw = da.GetDataTable($"SELECT distinct A.CUSTCODE 客户编号,A.CUSTNAME 客户名称,L.NAME 省,M.NAME  市,N.NAME  县,'' 最后合同时间,convert(varchar(10),A.SERVDUEDATE,23) 服务到期日,DateDiff(dd,getdate(),A.SERVDUEDATE) 剩余服务天数,A.SERVPERS+'-'+H.EMPLOYEENAME 服务负责人,F.EMPLOYEENAME 实施负责人,A.IMPLPERS,A.SALEPERS+'-'+G.EMPLOYEENAME 销售负责人 FROM CUSTOMER A LEFT JOIN EMPLOYEE F ON A.IMPLPERS=F.EMPLOYEECODE LEFT JOIN EMPLOYEE G ON A.SALEPERS=G.EMPLOYEECODE LEFT JOIN EMPLOYEE H ON A.SERVPERS=H.EMPLOYEECODE LEFT JOIN PROVINCES L ON A.PROVINCE=L.CODE LEFT JOIN CITIES M ON A.CITY=M.CODE LEFT JOIN AREAS N ON A.AREA=N.CODE where A.CUSTCODE = '{sl.CustCode}'");
                    FhJson = "{\"errmsg\":\"ok\",\"errcode\":\"0\",\"SSRY\":\"" + ssfw.Rows[0]["实施负责人"].ToString() + "\",\"SJobNumber\":\"" + ssfw.Rows[0]["IMPLPERS"].ToString() + "\",\"ServdueDate\":\"" + ssfw.Rows[0]["服务到期日"].ToString() + "\"}";
                    context.Response.Write(FhJson);
                    ToolsClass.TxtLog("服务日志记录", "\r\n根据客户编码查询客户信息返回:" + FhJson + "\r\n");
                    return;
                }
                //查询当前人操作的实施日志
                if (sl.Type == "SelectDT")
                {
                    DataTable ssfw = da.GetDataTable($"SELECT a.BillNo,b.custname,a.ProbType,a.ProcState,a.IMPLPERS,convert(varchar(10),a.BillDate,20) BillDate from CUSTSERVLOG a left join Customer b on a.custcode = b.custcode  where a.OperatorGUID = '{userGuid}' order by a.BillDate desc");
                    if (ssfw.Rows.Count == 0)
                    {
                        context.Response.Write("{\"errmsg\":\"\",\"errcode\":\"0\"}");
                        return;
                    }
                    csjsjsjs.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\",\"CustSers\":[");
                    for (int i = 0; i < ssfw.Rows.Count; i++)
                    {
                        if (i > 0)
                        {
                            csjsjsjs.Append(",");
                        }
                        csjsjsjs.Append("{\"BillNo\":\"" + ssfw.Rows[i]["BillNo"] + "\",\"CustName\":\"" + ssfw.Rows[i]["custname"] + "\",\"BillDate\":\"" + ssfw.Rows[i]["BillDate"] + "\",\"ProbType\":\"" + ssfw.Rows[i]["ProbType"] + "\",\"ProcState\":\"" + ssfw.Rows[i]["ProcState"] + "\",\"EmployeeName\":\"" + da.GetValue($"select employeename from employee where employeeCode = '{ssfw.Rows[i]["IMPLPERS"].ToString()}'").ToString() + "\",\"EmployeeCode\":\"" + ssfw.Rows[i]["IMPLPERS"] + "\"}");
                    }
                    csjsjsjs.Append("]}");
                    context.Response.Write(csjsjsjs.ToString());
                    ToolsClass.TxtLog("服务日志记录", "\r\n查询服务日志列表:" + csjsjsjs.ToString() + "\r\n");
                    return;
                }

                //查询服务日志详细信息
                if (sl.Type == "SelectDTDetail")
                {
                    DataTable ssfw = da.GetDataTable($"SELECT  convert(varchar(20),a.BillDate,20) BillDate, b.CustName, a.BillNo, a.ProbType, a.HourMuch, a.ProbDesc, a.UnSolvCaus, a.ProcState , a.SolutionDesc ,a.IMPLPERS, convert(varchar(10),a.SERVDUEDATE,20) SERVDUEDATE, a.PicUrls FROM CustServLog a left join Customer b on a.custcode = b.custcode   where a.OperatorGUID  = '{userGuid}' and a.billno = '{sl.BillNo}'");
                    if (ssfw.Rows.Count == 0)
                    {
                        context.Response.Write("{\"errmsg\":\"" + "没有相应的明细" + "\",\"errcode\":1}");
                        ToolsClass.TxtLog("服务日志记录", "\r\n查询服务日志明细:没有相应的明细\r\n");
                        return;
                    }
                    else
                    {
                        csjsjsjs.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\",\"BillDate\":\"" + ssfw.Rows[0]["BillDate"] + "\",\"CustName\":\"" + ssfw.Rows[0]["CustName"] + "\",\"BillNo\":\"" + ssfw.Rows[0]["BillNo"] + "\",\"ProbType\":\"" + ssfw.Rows[0]["ProbType"] + "\",\"HourMuch\":\"" + ssfw.Rows[0]["HourMuch"] + "\",\"ProbDesc\":\"" + ssfw.Rows[0]["ProbDesc"] + "\",\"UnSolvCaus\":\"" + ssfw.Rows[0]["UnSolvCaus"] + "\",\"ProcState\":\"" + ssfw.Rows[0]["ProcState"] + "\",\"SolutionDesc\":\"" + ssfw.Rows[0]["SolutionDesc"] + "\",\"IMPLPERSName\":\"" + da.GetValue($"select employeename from employee where employeeCode = '{ssfw.Rows[0]["IMPLPERS"].ToString()}'").ToString() + "\",\"IMPLPERS\":\"" + ssfw.Rows[0]["IMPLPERS"] + "\",\"SERVDUEDATE\":\"" + ssfw.Rows[0]["SERVDUEDATE"] + "\",\"PicUrls\":" + ssfw.Rows[0]["PicUrls"] + "}");
                        context.Response.Write(csjsjsjs.ToString());
                        ToolsClass.TxtLog("服务日志记录", "\r\n查询服务日志明细:" + csjsjsjs.ToString() + "\r\n");
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                ToolsClass.TxtLog("服务日志记录", "\r\n服务日志记录error:" + ex.Message + "\r\n");
                return;
            }
        }
示例#4
0
        public ActionResult ViewPackageInfo(PackageDetailsVM obj)
        {
            var json = "";

            using (WebClient wc = new WebClient())
            {
                json = wc.DownloadString(obj.packages[obj.selectedPack].hotel.hotelLink).ToString();
            }
            dynamic results = JsonConvert.DeserializeObject(json);

            // save some data from json to list. later we will save this data in the object we will pass to the view
            List <string> contactLST   = HotelDetailsHelper1(results, "contacts");
            List <string> amenitiesLST = HotelDetailsHelper1(results, "amenities");
            List <RoomVM> roomLST      = HotelDetailsHelper2(results);

            if (roomLST.Count == 0) // we need to fix the api
            {
                roomLST = HotelDetailsHelper3(obj.packages[obj.selectedPack].hotel.originalLink, obj.selectedPack);
            }

            // ---------------------- load reviews
            DataLayer dl = new DataLayer();

            string hotelName = results.property_name;

            List <HotelReview> hotelReviewsList = (from u in dl.hotelReviews
                                                   where u.HotelName.ToLower() == hotelName.ToLower()
                                                   select u).ToList <HotelReview>();

            // search for customer name (by email)
            List <string> customersName = new List <string>();

            for (int i = 0; i < hotelReviewsList.Count; ++i)
            {
                string tempEmail    = hotelReviewsList[i].CustomerEmail;
                string customerName = (from u in dl.customers
                                       where u.Email.ToLower() == tempEmail.ToLower()
                                       select u.FullName).ToList <string>()[0];
                customersName.Add(customerName);
            }
            // -------------------------------------


            // get image by GoogleAPI
            ImageSearch image = new ImageSearch();

            try
            {
                image.SetHotelName(results.property_name.ToString()); // initialize object by GoogleAPI
                image.SavePhotoReferences();
            }
            catch (Exception)
            {
                Thread.Sleep(1000);
                return(ViewPackageInfo(obj));
            }

            List <string> imageLST = image.GetImages();

            HotelOrderDetailsVM hotel = new HotelOrderDetailsVM()
            {
                hotelName     = results.property_name,
                address       = "ADDRESS: " + results.address.line1 + ", " + results.address.city,
                contact       = contactLST,
                amenities     = amenitiesLST,
                rating        = obj.packages[obj.selectedPack].hotel.rating.ToString(),
                latitude      = results.location.latitude,
                longitude     = results.location.longitude,
                room          = roomLST,
                image         = imageLST,
                apiKey        = image.GetKey(),
                reviews       = hotelReviewsList,
                customersName = customersName,
            };

            obj.packages[obj.selectedPack].flight.timeDuration_outbound = ToolsClass.TimeDifferences(obj.packages[obj.selectedPack].flight.outbound.DepartureTime, obj.packages[obj.selectedPack].flight.outbound.ArrivalTime);
            obj.packages[obj.selectedPack].flight.timeDuration_inbound  = ToolsClass.TimeDifferences(obj.packages[obj.selectedPack].flight.inbound.DepartureTime, obj.packages[obj.selectedPack].flight.inbound.ArrivalTime);

            FlightInfoVM flight = obj.packages[obj.selectedPack].flight;


            PackageInfoVM package = new PackageInfoVM()
            {
                hotel       = hotel,
                flight      = flight,
                nights      = obj.nights,
                price       = obj.packages[obj.selectedPack].price,
                composition = obj.composition,
            };

            return(View(package));
        }
示例#5
0
        public ActionResult SubmitSearch(PackageIndexVM packageData)
        {
            DataLayer dl = new DataLayer();

            packageData.desCode = (from u in dl.locations
                                   where  u.city.ToLower() == packageData.desCity.ToLower()
                                   select u.code).ToList <string>().FirstOrDefault();

            // HOTELS:
            HotelSearch hs = new HotelSearch();

            hs.FillData(packageData.desCode, packageData.sdate, packageData.edate);
            hs.BuildURL();
            string json = hs.GetJson();

            dynamic         results = JsonConvert.DeserializeObject(json); // convert incoming data to json form
            SearchResultsVM sr      = new SearchResultsVM();

            sr.hotelSearchResultsVM = new List <HotelSearchResultsVM>();
            sr.startdDate           = packageData.sdate;
            sr.endDate = packageData.edate;
            sr.nights  = ToolsClass.getNumOfNights(ToolsClass.getDate(sr.startdDate), ToolsClass.getDate(sr.endDate));

            for (int i = 0; i < results.results.Count; ++i)
            {
                ImageSearch image = new ImageSearch();

                try
                {
                    image.SetHotelName(results.results[i].property_name.ToString()); // initialize object by GoogleAPI
                }
                catch (Exception)
                {
                    Thread.Sleep(1000);
                    return(SubmitSearch(packageData));
                }

                int newRating = -1; // initialize to -1
                try
                {
                    if (results.results[i].awards[0].rating != null)
                    {
                        newRating = results.results[i].awards[0].rating;
                    }
                }
                catch (Exception) { }
                if (newRating == -1)
                {
                    newRating = GenerateRating();
                }

                HotelSearchResultsVM temp = new HotelSearchResultsVM()
                {
                    originalLink     = hs.GetSearchURL(), // to fix the api room problem
                    hotelLink        = results.results[i]._links.more_rooms_at_this_hotel.href,
                    hotelName        = results.results[i].property_name,
                    hotelDescription = results.results[i].marketing_text,
                    rating           = newRating,
                    hotelPrice       = results.results[i].total_price.amount,
                    hotelImage       = image.GetImage() // image is an object
                };
                sr.hotelSearchResultsVM.Add(temp);
            }

            // FLIGHTS:
            FlightSearch flightSearch = new FlightSearch();

            flightSearch.FillData("TLV", packageData.desCode, packageData.sdate, packageData.edate, "Israel", "Tel Aviv", packageData.desCountry, packageData.desCity);

            // if no results were found (400: bad request)
            if (flightSearch.GetResponse() != "")
            {
                List <PackageDetails> packages = new List <PackageDetails>();
                packages.Add(new PackageDetails()
                {
                    flight = new FlightInfoVM()
                    {
                        departureDate      = packageData.sdate,
                        returnDate         = packageData.edate,
                        destinationCity    = packageData.desCity,
                        destinationCountry = packageData.desCountry,
                        originCity         = "Tel Aviv",
                        originCountry      = "Israel",
                    }
                });

                PackageDetailsVM newObj = new PackageDetailsVM()
                {
                    composition = packageData.composition,
                    packages    = packages,
                };
                return(View("SearchResults", newObj));
            }

            // for the google map
            string[] loc       = flightSearch.GetLocation().Split(',');
            double   latitude  = Double.Parse(loc[0]);
            double   longitude = Double.Parse(loc[1]);

            // create object to pass to the view
            FlightSearchResultsVM flightSearchResultsVM = new FlightSearchResultsVM()
            {
                departureDate       = flightSearch.GetDepartureDate(),
                destinationCity     = flightSearch.GetDestinationCity(),
                destinationCodeCity = flightSearch.GetDestinationCodeCity(),
                destinationCountry  = flightSearch.GetDestinationCountry(),
                inbound             = flightSearch.GetInbound(),
                originCity          = flightSearch.GetOriginCity(),
                originCodeCity      = flightSearch.GetOriginCodeCity(),
                originCountry       = flightSearch.GetOriginCountry(),
                outbound            = flightSearch.GetOutbound(),
                price          = flightSearch.GetPrice(),
                returnDate     = flightSearch.GetReturnDate(),
                seatsRemaining = flightSearch.GetSeatsRemaining(),
                airline        = flightSearch.GetAirline(),
            };

            PackageDetailsVM pdvm = new PackageDetailsVM();

            pdvm.composition = packageData.composition;
            var rand = new Random();

            foreach (HotelSearchResultsVM h in sr.hotelSearchResultsVM)
            {
                PackageDetails pd = new PackageDetails();
                pd.hotel = h;

                int          n = rand.Next(flightSearchResultsVM.airline.Count());
                FlightInfoVM f = new FlightInfoVM()
                {
                    airline             = flightSearchResultsVM.airline[n],
                    inbound             = flightSearchResultsVM.inbound[n],
                    outbound            = flightSearchResultsVM.outbound[n],
                    departureDate       = flightSearchResultsVM.departureDate,
                    returnDate          = flightSearchResultsVM.returnDate,
                    originCountry       = flightSearchResultsVM.originCountry,
                    originCity          = flightSearchResultsVM.originCity,
                    destinationCountry  = flightSearchResultsVM.destinationCountry,
                    destinationCity     = flightSearchResultsVM.destinationCity,
                    originCodeCity      = flightSearchResultsVM.originCodeCity,
                    destinationCodeCity = flightSearchResultsVM.destinationCodeCity,
                    seatsRemaining      = flightSearchResultsVM.seatsRemaining[n],
                    price = flightSearchResultsVM.price[n].ToString()
                };
                pd.flight = f;

                pd.price = (pd.hotel.hotelPrice + Convert.ToDouble(pd.flight.price)) * Tools.ToolsClass.getPricePercent(pdvm.composition);

                pdvm.packages.Add(pd);
            }

            pdvm.nights = sr.nights;

            pdvm.latitude  = latitude;
            pdvm.longitude = longitude;

            return(View("SearchResults", pdvm));
        }
示例#6
0
        private string ddUrl = "";                                            //钉钉前端地址

        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }

            string       FileUrl      = ToolsClass.GetConfig("FileUrl");
            GetMulParams getMulParams = new GetMulParams();
            string       ymadk        = System.Configuration.ConfigurationManager.AppSettings["ymadk"].ToString() + "/";

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            SqlHelper        = new BankDbHelper.SqlHelper("SqlServer", connectionString);
            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }
            string result  = string.Empty;
            string signUrl = ToolsClass.GetConfig("signUrl"); context.Response.ContentType = "text/plain";

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", ",").Replace("'", "‘").Replace("\t", ":").Replace("\r", ",").Replace("\n", ",");
            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            AppWyy    = ToolsClass.GetConfig("AppWyy");
            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");

            if (isWrite == "1")
            {
                ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n申请审批入参:" + CsJson + "\r\n");
            }
            string IsLocalHost = "0";
            //前端传入数据
            TravelApprovalMul traApprClass = new TravelApprovalMul();

            traApprClass = (TravelApprovalMul)JsonConvert.DeserializeObject(CsJson, typeof(TravelApprovalMul));
            IsLocalHost  = traApprClass.IsLocalHost == null ? "0" : traApprClass.IsLocalHost;
            string path1 = context.Request.Path.Replace("Approval/MedConfigAuditing.ashx", "medconfigauditing");
            //验证请求sign
            string sign = ToolsClass.md5(signUrl + path1 + "Romens1/DingDing2" + path1, 32);

            ToolsClass.TxtLog("生成的sign", "生成的" + "sign1:" + sign + "传入的sign" + traApprClass.Sign + "\r\n 后台字符串:" + signUrl + path1 + "Romens1/DingDing2" + path1);
            if (sign != traApprClass.Sign)
            {
                context.Response.Write("{\"errmsg\":\"认证信息Sign不存在或者不正确!\",\"errcode\":1}");
                return;
            }

            try
            {
                if (traApprClass.IsSp == "1")
                {
                    audiIdea = "同意";
                }
                else if (traApprClass.IsSp == "2")
                {
                    audiIdea = "驳回";
                }
                else
                {
                    audiIdea = "抄送";
                }

                billTypeNo = "2018121301";
                ProName    = "MedConfigAuditing";
                typeUrl    = ddUrl + "/yibao/shenpi/index.html?billno=";

                //获取当前单号的发起人和待报销人
                string fqrall = traApprClass.DDOperatorId;
                var    fqr    = SqlHelper.GetDataTable($"select OperatorGuid,REFERGUID,IsSp from MedConfig where BillNo = '{traApprClass.BillNo}'");

                if (traApprClass.DDOperatorId != traApprClass.ReferDDID)
                {
                    fqrall = fqrall + "," + traApprClass.ReferDDID;
                }

                #region 获取access_token

                url    = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                TokenClass tokenClass = new TokenClass();
                tokenClass   = (TokenClass)JsonConvert.DeserializeObject(FhJson, typeof(TokenClass));
                access_token = tokenClass.access_token;
                errcode      = tokenClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取ACCESS_TOKEN报错(DD0004)\",\"errcode\":1}");
                    return;
                }

                #endregion 获取access_token

                #region 获取用户详情

                url    = "https://oapi.dingtalk.com/user/get?access_token=" + access_token + "&userid=" + traApprClass.DDAuditingId;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                GetUserXq userXqClass = new GetUserXq();
                userXqClass = (GetUserXq)JsonConvert.DeserializeObject(FhJson, typeof(GetUserXq));
                errcode     = userXqClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取审批人详细信息报错(DD6003)\",\"errcode\":1}");
                    return;
                }
                audiName = userXqClass.name;

                #endregion 获取用户详情

                #region 获取用户guid

                Sql = $"select Guid from  operators where code = '[工号]'";

                Sql = Sql.Replace("[申请号]", traApprClass.BillNo).Replace("[工号]", userXqClass.jobnumber);

                obj = SqlHelper.GetDataTable(Sql);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"用户不存在(DD6000)\",\"errcode\":1}");
                    return;
                }

                dt           = obj as DataTable;
                AuditingGuid = dt.Rows[0]["Guid"].ToString();

                #endregion 获取用户guid

                if (SqlHelper.GetValue($"select issp from medconfig where billno ='{traApprClass.BillNo}'").ToString() != "0")
                {
                    context.Response.Write("{\"errmsg\":\"当前单据已经审核,不允许重复审核!\",\"errcode\":1}");
                    return;
                }
                XXTZ xxtzClass2 = new XXTZ();

                if (audiIdea == "同意" || audiIdea == "抄送")
                {
                    bool processIsEnd = true;

                    // processIsEnd = CommonHelper.SaveComments(traApprClass, userXqClass, nodeNumber, context, ddUrl, "医保及三方授权审批日志", out result);

                    //可以给下个人发送消息
                    if (processIsEnd)
                    //如果当前流程节点走完
                    {
                        billno = traApprClass.BillNo;

                        keyValuePairs = CommonHelper.sqlPro(SqlHelper.GetValue($"select guid from MedConfig where billno = '{billno}'").ToString(), billTypeNo, AuditingGuid, ProName);
                        if (keyValuePairs["ReturnValue"].ToString() != "0")
                        {
                            ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n调用存储过程失败:" + keyValuePairs["ReturnMsg"].ToString() + "\r\n");

                            Sql = "update MedConfig set IsSp='0'  where billno='" + traApprClass.BillNo + "'";

                            obj = SqlHelper.ExecSql(Sql);
                            if (obj == null)
                            {
                                context.Response.Write("{\"errmsg\":\"更新审批状态出错(DD6006)\",\"errcode\":1}");
                                return;
                            }

                            context.Response.Write("{\"errmsg\":\"" + keyValuePairs["ReturnMsg"].ToString() + "(DD9003)\",\"errcode\":1}");
                            return;
                        }
                        Sql = $"update MedConfig set IsSp='1',AuditingReason = '{traApprClass.AuditingIdea}'  where billno='{traApprClass.BillNo}'";

                        FhJson = ToolsClass.ApiFun("POST", ymadk + "SetSignFile", "{\"BillNo\":\"" + traApprClass.BillNo + "\"}").Replace(@"\", "/");

                        FileLocationJson jgobj = (FileLocationJson)JsonConvert.DeserializeObject(FhJson, typeof(FileLocationJson));

                        ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n操作MedConfig表:" + Sql.ToString() + "\r\n");

                        obj = SqlHelper.ExecSql(Sql);

                        urlcsjson = typeUrl + traApprClass.BillNo + $"&BillClassId={traApprClass.BillClassId}&showmenu=false";
                        urlcsjson = HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);

                        DDMsgModelLink link = new DDMsgModelLink
                        {
                            messageUrl = $"dingtalk://dingtalkclient/page/link?url={ urlcsjson}&pc_slide=true",
                            picUrl     = "@",
                            text       = $"\r\n单号为[{billno}]的单据已同意",
                            title      = $"已{audiIdea }【{ audiName }】"
                        };
                        DDMsgModelLinkMsg dDMsg = new DDMsgModelLinkMsg {
                            link = link, msgtype = "link"
                        };
                        string ddmsgModel = JsonConvert.SerializeObject(new DDMsgModel
                        {
                            agent_id    = agentId,
                            userid_list = fqrall,
                            msg         = dDMsg
                        });

                        url    = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                        FhJson = ToolsClass.ApiFun("POST", url, ddmsgModel);
                        if (isWrite == "1")
                        {
                            ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n审批发送通知Json:" + ddmsgModel + "\r\n返回json:\r\n" + FhJson);
                        }

                        xxtzClass2 = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                        errcode    = xxtzClass2.errcode;
                        if (errcode != 0)
                        {
                            context.Response.Write("{\"errmsg\":\"您的申请消息通知失败(DD6004)\",\"errcode\":1}");
                            return;
                        }

                        string sqlm       = CommonHelper.CreateRandomCode(5);
                        string nowdownurl = FileUrl + jgobj.fileurl;
                        string xzdzqd     = ddUrl + "/yibao/download/index.html";
                        Sql = $"update MedConfig set DownUrlInfo = '{sqlm},{nowdownurl}'  where billno='{traApprClass.BillNo}'";
                        SqlHelper.ExecSql(Sql);
                        DDMsgModelText dDMsgModelText = new DDMsgModelText
                        {
                            agent_id    = agentId,
                            userid_list = fqrall,
                            msg         = new DDMsgModelTextMsg
                            {
                                msgtype = "text",
                                text    = new text
                                {
                                    content = "授权文件下载地址,请点击下载:\r\n" + xzdzqd + "\r\n提取验证码: " + sqlm
                                }
                            }
                        };

                        ddmsgModel = JsonConvert.SerializeObject(dDMsgModelText);

                        url    = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                        FhJson = ToolsClass.ApiFun("POST", url, ddmsgModel);
                    }
                    else
                    {
                        ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n返回前端信息:" + result + "\r\n");
                        context.Response.Write(result);
                        return;
                    }
                    //if (IsLocalHost == "0")
                    //{
                    //    result = JsonConvert.SerializeObject(getMulParams.resultGetMulParams(ymadk, traApprClass.DDAuditingId, ddUrl, SqlHelper));
                    //    ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n返回前端信息:" + result + "\r\n");
                    //    context.Response.Write(result);
                    //}
                    //else
                    //{
                    //    result = JsonConvert.SerializeObject(new ResultGetMulParams { errcode = "0", errmsg = "", NextUrl = "" });
                    //    ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n返回前端信息:" + result + "\r\n");
                    //    context.Response.Write(result);
                    //}
                    result = JsonConvert.SerializeObject(new ResultGetMulParams {
                        errcode = "0", errmsg = "", NextUrl = ""
                    });
                    ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n返回前端信息:" + result + "\r\n");
                    context.Response.Write(result);
                    return;
                }
                if (audiIdea == "驳回")
                {
                    Sql = $"update MedConfig set IsSp='2',auditingdate=getdate(),AuditingGuid = '{AuditingGuid}',AuditingReason = '{traApprClass.AuditingIdea}'  where billno='{traApprClass.BillNo }'";

                    obj = SqlHelper.ExecSql(Sql);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"更新审批信息出错(DD6006)\",\"errcode\":1}");
                        return;
                    }
                    ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n操作MedConfig表:" + Sql);
                    //给当前节点以前的人及申请人发送通知,通知已驳回
                    urlcsjson = typeUrl + traApprClass.BillNo + $"&BillClassId={traApprClass.BillClassId}&showmenu=false";
                    urlcsjson = HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);

                    DDMsgModelLink link = new DDMsgModelLink
                    {
                        messageUrl = $"dingtalk://dingtalkclient/page/link?url={urlcsjson}&pc_slide=true",
                        picUrl     = "@",
                        text       = $"\r\n单号为【{traApprClass.BillNo}】的单据没有审核通过。\r\n 拒绝原因:{traApprClass.AuditingIdea}。",
                        title      = $"已{audiIdea }【{ audiName }】"
                    };
                    DDMsgModelLinkMsg dDMsg = new DDMsgModelLinkMsg {
                        link = link, msgtype = "link"
                    };
                    string ddmsgModel = JsonConvert.SerializeObject(new DDMsgModel
                    {
                        agent_id    = agentId,
                        userid_list = fqrall,
                        msg         = dDMsg
                    });

                    url    = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                    FhJson = ToolsClass.ApiFun("POST", url, ddmsgModel);
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n发送通知出入参Json:" + ddmsgModel);
                    }
                    xxtzClass2 = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                    errcode    = xxtzClass2.errcode;
                    if (errcode != 0)
                    {
                        context.Response.Write("{\"errmsg\":\"您的医保及三方授权消息通知失败(DD6004)\",\"errcode\":1}");
                        return;
                    }
                }
                result = JsonConvert.SerializeObject(new ResultGetMulParams {
                    errcode = "0", errmsg = "", NextUrl = ""
                });
                ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n返回前端信息:" + result + "\r\n");
                context.Response.Write(result);
                //if (IsLocalHost == "0")
                //{
                //    result = JsonConvert.SerializeObject(getMulParams.resultGetMulParams(ymadk, traApprClass.DDAuditingId, ddUrl, SqlHelper));
                //    ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n返回前端信息:" + result + "\r\n");
                //    context.Response.Write(result);
                //}
                //else
                //{
                //    result = JsonConvert.SerializeObject(new ResultGetMulParams { errcode = "0", errmsg = "", NextUrl = "" });
                //    ToolsClass.TxtLog("医保及三方授权审批日志", "\r\n返回前端信息:" + result + "\r\n");
                //    context.Response.Write(result);
                //}
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#7
0
        public ActionResult SubmitSearch(HotelIndexVM hotelsData)
        {
            DataLayer dl = new DataLayer();

            hotelsData.code = (from u in dl.locations
                               where u.city.ToLower() == hotelsData.city.ToLower()
                               select u.code).ToList <string>().FirstOrDefault();

            HotelSearch hs = new HotelSearch();

            hs.FillData(hotelsData.code, hotelsData.sdate, hotelsData.edate);
            hs.BuildURL();
            string json = hs.GetJson();

            dynamic         results = JsonConvert.DeserializeObject(json); // convert incoming data to json form
            SearchResultsVM sr      = new SearchResultsVM();

            sr.hotelSearchResultsVM = new List <HotelSearchResultsVM>();
            sr.startdDate           = hotelsData.sdate;
            sr.endDate      = hotelsData.edate;
            sr.originalLink = hs.GetSearchURL(); // to fix the api room problem
            sr.destination  = hotelsData.city + ", " + hotelsData.country;

            if (results.results.Count != 0)
            { // for the google map
                string   realCode = hs.GetLocation(hotelsData.code, "firstStage");
                string[] loc      = hs.GetLocation(realCode, "secondStage").Split(',');
                sr.latitude  = Double.Parse(loc[0]);
                sr.longitude = Double.Parse(loc[1]);
            }

            sr.nights = ToolsClass.getNumOfNights(ToolsClass.getDate(sr.startdDate), ToolsClass.getDate(sr.endDate));

            for (int i = 0; i < results.results.Count; ++i)
            {
                ImageSearch image = new ImageSearch();

                try
                {
                    image.SetHotelName(results.results[i].property_name.ToString()); // initialize object by GoogleAPI
                }
                catch (Exception)
                {
                    Thread.Sleep(1000);
                    return(SubmitSearch(hotelsData));
                }

                int newRating = -1; // initialize to -1
                try
                {
                    if (results.results[i].awards[0].rating != null)
                    {
                        newRating = results.results[i].awards[0].rating;
                    }
                }
                catch (Exception) { }
                if (newRating == -1)
                {
                    newRating = GenerateRating();
                }

                HotelSearchResultsVM temp = new HotelSearchResultsVM()
                {
                    hotelLink        = results.results[i]._links.more_rooms_at_this_hotel.href,
                    hotelName        = results.results[i].property_name,
                    hotelDescription = results.results[i].marketing_text,
                    rating           = newRating,
                    hotelPrice       = results.results[i].total_price.amount,
                    hotelImage       = image.GetImage() // image is an object
                };
                sr.hotelSearchResultsVM.Add(temp);
            }
            return(View("SearchResults", sr));
        }
示例#8
0
        public SaoPage() : base()
        {
            InitializeComponent();

            zxing = new ZXingScannerView
            {
                Options = new ZXing.Mobile.MobileBarcodeScanningOptions()
                {
                    TryHarder = true
                },
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand
            };

            zxing.OnScanResult += (result) =>
                                  Device.BeginInvokeOnMainThread(async() =>
            {
                zxing.IsAnalyzing = false;
                zxing.IsScanning  = false;

                try
                {
                    zxing.IsTorchOn = false;
                }
                catch (Exception)
                {
                }

                //await DisplayAlert("Scanned Barcode", result.Text, "OK");
                //连接地址则跳转
                if (ToolsClass.IsUrl(result.Text))
                {
                    var msg = new NavigationMessage()
                    {
                        Paremeter = result.Text
                    };
                    MessagingCenter.Send(msg, "AutoScanCode");
                    Navigation.RemovePage(this);
                    //await Navigation.PushAsync(new WebViewPage(result.Text));
                    return;
                }
                else
                {
                    await DisplayAlert("查询结果", "" + result.Text + "", "确定");
                    var msg = new NavigationMessage()
                    {
                        Paremeter = result.Text
                    };
                    MessagingCenter.Send(msg, "AutoScanCode");
                }

                await Navigation.PopAsync();
            });

            overlay = new MyZXingOverlay
            {
                TopText         = "请对准条码/二维码",
                BottomText      = "阴暗天气建议打开闪光灯",
                ShowFlashButton = true,
                ButtonText      = "开灯"
            };


            overlay.FlashButtonClicked += (sender, e) =>
            {
                try
                {
                    sender.BackgroundColor = Color.FromHex("7fadf7");
                    if (!zxing.IsTorchOn)
                    {
                        sender.Text     = "关灯";
                        CrossLampState  = true;
                        zxing.IsTorchOn = true;
                    }
                    else
                    {
                        sender.Text     = "开灯";
                        zxing.IsTorchOn = false;
                    }
                }
                catch (Exception)
                {
                }
            };
            var grid = new Grid
            {
                VerticalOptions   = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand,
            };

            grid.Children.Add(zxing);
            grid.Children.Add(overlay);
            Content = grid;
        }
示例#9
0
        private StringBuilder FhJson = new StringBuilder();//返回JSON

        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            string leaderName = ToolsClass.GetConfig("leaderName");

            //sqlServer
            da = new BankDbHelper.SqlHelper("SqlServer", connectionString);

            isWrite = ToolsClass.GetConfig("isWrite");

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }
            string signUrl = ToolsClass.GetConfig("signUrl"); context.Response.ContentType = "text/plain";

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", ",").Replace("'", "‘").Replace("\t", ":").Replace("\r", ",").Replace("\n", ",");
            DeptAndPeopleInfo dapi = new DeptAndPeopleInfo();

            dapi = (DeptAndPeopleInfo)JsonConvert.DeserializeObject(CsJson, typeof(DeptAndPeopleInfo));

            string path1 = context.Request.Path.Replace("Approval/TongXunLu.ashx", "dept");
            string path2 = context.Request.Path.Replace("Approval/TongXunLu.ashx", "role");
            string path3 = context.Request.Path.Replace("Approval/TongXunLu.ashx", "people");
            //验证请求sign
            string sign1 = ToolsClass.md5(signUrl + path1 + "Romens1/DingDing2" + path1, 32);
            string sign2 = ToolsClass.md5(signUrl + path2 + "Romens1/DingDing2" + path2, 32);
            string sign3 = ToolsClass.md5(signUrl + path3 + "Romens1/DingDing2" + path3, 32);

            ToolsClass.TxtLog("生成的sign", "生成的" + "sign1:" + sign1 + "sign2:" + sign2 + "sign3:" + sign3 + "传入的sign" + dapi.Sign + "\r\n 后台字符串:" + signUrl + path3 + "Romens1/DingDing2" + path3);
            if (sign1 != dapi.Sign && sign2 != dapi.Sign && sign3 != dapi.Sign)
            {
                context.Response.Write("{\"errmsg\":\"认证信息Sign不存在或者不正确!\",\"errcode\":1}");
                return;
            }

            if (isWrite == "1")
            {
                ToolsClass.TxtLog("修改审批架构信息日志", "\r\n入参" + CsJson + "\r\n");
            }

            #region 增加部门  Type DeptName FatherId

            if (dapi.Type == "deptadd")
            {
                try
                {
                    sql = $"select count(*) from Organization where ParentGuid ='{dapi.FatherId}'";
                    int    nowcout   = int.Parse(da.GetValue(sql).ToString()) + 1;
                    string nowcounts = dapi.FatherId + "-" + nowcout.ToString().PadLeft(2, '0');
                    sql = "";
                    sql = $"insert into Organization(Guid,ParentGuid,Code,Name,FinanceCode)  values('{nowcounts}','{dapi.FatherId}','{nowcounts}','{dapi.DeptName}','{nowcounts}') ";
                    da.ExecSql(sql);
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":0,\"Detail\":[{\"OrgCode\":\"" + nowcounts + "\",\"OrgName\":\"" + dapi.DeptName + "\"}]");

                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n增加部门信息返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"增加部门信息报错(DD1002)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 增加部门  Type DeptName FatherId

            #region 增加人员  Type DeptCode  EmployeeCode EmployeeName DDId IsLeader

            if (dapi.Type == "peopleadd")
            {
                try
                {
                    sql = "";
                    sql = $"insert into flowemployee(Guid,employeecode,employeename,orgcode,ddid,isleader)  values('{Guid.NewGuid().ToString()}','{dapi.EmployeeCode}','{dapi.EmployeeName}','{dapi.DeptCode}','{dapi.DDId}','{dapi.IsLeader}') ";
                    da.ExecSql(sql);
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");

                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n增加人员信息返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"增加人员信息报错(DD1002)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 增加人员  Type DeptCode  EmployeeCode EmployeeName DDId IsLeader

            #region 查询所有部门  Type

            if (dapi.Type == "deptSelect")
            {
                try
                {
                    sql = $"select Guid,Name,ParentGuid  from Organization where isNull(disable,'0') ='0'";
                    DataTable           depts    = da.GetDataTable(sql);
                    List <Organization> Depts    = new List <Organization>();
                    OrgModel            orgModel = new OrgModel();
                    for (int i = 0; i < depts.Rows.Count; i++)
                    {
                        Depts.Add(new Organization {
                            OrgCode    = depts.Rows[i]["Guid"].SqlDataBankToString(),
                            OrgName    = depts.Rows[i]["Name"].SqlDataBankToString(),
                            ParentGuid = depts.Rows[i]["ParentGuid"].SqlDataBankToString()
                        });
                    }
                    orgModel.errcode = "0";
                    orgModel.errmsg  = "查询成功";
                    orgModel.Depts   = Depts;
                    string deptResult = JsonConvert.SerializeObject(orgModel);
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("Query dept ", $"\r\n查询部门信息返回:{deptResult}\r\n");
                    }
                    context.Response.Write(deptResult);
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write(JsonConvert.SerializeObject(new CommonModel {
                        errcode = "1",
                        errmsg  = "查询部门信息报错"
                    }));
                    return;
                }
            }

            #endregion 查询所有部门  Type

            #region 增加角色组 Type RoleGroupName Remarks

            if (dapi.Type == "roleGroupAdd")
            {
                try
                {
                    sql = "";
                    sql = $"insert into RoleGroup(RoleGroupId,RoleGroupName,Remarks)  values('{Guid.NewGuid().ToString()}','{dapi.RoleGroupName}','{dapi.Remarks}')";
                    da.ExecSql(sql);
                    FhJson.Clear();
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n增加角色组信息返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"增加角色组信息报错(DD1002)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 增加角色组 Type RoleGroupName Remarks

            #region 增加角色 Type RoleName Remarks RoleGroupCode,RoleCode Depts  增加role 增加rolewithorg

            if (dapi.Type == "roleAdd")
            {
                try
                {
                    sql = "";
                    string roleid = Guid.NewGuid().ToString();
                    sql = $"insert into Role(RoleId,RoleName,Remarks,RoleGroupId)  values('{roleid}','{dapi.RoleName}','{dapi.Remarks}','{dapi.RoleGroupCode}') ";
                    if (dapi.IsAll == "1")
                    {
                        //批量插入RoleWithOrg表
                        StringBuilder sqlInsert = new StringBuilder();
                        DataTable     depts     = da.GetDataTable("select distinct guid from Organization where isnull(IsForbidden,0) !='1'");
                        sqlInsert.Append("insert into RoleWithOrg(RoleId,OrgCode)  values");
                        for (int i = 0; i < depts.Rows.Count; i++)
                        {
                            if (i > 0)
                            {
                                sqlInsert.Append(",");
                            }
                            sqlInsert.Append($"('{roleid}','{depts.Rows[i]["guid"]}')");
                        }
                        da.ExecSql(sqlInsert.ToString());
                        da.ExecSql(sql);
                        FhJson.Clear();
                    }
                    else
                    {
                        //批量插入RoleWithOrg表
                        StringBuilder sqlInsert = new StringBuilder();
                        sqlInsert.Append("insert into RoleWithOrg(RoleId,OrgCode)  values");
                        for (int i = 0; i < dapi.Depts.Length; i++)
                        {
                            if (i > 0)
                            {
                                sqlInsert.Append(",");
                            }
                            sqlInsert.Append($"('{roleid}','{dapi.Depts[i].DeptCode}')");
                        }
                        da.ExecSql(sqlInsert.ToString());
                        da.ExecSql(sql);
                        FhJson.Clear();
                    }
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n增加角色信息返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"增加角色信息报错(DD1002)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 增加角色 Type RoleName Remarks RoleGroupCode,RoleCode Depts  增加role 增加rolewithorg

            #region  除角色 Type RoleCode  删除role  删除rolewithorg

            if (dapi.Type == "roleRemove")
            {
                try
                {
                    sql = "";
                    sql = $"select count(Roleid) from EmpsRoleId where Roleid='{dapi.RoleCode}' and status ='1'";
                    string count = da.GetValue(sql).ToString();
                    if (count != "0")
                    {
                        FhJson.Clear();
                        FhJson.Append("{\"errmsg\":\"此角色有成员正在使用,不能删除\",\"errcode\":\"1\"}");
                        context.Response.Write(FhJson.ToString());
                        return;
                    }
                    else
                    {
                        if (da.GetValue($"select rolename from role where roleid='{dapi.RoleCode}'").ToString() == "集团财务")
                        {
                            da.ExecSql($"delete  rolewithemp  where PersonId = '{dapi.EmployeeCode}' and type= '1'");
                        }
                        if (da.GetValue($"select rolename from role where roleid='{dapi.RoleCode}'").ToString() == "出纳")
                        {
                            da.ExecSql($"delete  rolewithemp  where PersonId = '{dapi.EmployeeCode}' and type= '2'");
                        }
                        sql = "";
                        sql = $"update EmpsRoleId set status ='0' where Roleid ='{dapi.RoleCode}'";
                        da.ExecSql(sql);
                        da.ExecSql($"update rolewithorg  set status ='0' where roleid ='{dapi.RoleCode}'");
                        da.ExecSql($"update role  set status ='0' where roleid ='{dapi.RoleCode}'");
                        FhJson.Clear();
                        FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    }
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n删除角色信息返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"删除角色信息报错(DD1002):" + ex.Message + "\",\"errcode\":1}");
                    return;
                }
            }

            #endregion  除角色 Type RoleCode  删除role  删除rolewithorg

            #region 设置角色 Type EmployeeCode RoleCode  EmployeeName

            if (dapi.Type == "SetRole")
            {
                try
                {
                    sql = "";
                    sql = $"insert into EmpsRoleId(RoleId,employeecode) values('{dapi.RoleCode}','{dapi.EmployeeCode}')";

                    da.ExecSql(sql);
                    if (da.GetValue($"select rolename from role where roleid='{dapi.RoleCode}' and status ='1'").ToString() == "集团财务")
                    {
                        da.ExecSql($"insert into rolewithemp(type,PersonId,PersonName) values('1','{dapi.EmployeeCode}','{dapi.EmployeeName}')");
                    }
                    if (da.GetValue($"select rolename from role where roleid='{dapi.RoleCode}' and status ='1'").ToString() == "出纳")
                    {
                        da.ExecSql($"insert into rolewithemp(type,PersonId,PersonName) values('2','{dapi.EmployeeCode}','{dapi.EmployeeName}')");
                    }

                    FhJson.Clear();
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n设置角色返回:" + FhJson.ToString() + "\r\n");
                    }

                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"设置角色信息报错(DD1004)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 设置角色 Type EmployeeCode RoleCode  EmployeeName

            //{"Type":"RemoveEmpRole","RoleCode":"294efa53-f23f-4c42-8685-358a303c7398","EmployeeCode":"10653","Sign":"5F85B5FDED6FDD8573BD30E2408711E3"}

            #region 移除角色 Type EmployeeCode RoleCode DeptCode

            if (dapi.Type == "RemoveEmpRole")
            {
                try
                {
                    sql = "";
                    sql = $"update EmpsRoleId set status ='0' where employeecode ='{dapi.EmployeeCode}' and roleid ='{dapi.RoleCode}' and status = '1'";
                    da.ExecSql(sql);
                    if (da.GetValue($"select rolename from role where roleid='{dapi.RoleCode}'").ToString() == "集团财务")
                    {
                        da.ExecSql($"delete  rolewithemp  where PersonId = '{dapi.EmployeeCode}' and type= '1'");
                    }
                    if (da.GetValue($"select rolename from role where roleid='{dapi.RoleCode}'").ToString() == "出纳")
                    {
                        da.ExecSql($"delete  rolewithemp  where PersonId = '{dapi.EmployeeCode}' and type= '2'");
                    }

                    FhJson.Clear();
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n移除角色返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"移除角色信息报错(DD1004)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 移除角色 Type EmployeeCode RoleCode DeptCode

            #region 查询角色组 Type

            if (dapi.Type == "SelectRoleGroup")
            {
                try
                {
                    sql = "SELECT  RoleGroupId,RoleGroupName FROM RoleGroup where status ='1'";
                    obj = da.GetDataTable(sql);
                    dt  = obj as DataTable;
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":0,\"count\":").Append(dt.Rows.Count).Append(",\"data\":[");
                    if (dt.Rows.Count > 0)
                    {
                        for (int x = 0; x < dt.Rows.Count; x++)
                        {
                            if (x > 0)
                            {
                                FhJson.Append(",");
                            }
                            FhJson.Append("{");
                            for (int y = 0; y < dt.Columns.Count; y++)
                            {
                                if (y > 0)
                                {
                                    FhJson.Append(",");
                                }
                                FhJson.Append("\"").Append(dt.Columns[y].ColumnName).Append("\":\"").Append(dt.Rows[x][dt.Columns[y].ColumnName].ToString()).Append("\"");
                            }
                            FhJson.Append("}");
                        }
                    }
                    FhJson.Append("]}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n查询角色返回:" + FhJson.ToString() + "\r\n");
                    }

                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"查询角色信息报错(DD1004)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 查询角色组 Type

            #region 给角色增加人员 Type Employees RoleCode

            if (dapi.Type == "addpeopletorole")
            {
                try
                {
                    //批量插入RoleWithOrg表
                    StringBuilder sqlInsert = new StringBuilder();
                    sqlInsert.Append("insert into EmpsRoleId(RoleId,employeecode)  values");
                    for (int i = 0; i < dapi.Employees.Length; i++)
                    {
                        if (i > 0)
                        {
                            sqlInsert.Append(",");
                        }
                        if (da.GetDataTable($"select * from EmpsRoleId where RoleId='{dapi.RoleCode}' and employeecode='{dapi.Employees[i].EmployeeCode}' and status ='1'").Rows.Count > 0)
                        {
                            context.Response.Write("{\"errmsg\":\"当前角色已经存在此人员!\",\"errcode\":1}");
                            return;
                        }
                        sqlInsert.Append($"('{dapi.RoleCode}','{dapi.Employees[i].EmployeeCode}')");
                    }
                    da.ExecSql(sqlInsert.ToString());

                    if (da.GetValue($"select rolename from role where roleid='{dapi.RoleCode}'").ToString() == "集团财务")
                    {
                        sqlInsert.Append("insert into rolewithemp(Type,PersonId,PersonName)  values");
                        for (int i = 0; i < dapi.Employees.Length; i++)
                        {
                            if (i > 0)
                            {
                                sqlInsert.Append(",");
                            }
                            sqlInsert.Append($"('1','{dapi.Employees[i].EmployeeCode}','{dapi.Employees[i].EmployeeName}')");
                        }
                        da.ExecSql(sqlInsert.ToString());
                    }
                    if (da.GetValue($"select rolename from role where roleid='{dapi.RoleCode}'").ToString() == "出纳")
                    {
                        sqlInsert.Append("insert into rolewithemp(Type,PersonId,PersonName)  values");
                        for (int i = 0; i < dapi.Employees.Length; i++)
                        {
                            if (i > 0)
                            {
                                sqlInsert.Append(",");
                            }
                            sqlInsert.Append($"('2','{dapi.Employees[i].EmployeeCode}','{dapi.Employees[i].EmployeeName}')");
                        }
                        da.ExecSql(sqlInsert.ToString());
                    }

                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n给角色添加人员信息返回:" + FhJson.ToString() + "\r\n");
                    }
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"给角色添加人员信息报错" + ex.Message + "\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 给角色增加人员 Type Employees RoleCode

            #region 修改角色组 Type RoleGroupName  RoleGroupCode

            if (dapi.Type == "roleGroupEdit")
            {
                try
                {
                    sql = "";
                    sql = $"update RoleGroup set RoleGroupName='{dapi.RoleGroupName}' where RoleGroupId ='{dapi.RoleGroupCode}' and status ='1'";
                    da.ExecSql(sql);
                    FhJson.Clear();
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n修改角色组信息返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"修改角色组信息报错(DD1002)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 修改角色组 Type RoleGroupName  RoleGroupCode

            #region  除角色组  RoleGroupCode Type 下面没有角色的才可以删除

            if (dapi.Type == "roleGroupRemove")
            {
                try
                {
                    sql = "";
                    sql = $"select count(RoleGroupId) from role where RoleGroupId='{dapi.RoleGroupCode}' and status ='1'";
                    string count = da.GetValue(sql).ToString();
                    if (count != "0")
                    {
                        FhJson.Clear();
                        FhJson.Append("{\"errmsg\":\"此角色组下有正在使用角色,不能删除\",\"errcode\":\"1\"}");
                        context.Response.Write(FhJson.ToString());
                        return;
                    }
                    else
                    {
                        sql = "";
                        sql = $"update RoleGroup set status = '0'  where RoleGroupId ='{dapi.RoleGroupCode}'";
                        da.ExecSql(sql);
                        FhJson.Clear();
                        FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    }
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n删除角色组信息返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"删除角色组信息报错(DD1002):" + ex.Message + "\",\"errcode\":1}");
                    return;
                }
            }

            #endregion  除角色组  RoleGroupCode Type 下面没有角色的才可以删除

            #region 查询角色组及角色 Type 以及所有人员 以及所管理部门

            if (dapi.Type == "SelectRole")
            {
                try
                {
                    sql = "";
                    sql = "select RoleGroupId, RoleGroupName from RoleGroup where status ='1'";
                    DataTable roleGroup = da.GetDataTable(sql);
                    DataTable emps      = null;
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\",\"data\":[");
                    if (roleGroup.Rows.Count > 0)
                    {
                        for (int i = 0; i < roleGroup.Rows.Count; i++)
                        {
                            if (i > 0)
                            {
                                FhJson.Append(",");
                            }
                            FhJson.Append("{\"RoleGroupId\":\"" + roleGroup.Rows[i]["RoleGroupId"] + "\",\"RoleGroupName\":\"" + roleGroup.Rows[i]["RoleGroupName"] + "\",\"Roles\":[");
                            sql = "";
                            sql = $"SELECT  Roleid Roleid,RoleName RoleName FROM Role  where RoleGroupId = '{roleGroup.Rows[i]["RoleGroupId"]}' and status = '1'";
                            obj = da.GetDataTable(sql);
                            dt  = obj as DataTable;
                            for (int j = 0; j < dt.Rows.Count; j++)
                            {
                                if (j > 0)
                                {
                                    FhJson.Append(",");
                                }
                                FhJson.Append("{\"Roleid\":\"" + dt.Rows[j]["Roleid"] + "\",\"RoleName\":\"" + dt.Rows[j]["RoleName"] + "\",\"Employees\":[");
                                sql = "";
                                sql = $"select distinct a.employeename employeename,a.employeecode employeecode from flowemployee a join EmpsRoleId b on a.employeecode = b.EmployeeCode where b.roleid ='{dt.Rows[j]["Roleid"]}' and status = '1'";
                                //查询当前角色内的人员
                                emps = da.GetDataTable(sql);
                                for (int ems = 0; ems < emps.Rows.Count; ems++)
                                {
                                    if (ems > 0)
                                    {
                                        FhJson.Append(",");
                                    }
                                    FhJson.Append("{\"EmployeeCode\":\"" + emps.Rows[ems]["employeecode"] + "\",\"EmployeeName\":\"" + emps.Rows[ems]["employeename"] + "\"}");
                                }
                                FhJson.Append("]}");
                            }
                            FhJson.Append("]}");
                        }
                    }
                    FhJson.Append("]}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n查询角色返回:" + FhJson.ToString() + "\r\n");
                    }

                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"查询角色信息报错(DD1004)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 查询角色组及角色 Type 以及所有人员 以及所管理部门

            #region 修改角色 Type RoleName Remarks RoleGroupCode RoleCode Depts

            if (dapi.Type == "roleEdit")
            {
                try
                {
                    sql = "";
                    sql = $"update Role set RoleName ='{dapi.RoleName}',Remarks = '{dapi.Remarks}',RoleGroupId ='{dapi.RoleGroupCode}' where RoleId ='{dapi.RoleCode}'";
                    da.ExecSql(sql);
                    da.ExecSql($"update rolewithorg set status = '0' where roleid ='{dapi.RoleCode}'");
                    FhJson.Clear();
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    //批量插入RoleWithOrg表
                    StringBuilder sqlInsert = new StringBuilder();
                    sqlInsert.Append("insert into RoleWithOrg(RoleId,OrgCode)  values");
                    for (int i = 0; i < dapi.Depts.Length; i++)
                    {
                        if (i > 0)
                        {
                            sqlInsert.Append(",");
                        }
                        sqlInsert.Append($"('{dapi.RoleCode}','{dapi.Depts[i].DeptCode}')");
                    }
                    da.ExecSql(sqlInsert.ToString());
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n修改角色信息返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"修改角色信息报错(DD1002)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 修改角色 Type RoleName Remarks RoleGroupCode RoleCode Depts

            #region 增加角色与部门对应关系 DeptCode RoleId

            if (dapi.Type == "roleWithOrgAdd")
            {
                try
                {
                    sql = "";
                    sql = $"insert into RoleWithOrg(OrgCode,RoleId)  values('{dapi.DeptCode}','{dapi.RoleCode}') ";
                    da.ExecSql(sql);
                    FhJson.Clear();
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n增加角色与部门对应关系:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"增加角色与部门对应关系报错(DD1002)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 增加角色与部门对应关系 DeptCode RoleId

            #region  除角色与部门对应关系 DeptCode RoleId

            if (dapi.Type == "roleWithOrgRemove")
            {
                try
                {
                    sql = "";
                    sql = $"update RoleWithOrg set status = '0' where  OrgCode = '{dapi.DeptCode}'  and RoleId = '{dapi.RoleCode}'";
                    da.ExecSql(sql);
                    FhJson.Clear();
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n删除角色与部门对应关系:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"删除角色与部门对应关系报错(DD1002)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion  除角色与部门对应关系 DeptCode RoleId

            #region 修改角色与部门对应关系 Depts RoleId RoleGroupCode RoleName

            if (dapi.Type == "roleWithOrgEdit")
            {
                try
                {
                    sql = "";
                    sql = $"update RoleWithOrg set status = '0' where  RoleId = '{dapi.RoleCode}' and status ='1'";
                    da.ExecSql(sql);

                    sql = "";
                    sql = $"update Role set RoleName = '{dapi.RoleName}'   where  RoleId = '{dapi.RoleCode}' and status ='1'";
                    da.ExecSql(sql);
                    StringBuilder sqlInsert = new StringBuilder();
                    sqlInsert.Append("insert into RoleWithOrg(RoleId,OrgCode)  values");
                    for (int i = 0; i < dapi.Depts.Length; i++)
                    {
                        if (i > 0)
                        {
                            sqlInsert.Append(",");
                        }
                        sqlInsert.Append($"('{dapi.RoleCode}','{dapi.Depts[i].DeptCode}')");
                    }
                    da.ExecSql(sqlInsert.ToString());
                    da.ExecSql(sql);
                    FhJson.Clear();
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\"}");

                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 修改角色与部门对应关系 Depts RoleId RoleGroupCode RoleName

            #region 查询角色与部门对应关系  RoleId sign

            if (dapi.Type == "roleWithOrgSelect")
            {
                try
                {
                    sql = "";
                    sql = $"select  distinct a.OrgCode,a.RoleId ,b.RoleName,C.Name from RoleWithOrg a join role b on a.roleid = b.roleid join Organization c on a.orgcode = c.guid where a.status = '1' and a.roleid ='{dapi.RoleCode}'";
                    DataTable rwo = da.GetDataTable(sql);
                    sql = "";
                    sql = $"select distinct a.RoleId,b.RoleName from RoleWithOrg a join role b on a.roleid = b.roleid where a.roleid ='{dapi.RoleCode}' and a.status ='1' and b.status = '1'";
                    DataTable rwo2 = da.GetDataTable(sql);
                    FhJson.Clear();
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\",\"roleWithOrg\":[");
                    for (int i = 0; i < rwo2.Rows.Count; i++)
                    {
                        if (i > 0)
                        {
                            FhJson.Append(",");
                        }
                        FhJson.Append("{\"RoleId\":\"" + rwo2.Rows[i]["RoleId"] + "\",\"RoleName\":\"" + rwo2.Rows[i]["RoleName"] + "\",\"Depts\":[");
                        for (int j = 0; j < rwo.Rows.Count; j++)
                        {
                            if (j > 0)
                            {
                                FhJson.Append(",");
                            }
                            FhJson.Append("{\"DeptCode\":\"" + rwo.Rows[j]["OrgCode"] + "\",\"DeptName\":\"" + rwo.Rows[j]["Name"] + "\"}");
                        }

                        FhJson.Append("]}");
                    }
                    FhJson.Append("]}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n查询角色与部门对应关系:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 查询角色与部门对应关系  RoleId sign

            #region 查询当前人的角色  (RoleId sign)

            if (dapi.Type == "personRole")
            {
                try
                {
                    //查询当前人的工号
                    sql = $"select distinct employeecode from flowemployee where ddid ='{dapi.DDId}'";
                    dapi.EmployeeCode = da.GetValue(sql).ToString();
                    sql = $"select distinct b.RoleName from EmpsRoleId a join role b on a.roleid = b.roleid  where a.status = '1' and b.status = '1' and a.EmployeeCode ='{dapi.EmployeeCode}'";
                    DataTable rwo = da.GetDataTable(sql);
                    sql = "";
                    int isCashier   = 0;
                    int isJTLeader  = 0;
                    var dataRows    = rwo.Select("RoleName ='出纳'");
                    var isJTLeaders = leaderName.Split(',');
                    if (dataRows.Length != 0)
                    {
                        isCashier = 1;
                    }
                    for (int i = 0; i < isJTLeaders.Length; i++)
                    {
                        var dataRowsl = rwo.Select($"RoleName ='{isJTLeaders[i]}'");
                        if (dataRowsl.Length != 0)
                        {
                            isJTLeader = 1;
                            i          = isJTLeaders.Length;
                        }
                    }
                    FhJson.Clear();
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":\"0\",\"isCashier\":\"" + isCashier + "\",\"isJTLeader\":\"" + isJTLeader + "\",\"personRole\":[");
                    for (int i = 0; i < rwo.Rows.Count; i++)
                    {
                        if (i > 0)
                        {
                            FhJson.Append(",");
                        }
                        FhJson.Append("{\"RoleName\":\"" + rwo.Rows[i]["RoleName"] + "\"}");
                    }
                    FhJson.Append("]}");
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n查询当前人员的角色信息:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 查询当前人的角色  (RoleId sign)

            #region 查询所有角色以及管理部门  Type

            if (dapi.Type == "roleOrgAllSelect")
            {
                try
                {
                    sql = $"select RoleId,RoleName  from Role where status = '1'";
                    DataTable Roles = da.GetDataTable(sql);
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":0,\"Roles\":[");
                    DataTable roleorg = new DataTable();
                    for (int i = 0; i < Roles.Rows.Count; i++)
                    {
                        if (i > 0)
                        {
                            FhJson.Append(",");
                        }
                        FhJson.Append("{\"RoleId\":\"" + Roles.Rows[i]["RoleId"] + "\",\"RoleName\":\"" + Roles.Rows[i]["RoleName"] + "\",\"Depts\":[");
                        sql     = $"select a.RoleId RoleId,a.RoleName RoleName,b.OrgCode  OrgCode,c.Name OrgName from Role a join RoleWithOrg b on a.roleid = b.roleid join Organization c on b.orgcode = c.guid where a.roleid ='{Roles.Rows[i]["RoleId"]}' and  status ='1'";
                        roleorg = da.GetDataTable(sql);
                        for (int ad = 0; ad < roleorg.Rows.Count; ad++)
                        {
                            if (ad > 0)
                            {
                                FhJson.Append(",");
                            }
                            FhJson.Append("{\"OrgCode\":\"" + roleorg.Rows[ad]["OrgCode"] + "\",\"OrgName\":\"" + roleorg.Rows[ad]["OrgName"] + "\"}");
                        }
                        FhJson.Append("]}");
                    }
                    FhJson.Append("]}");

                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n查询角色返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"查询角色报错(DD1002)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 查询所有角色以及管理部门  Type

            #region 查询所有角色 Type

            if (dapi.Type == "roleAllSelect")
            {
                try
                {
                    sql = $"select RoleId,RoleName  from Role where status ='1'";
                    DataTable Roles = da.GetDataTable(sql);
                    FhJson.Append("{\"errmsg\":\"ok\",\"errcode\":0,\"Roles\":[");
                    for (int i = 0; i < Roles.Rows.Count; i++)
                    {
                        if (i > 0)
                        {
                            FhJson.Append(",");
                        }
                        FhJson.Append("{\"RoleId\":\"" + Roles.Rows[i]["RoleId"] + "\",\"RoleName\":\"" + Roles.Rows[i]["RoleName"] + "\"}");
                    }
                    FhJson.Append("]}");

                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("修改审批架构信息日志", "\r\n查询角色返回:" + FhJson.ToString() + "\r\n");
                    }
                    context.Response.Write(FhJson.ToString());
                    return;
                }
                catch (Exception ex)
                {
                    context.Response.Write("{\"errmsg\":\"查询角色报错(DD1002)\",\"errcode\":1}");
                    return;
                }
            }

            #endregion 查询所有角色 Type

            else
            {
                context.Response.Write("{\"errmsg\":\"还需要其他功能??17854238990(DD1000)\",\"errcode\":1}");
                return;
            }
        }
示例#10
0
        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }
            string ymadk = System.Configuration.ConfigurationManager.AppSettings["ymadk"].ToString() + "/";

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");

            SqlHelper = new BankDbHelper.SqlHelper("SqlServer", connectionString);
            string signUrl   = ToolsClass.GetConfig("signUrl"); context.Response.ContentType = "text/plain";
            string tableName = ToolsClass.GetConfig("tableName");

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            Object jgobj = ToolsClass.DeserializeObject(CsJson);

            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", ",").Replace("'", "‘").Replace("\t", ":").Replace("\r", ",").Replace("\n", ",");

            ToolsClass.TxtLog("差旅费明细修改日志", "\r\n入参:" + CsJson + "\r\n");
            CDChange cDChange = new CDChange();

            cDChange = (CDChange)JsonConvert.DeserializeObject(CsJson, typeof(CDChange));
            string path = context.Request.Path.Replace("Common/CLFBXDetailChange.ashx", "clfbxdetailchange");
            //验证请求sign
            string sign = ToolsClass.md5(signUrl + path + "Romens1/DingDing2" + path, 32);

            ToolsClass.TxtLog("生成的sign", "生成的" + sign + "传入的sign" + cDChange.Sign + "\r\n 后台字符串:" + signUrl + path + "Romens1/DingDing2" + path);
            if (sign != cDChange.Sign)
            {
                context.Response.Write("{\"errmsg\":\"认证信息Sign不存在或者不正确!\",\"errcode\":1}");
                return;
            }
            try
            {
                List <SqlHelperParameter> sqlHelperParameters = new List <SqlHelperParameter>();
                string    selectAllErrorDetail = $"select * from {tableName} where billno = '{cDChange.BillNo}' order by detailno";
                DataTable AllErrorDetaildt     = SqlHelper.GetDataTable(selectAllErrorDetail);
                int       detailno             = int.Parse(AllErrorDetaildt.Rows[AllErrorDetaildt.Rows.Count - 1]["DetailNo"].ToString()) + 1;
                for (int i = 0; i < AllErrorDetaildt.Rows.Count; i++)
                {
                    if (AllErrorDetaildt.Rows[i]["TranMode"].ToString() == "自驾")
                    {
                        SqlHelper.ExecSql($"update {tableName} set TranAmount = GasAmount + HSRAmount,GasAmount=0,HSRAmount=0 where guid = '{AllErrorDetaildt.Rows[i]["guid"].ToString()}'");
                    }

                    //拆除住宿费
                    if (AllErrorDetaildt.Rows[i]["AccoCount"].ToString() != "0")
                    {
                        //判断当前交通方式
                        if (AllErrorDetaildt.Rows[i]["TranMode"].ToString() == "住宿")
                        {
                            SqlHelper.ExecSql($"update {tableName} set TranCount = AccoCount,TranAmount =AccoAmount,AccoCount='0',AccoAmount='0' where guid = '{AllErrorDetaildt.Rows[i]["guid"].ToString()}'");
                        }
                        else
                        {
                            sqlHelperParameters.Clear();
                            string guid = Guid.NewGuid().ToString();
                            //新增住宿费单子
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@TripNo", Value = AllErrorDetaildt.Rows[i]["TripNo"].ToString(), Size = AllErrorDetaildt.Rows[i]["TripNo"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@BillNo", Value = AllErrorDetaildt.Rows[i]["BillNo"].ToString(), Size = AllErrorDetaildt.Rows[i]["BillNo"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@Guid", Value = guid, Size = guid.Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DepaDate", Value = AllErrorDetaildt.Rows[i]["DepaDate"].ToString(), Size = AllErrorDetaildt.Rows[i]["DepaDate"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@RetuDate", Value = AllErrorDetaildt.Rows[i]["RetuDate"].ToString(), Size = AllErrorDetaildt.Rows[i]["RetuDate"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DepaCity", Value = AllErrorDetaildt.Rows[i]["DepaCity"].ToString(), Size = AllErrorDetaildt.Rows[i]["DepaCity"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DestCity", Value = AllErrorDetaildt.Rows[i]["DestCity"].ToString(), Size = AllErrorDetaildt.Rows[i]["DestCity"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DepaCity1", Value = AllErrorDetaildt.Rows[i]["DepaCity1"].ToString(), Size = AllErrorDetaildt.Rows[i]["DepaCity1"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DestCity1", Value = AllErrorDetaildt.Rows[i]["DestCity1"].ToString(), Size = AllErrorDetaildt.Rows[i]["DestCity1"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@CustCode", Value = AllErrorDetaildt.Rows[i]["CustCode"].ToString(), Size = AllErrorDetaildt.Rows[i]["CustCode"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DetailNo", Value = detailno, Size = detailno.ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@AlloDay", Value = "0", Size = "0".Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@OffDay", Value = AllErrorDetaildt.Rows[i]["OffDay"].ToString(), Size = AllErrorDetaildt.Rows[i]["OffDay"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@AlloPric", Value = "0", Size = "0".Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@AlloAmount", Value = "0", Size = "0".Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@OtherFee", Value = "0", Size = "0".Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@TranMode", Value = "住宿", Size = "住宿".Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@TranCount", Value = AllErrorDetaildt.Rows[i]["AccoCount"].ToString(), Size = AllErrorDetaildt.Rows[i]["AccoCount"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@TranAmount", Value = AllErrorDetaildt.Rows[i]["AccoAmount"].ToString(), Size = AllErrorDetaildt.Rows[i]["AccoAmount"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@TotalAmount", Value = AllErrorDetaildt.Rows[i]["AccoAmount"].ToString(), Size = AllErrorDetaildt.Rows[i]["AccoAmount"].ToString().Length
                            });
                            var result = SqlHelper.ExecSql($"insert into {tableName}(TripNo, BillNo, Guid, DepaDate, RetuDate, DepaCity, DestCity, DepaCity1, DestCity1, CustCode, DetailNo, AlloDay, OffDay, AlloPric, AlloAmount, OtherFee, TranMode, TranCount, TranAmount, GasAmount, HsrAmount, AccoCount, AccoAmount, CityTrafCount, CityTraAmont, TotalAmount,TaxAmount) values(@TripNo, @BillNo, @Guid, @DepaDate, @RetuDate, @DepaCity, @DestCity, @DepaCity1, @DestCity1, @CustCode, @DetailNo, @AlloDay, @OffDay, @AlloPric, @AlloAmount, @OtherFee, @TranMode, @TranCount, @TranAmount, '0','0', '0','0', '0', '0', @TotalAmount,'0')", sqlHelperParameters);
                            if (!string.IsNullOrEmpty(result))
                            {
                                detailno = detailno + 1;
                                SqlHelper.ExecSql($"update {tableName} set TotalAmount = TotalAmount-AccoAmount,AccoCount='0',AccoAmount='0' where guid = '{AllErrorDetaildt.Rows[i]["guid"].ToString()}'");
                            }
                        }
                    }
                    //拆除交通费
                    if (AllErrorDetaildt.Rows[i]["CityTrafCount"].ToString() != "0")
                    {
                        //判断当前交通方式
                        if (AllErrorDetaildt.Rows[i]["TranMode"].ToString() == "市内交通")
                        {
                            SqlHelper.ExecSql($"update {tableName} set TranCount = CityTrafCount,TranAmount =CityTraAmont,CityTrafCount='0',CityTraAmont='0'  where guid = '{AllErrorDetaildt.Rows[i]["guid"].ToString()}'");
                        }
                        else
                        { //新增市内交通单子
                            string guid = Guid.NewGuid().ToString();
                            sqlHelperParameters.Clear();
                            //新增住宿费单子
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@TripNo", Value = AllErrorDetaildt.Rows[i]["TripNo"].ToString(), Size = AllErrorDetaildt.Rows[i]["TripNo"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@BillNo", Value = AllErrorDetaildt.Rows[i]["BillNo"].ToString(), Size = AllErrorDetaildt.Rows[i]["BillNo"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@Guid", Value = guid, Size = guid.Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DepaDate", Value = AllErrorDetaildt.Rows[i]["DepaDate"].ToString(), Size = AllErrorDetaildt.Rows[i]["DepaDate"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@RetuDate", Value = AllErrorDetaildt.Rows[i]["RetuDate"].ToString(), Size = AllErrorDetaildt.Rows[i]["RetuDate"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DepaCity", Value = AllErrorDetaildt.Rows[i]["DepaCity"].ToString(), Size = AllErrorDetaildt.Rows[i]["DepaCity"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DestCity", Value = AllErrorDetaildt.Rows[i]["DestCity"].ToString(), Size = AllErrorDetaildt.Rows[i]["DestCity"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DepaCity1", Value = AllErrorDetaildt.Rows[i]["DepaCity1"].ToString(), Size = AllErrorDetaildt.Rows[i]["DepaCity1"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DestCity1", Value = AllErrorDetaildt.Rows[i]["DestCity1"].ToString(), Size = AllErrorDetaildt.Rows[i]["DestCity1"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@CustCode", Value = AllErrorDetaildt.Rows[i]["CustCode"].ToString(), Size = AllErrorDetaildt.Rows[i]["CustCode"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@DetailNo", Value = detailno, Size = detailno.ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@AlloDay", Value = "0", Size = "0".Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@OffDay", Value = AllErrorDetaildt.Rows[i]["OffDay"].ToString(), Size = AllErrorDetaildt.Rows[i]["OffDay"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@AlloPric", Value = "0", Size = "0".Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@AlloAmount", Value = "0", Size = "0".Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@OtherFee", Value = "0", Size = "0".Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@TranMode", Value = "市内交通", Size = "市内交通".Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@TranCount", Value = AllErrorDetaildt.Rows[i]["CityTrafCount"].ToString(), Size = AllErrorDetaildt.Rows[i]["CityTrafCount"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@TranAmount", Value = AllErrorDetaildt.Rows[i]["CityTraAmont"].ToString(), Size = AllErrorDetaildt.Rows[i]["CityTraAmont"].ToString().Length
                            });
                            sqlHelperParameters.Add(new SqlHelperParameter {
                                Name = "@TotalAmount", Value = AllErrorDetaildt.Rows[i]["CityTraAmont"].ToString(), Size = AllErrorDetaildt.Rows[i]["CityTraAmont"].ToString().Length
                            });
                            var result = SqlHelper.ExecSql($"insert into {tableName}(TripNo, BillNo, Guid, DepaDate, RetuDate, DepaCity, DestCity, DepaCity1, DestCity1, CustCode, DetailNo, AlloDay, OffDay, AlloPric, AlloAmount, OtherFee, TranMode, TranCount, TranAmount, GasAmount, HsrAmount, AccoCount, AccoAmount, CityTrafCount, CityTraAmont, TotalAmount,TaxAmount) values(@TripNo, @BillNo, @Guid, @DepaDate, @RetuDate, @DepaCity, @DestCity, @DepaCity1, @DestCity1, @CustCode, @DetailNo, @AlloDay, @OffDay, @AlloPric, @AlloAmount, @OtherFee, @TranMode, @TranCount, @TranAmount, '0','0', '0','0', '0', '0', @TotalAmount,'0')", sqlHelperParameters);
                            if (!string.IsNullOrEmpty(result))
                            {
                                detailno = detailno + 1;
                                SqlHelper.ExecSql($"update {tableName} set TotalAmount = TotalAmount-CityTraAmont,CityTrafCount='0',CityTraAmont='0' where guid = '{AllErrorDetaildt.Rows[i]["guid"].ToString()}'");
                            }
                        }
                    }
                }
                context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#11
0
        public SaoPage() : base()
        {
            //try
            //{

            zxing = new ZXingScannerView
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand
            };

            zxing.OnScanResult += (result) =>
                                  Device.BeginInvokeOnMainThread(async() =>
            {
                zxing.IsAnalyzing = false;
                zxing.IsScanning  = false;
                try
                {
                    zxing.IsTorchOn = false;
                }
                catch (Exception)
                {
                }
                if (ToolsClass.IsUrl(result.Text))
                {
                    //Navigation.RemovePage(this);
                    await Navigation.PushAsync(new WebViewPage(result.Text));
                    return;
                }
                else
                {
                    await DisplayAlert("二维码的值为:", result.Text, "确定");
                }
                // Show an alert


                // Navigate away
                await Navigation.PopAsync();
            });

            overlay = new MyZXingOverlay
            {
                TopText         = "请对准二维码",
                BottomText      = "阴暗天气建议打开闪光灯",
                ShowFlashButton = true,
                ButtonText      = "开灯"
            };
            overlay.FlashButtonClicked += (sender, e) =>
            {
                try
                {
                    if (!zxing.IsTorchOn)
                    {
                        sender.Text = "关灯";
                        //CrossLampState = true;
                        zxing.IsTorchOn = true;
                    }
                    else
                    {
                        sender.Text     = "开灯";
                        zxing.IsTorchOn = false;
                    }
                }
                catch (Exception)
                {
                }
            };
            var grid = new Grid
            {
                VerticalOptions   = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand,
            };

            grid.Children.Add(zxing);
            grid.Children.Add(overlay);
            Content = grid;
        }
示例#12
0
        string ddUrl = "";                                            //钉钉前端地址

        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            //sqlServer
            da = new DbHelper.SqlHelper("SqlServer", connectionString);

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", "");
            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            AppWyy    = ToolsClass.GetConfig("AppWyy");
            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");


            if (isWrite == "1")
            {
                ToolsClass.TxtLog("DDLog", "\r\nSendMsg=>入参:" + CsJson + "\r\n");
            }

            //前端传入数据
            TravelApproval traApprClass = new TravelApproval();

            traApprClass = (TravelApproval)JsonConvert.DeserializeObject(CsJson, typeof(TravelApproval));
            try
            {
                #region 设置消息跳转链接地址
                if (traApprClass.FeeType == "01")
                {
                    //市内交通费;
                    typeName = "交通费";
                    typeUrl  = ddUrl + "/jtfui/shenpi/index.html?billno=";
                }
                else if (traApprClass.FeeType == "02")
                {
                    //通讯费
                    typeName = "通讯费";
                    typeUrl  = ddUrl + "/txfui/shenpi/index.html?billno=";
                }
                else if (traApprClass.FeeType == "03")
                {
                    //车辆费
                    typeName = "车辆费";
                    typeUrl  = ddUrl + "/clui/shenpi/index.html?billno=";
                }
                else if (traApprClass.FeeType == "04")
                {
                    //房租费
                    typeName = "房租费";
                    typeUrl  = ddUrl + "/fzfui/shenpi/index.html?billno=";
                }
                else if (traApprClass.FeeType == "05")
                {
                    //水费
                    typeName = "水费";
                    typeUrl  = ddUrl + "/sfui/shenpi/index.html?billno=";
                }
                else if (traApprClass.FeeType == "06")
                {
                    //电费
                    typeName = "电费";
                    typeUrl  = ddUrl + "/dfui/shenpi/index.html?billno=";
                }
                else if (traApprClass.FeeType == "11")
                {
                    //出差
                    typeName = "出差";
                    typeUrl  = ddUrl + "/shenpi/index.html?billno=";
                }
                else if (traApprClass.FeeType == "12")
                {
                    //差旅费
                    typeName = "差旅费";
                    typeUrl  = ddUrl + "/clfui/shenpi/index.html?billno=";
                }
                else if (traApprClass.FeeType == "00")
                {
                    //招待费
                    typeName = "招待费";
                    typeUrl  = ddUrl + "/zdfui/shenpi/index.html?billno=";
                }
                else
                {
                    context.Response.Write("{\"errmsg\":\"提交的申请类型不存在(DD9001)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 获取access_token
                url    = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                TokenClass tokenClass = new TokenClass();
                tokenClass   = (TokenClass)JsonConvert.DeserializeObject(FhJson, typeof(TokenClass));
                access_token = tokenClass.access_token;
                errcode      = tokenClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取ACCESS_TOKEN报错(DD0004)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 获取通知信息字段
                //出差
                if (traApprClass.FeeType == "11")
                {
                    Sql = "select a.TravelReason,convert(varchar(20),min(b.StartDate),23) StartDate,convert(varchar(20),max(EndDate),23) EndDate from  TravelReq a left join TravelReqDetail b on a.billno=b.billno where a.billno='" + traApprClass.BillNo + "' group by a.billno,a.TravelReason";
                }
                //差旅费报销申请
                else if (traApprClass.FeeType == "12")
                {
                    Sql = "select top 1 A.DepaCity1 DepaCity,A.DestCity1 DestCity,b.TranAmount,convert(varchar(20),c.BillDate,23) BillDate from ExpeTravDetail A left join (select billno,sum(TotalAmount) TranAmount from  ExpeTravDetail group by billno) b on a.billno=b.billno left join ExpeTrav c on a.BillNo=c.BillNo where a.BillNo = '" + traApprClass.BillNo + "' order by a.depadate";
                }
                //招待费
                else if (traApprClass.FeeType == "00")
                {
                    Sql = "select FeeAmount,BillCount,convert(varchar(20),ReferDate,23) BillDate,Notes from  EXPEENTEMENT where billno='" + traApprClass.BillNo + "'";
                }
                //其他费用
                else
                {
                    Sql = "select FeeAmount,BillCount,convert(varchar(20),ReferDate,23) BillDate,Notes from  EXPEOTHER where billno='" + traApprClass.BillNo + "'";
                }

                obj = da.GetDataTable(Sql);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"用户不存在(DD9002)\",\"errcode\":1}");
                    return;
                }
                dt = obj as DataTable;
                if (dt.Rows.Count == 0)
                {
                    context.Response.Write("{\"errmsg\":\"申请信息不存在(DD9003)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 发送工作通知消息
                //出差
                if (traApprClass.FeeType == "11")
                {
                    CsJson = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + traApprClass.CopyPerson + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + typeUrl + traApprClass.BillNo + "\",\"picUrl\":\"@\",\"title\":\"" + traApprClass.OperatorName + "的【" + typeName + "】申请\",\"text\":\"出发日期: " + dt.Rows[0]["StartDate"].ToString() + "\r\n返程日期: " + dt.Rows[0]["EndDate"].ToString() + "\r\n事由: " + dt.Rows[0]["TravelReason"].ToString() + "\"}}}";
                }
                //差旅费报销申请
                else if (traApprClass.FeeType == "12")
                {
                    CsJson = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + traApprClass.CopyPerson + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + typeUrl + traApprClass.BillNo + "\",\"picUrl\":\"@\",\"title\":\"" + traApprClass.OperatorName + "的【" + typeName + "】报销申请\",\"text\":\"金额: " + dt.Rows[0]["TranAmount"].ToString() + " ¥\r\n行程: " + dt.Rows[0]["DepaCity"].ToString() + " - " + dt.Rows[0]["DestCity"].ToString() + "\r\n申请日期: " + dt.Rows[0]["BillDate"].ToString() + "\"}}}";
                }
                //其他费用
                else
                {
                    CsJson = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + traApprClass.CopyPerson + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + typeUrl + traApprClass.BillNo + "\",\"picUrl\":\"@\",\"title\":\"" + traApprClass.OperatorName + "的【" + typeName + "】报销申请\",\"text\":\"金额: " + dt.Rows[0]["FeeAmount"].ToString() + "¥  发票: " + dt.Rows[0]["BillCount"].ToString() + " 张\r\n申请日期: " + dt.Rows[0]["BillDate"].ToString() + "\r\n备注: " + dt.Rows[0]["Notes"].ToString() + "\"}}}";
                }

                url    = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                FhJson = ToolsClass.ApiFun("POST", url, CsJson);
                if (isWrite == "1")
                {
                    ToolsClass.TxtLog("DDLog", "\r\nSendMsg=>CsJson:" + CsJson + "FhJson\r\n:" + FhJson);
                }

                XXTZ xxtzClass2 = new XXTZ();
                xxtzClass2 = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                errcode    = xxtzClass2.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"您的报销申请消息通知失败(DD9004)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 更新 将转发人拼接在抄送人字段后面
                //出差
                if (traApprClass.FeeType == "11")
                {
                    Sql = "update TravelReq set CopyPerson=(case when isnull(CopyPerson,' ')=' '  then '" + traApprClass.CopyPerson + "' else CopyPerson+','+'" + traApprClass.CopyPerson + "' end) where billno='" + traApprClass.BillNo + "'";
                }
                //差旅费报销申请
                else if (traApprClass.FeeType == "12")
                {
                    Sql = "update ExpeTrav set CopyPerson=(case when isnull(CopyPerson,' ')=' '  then '" + traApprClass.CopyPerson + "' else CopyPerson+','+'" + traApprClass.CopyPerson + "' end) where billno='" + traApprClass.BillNo + "'";
                }
                //招待费
                else if (traApprClass.FeeType == "00")
                {
                    Sql = "update EXPEENTEMENT set CopyPersonID=(case when isnull(CopyPersonID,' ')=' '  then '" + traApprClass.CopyPerson + "' else CopyPersonID+','+'" + traApprClass.CopyPerson + "' end) where billno='" + traApprClass.BillNo + "'";
                }
                //其他费用
                else
                {
                    Sql = "update EXPEOTHER set CopyPersonID=(case when isnull(CopyPersonID,' ')=' '  then '" + traApprClass.CopyPerson + "' else CopyPersonID+','+'" + traApprClass.CopyPerson + "' end) where billno='" + traApprClass.BillNo + "'";
                }

                obj = da.ExecSql(Sql);

                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"更新抄送人信息出错(DD9005)\",\"errcode\":1}");
                    return;
                }
                #endregion
                context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"提交的信息有误(DD9006)\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#13
0
    void ToolSelection()
    {
        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Input.GetMouseButton(0) && PlanetStatistics.toolSelection != 3)
        {
            if (Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
                // Raise Terrain
                if (PlanetStatistics.mainSelection == 0 && PlanetStatistics.toolSelection == 0)
                {
                    MeshFilter filter = hit.collider.GetComponent <MeshFilter>();
                    if (filter)
                    {
                        if (filter != ToolsClass.unappliedMesh)
                        {
                            ToolsClass.unappliedMesh = filter;
                        }

                        // Deform mesh
                        var relativePoint = filter.transform.InverseTransformPoint(hit.point);
                        ToolsClass.DeformMesh(filter.mesh, relativePoint, PlanetStatistics.brushStrength * Time.deltaTime, PlanetStatistics.brushSize);
                    }
                }
                // Lower Terrain
                if (PlanetStatistics.mainSelection == 0 && PlanetStatistics.toolSelection == 1)
                {
                    MeshFilter filter = hit.collider.GetComponent <MeshFilter>();
                    if (filter)
                    {
                        if (filter != ToolsClass.unappliedMesh)
                        {
                            ToolsClass.unappliedMesh = filter;
                        }

                        // Deform mesh
                        var relativePoint = filter.transform.InverseTransformPoint(hit.point);
                        ToolsClass.DeformMesh(filter.mesh, relativePoint, -PlanetStatistics.brushStrength * Time.deltaTime, PlanetStatistics.brushSize);
                    }
                }
                // Flatten Terrain.
                if (PlanetStatistics.mainSelection == 0 && PlanetStatistics.toolSelection == 2)
                {
                    MeshFilter filter = hit.collider.GetComponent <MeshFilter>();
                    if (filter)
                    {
                        if (filter != ToolsClass.unappliedMesh)
                        {
                            ToolsClass.unappliedMesh = filter;
                        }
                        var relativePoint = filter.transform.InverseTransformPoint(hit.point);
                        ToolsClass.FlattenMesh(hit.transform, filter.mesh, relativePoint, PlanetStatistics.brushStrength * Time.deltaTime, PlanetStatistics.altitude, PlanetStatistics.brushSize);
                    }
                }
            }             // Raycast
        } // Input mouse(0)

        if (Input.GetMouseButtonUp(0))
        {
            ApplyMeshCollider();

            if (Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
                MeshFilter filter = hit.collider.GetComponent <MeshFilter>();
                if (PlanetStatistics.mainSelection == 1)
                {
                    if (PlanetStatistics.propSelection == 0)
                    {
                        ToolsClass.PlaceGroupProp(filter.mesh, gameObject, oneProps[PlanetStatistics.propOneType] as GameObject, hit.point, PlanetStatistics.brushSize, PlanetStatistics.amountOfObjects);
                    }
                    if (PlanetStatistics.propSelection == 1)
                    {
                        ToolsClass.PlaceGroupProp(filter.mesh, gameObject, twoProps[PlanetStatistics.propTwoType] as GameObject, hit.point, PlanetStatistics.brushSize, PlanetStatistics.amountOfObjects);
                    }
                    if (PlanetStatistics.propSelection == 2)
                    {
                        ToolsClass.PlaceGroupProp(filter.mesh, gameObject, threeProps[PlanetStatistics.propThreeType] as GameObject, hit.point, PlanetStatistics.brushSize, PlanetStatistics.amountOfObjects);
                    }
                    if (PlanetStatistics.propSelection == 3)
                    {
                        ToolsClass.PlaceGroupProp(filter.mesh, gameObject, fourProps[PlanetStatistics.propFourType] as GameObject, hit.point, PlanetStatistics.brushSize, PlanetStatistics.amountOfObjects);
                    }
                }
            }
        }
    }
示例#14
0
        static void SendPersonList(object ob)
        {
            IPAddress     Addr   = IPAddress.Parse((string)((object[])ob)[0]);
            List <Person> ls     = (List <Person>)((object[])ob)[1];
            TcpClient     Sender = new TcpClient();

            for (int i = 0; i < 128; i++)
            {
                try
                {
                    Sender.Connect(Addr, 7778);
                    break;
                }
                catch { }
            }
            if (!Sender.Connected)
            {
                return;
            }

            Sender.GetStream().Write(BitConverter.GetBytes(ls.Count - 1), 0, 4);

            byte[] MainPackage = new byte[37], buf;

            string[] Strings = new string[4];
            foreach (var i in Dns.GetHostAddresses(Dns.GetHostName()))
            {
                if (i.AddressFamily == AddressFamily.InterNetwork)
                {
                    Strings = i.ToString().Split('.');
                }
            }

            FileTools.Log($"Sended ip:{Strings[0]}.{Strings[1]}.{Strings[2]}.{Strings[3]}");

            for (int i = 0; i < ls.Count - 1; i++)
            {
                MainPackage[0] = byte.Parse(Strings[0]);
                MainPackage[1] = byte.Parse(Strings[1]);
                MainPackage[2] = byte.Parse(Strings[2]);
                MainPackage[3] = byte.Parse(Strings[3]);

                MainPackage[4] = 0;

                buf = BitConverter.GetBytes((int)ls[i].ID);
                ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 5, 0, 4);

                buf = BitConverter.GetBytes(ls[i].X);
                ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 9, 0, 4);

                buf = BitConverter.GetBytes(ls[i].Y);
                ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 13, 0, 4);

                buf = BitConverter.GetBytes(ls[i].XSpeed);
                ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 17, 0, 4);

                buf = BitConverter.GetBytes(ls[i].YSpeed);
                ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 21, 0, 4);

                buf = BitConverter.GetBytes(8);
                ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 25, 0, 4);

                buf = BitConverter.GetBytes(8);
                ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 29, 0, 4);

                buf = BitConverter.GetBytes(-1);
                ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 33, 0, 4);

                Sender.GetStream().Write(MainPackage, 0, MainPackage.Length);
            }
            FileTools.Log("Person list sended");
            Sender.Close();
        }
示例#15
0
        string ddUrl = "";        //钉钉前端地址

        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            //sqlServer
            da = new DbHelper.SqlHelper("SqlServer", connectionString);

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            if (CsJson == "")
            {
                ToolsClass.TxtLog("DDLog", "\r\nTxfApproval=>入参:" + CsJson + "\r\n");
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", "");
            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            AppWyy    = ToolsClass.GetConfig("AppWyy");
            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");

            if (isWrite == "1")
            {
                ToolsClass.TxtLog("DDLog", "\r\nTxfApproval=>入参:" + CsJson + "\r\n");
            }

            TxfClass txfClass = new TxfClass();

            txfClass = (TxfClass)JsonConvert.DeserializeObject(CsJson, typeof(TxfClass));
            try
            {
                #region 获取access_token
                url    = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                TokenClass tokenClass = new TokenClass();
                tokenClass   = (TokenClass)JsonConvert.DeserializeObject(FhJson, typeof(TokenClass));
                access_token = tokenClass.access_token;
                errcode      = tokenClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取ACCESS_TOKEN报错(DD0004)\",\"errcode\":1}");
                    return;
                }
                #endregion

                if (txfClass.FeeType == "01")
                {
                    //市内交通费
                    billTypeNo = "100520005015";
                    billNoPro  = "JTF";
                    ProName    = "EXPEREFER";
                    typeName   = "交通费";
                    typeUrl    = ddUrl + "/jtfui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "02")
                {
                    //通讯费
                    billTypeNo = "100520005020";
                    billNoPro  = "TXF";
                    ProName    = "EXPEREFER";
                    typeName   = "通讯费";
                    typeUrl    = ddUrl + "/txfui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "03")
                {
                    //车辆费
                    billTypeNo = "100520005025";
                    billNoPro  = "CLF";
                    ProName    = "EXPEREFER";
                    typeName   = "车辆费";
                    typeUrl    = ddUrl + "/clui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "04")
                {
                    //房租费
                    billTypeNo = "100520005030";
                    billNoPro  = "FZ";
                    ProName    = "EXPEREFER";
                    typeName   = "房租费";
                    typeUrl    = ddUrl + "/fzfui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "05")
                {
                    //水费
                    billTypeNo = "100520005035";
                    billNoPro  = "SF";
                    ProName    = "EXPEREFER";
                    typeName   = "水费";
                    typeUrl    = ddUrl + "/sfui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "06")
                {
                    //电费
                    billTypeNo = "100520005040";
                    billNoPro  = "DF";
                    ProName    = "EXPEREFER";
                    typeName   = "电费";
                    typeUrl    = ddUrl + "/dfui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "00")
                {
                    //招待费
                    billTypeNo = "100520005010";
                    billNoPro  = "ZDF";
                    ProName    = "EXPEREFER";
                    typeName   = "招待费";
                    typeUrl    = ddUrl + "/zdfui/shenpi/index.html?billno=";
                }
                else
                {
                    context.Response.Write("{\"errmsg\":\"提交的报销类型不存在(DD9001)\",\"errcode\":1}");
                    return;
                }

                #region 获取申请流水号
                Sql          = "select dbo.GetBillNo('" + billTypeNo + "','" + txfClass.ApplPers + "',getdate())";
                obj          = da.GetValue(Sql);
                billno       = obj.ToString();
                operatorGuid = txfClass.OperatorGuid;
                if (billno == "1")
                {
                    billno = billNoPro + txfClass.ApplPers + DateTime.Now.ToString("yyyyMMdd") + "0001";

                    Sql = "update BillNumber set MaxNum=1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='" + billTypeNo + "' and BillDate<>convert(varchar(20),GETDATE(),120)";
                }
                else
                {
                    Sql = "update BillNumber set MaxNum=MaxNum+1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='" + billTypeNo + "'";
                }

                obj = da.ExecSql(Sql);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"更新通信费单号出错(DD9002)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 保存信息
                sqlList.Clear();
                sqlTou.Clear();
                if (txfClass.FeeType == "00")
                {
                    sqlTou.Append("insert into EXPEENTEMENT(BillNo,BillDate,OperatorGuid,ApplPers,DDOperatorId,BillCount,FeeAmount,NoCountFee,BearOrga,AppendixUrl,PictureUrl,Notes,SelAuditingGuid,SelAuditingName,CopypersonID,CopyPersonName,CustCode) Values('")
                    .Append(billno).Append("','")
                    .Append(DateTime.Now.ToString("yyyy-MM-dd")).Append("','")
                    .Append(txfClass.OperatorGuid).Append("','")
                    .Append(txfClass.ApplPers).Append("','")
                    .Append(txfClass.DDOperatorId).Append("','")
                    .Append(txfClass.BillCount).Append("','")
                    .Append(txfClass.FeeAmount).Append("','")
                    .Append(txfClass.NoCountFee).Append("','")
                    .Append(txfClass.BearOrga).Append("','")
                    .Append(txfClass.AppendixUrl).Append("','")
                    .Append(txfClass.PictureUrl).Append("','")
                    .Append(txfClass.Notes).Append("','")
                    .Append(txfClass.SelAuditingGuid).Append("','")
                    .Append(txfClass.SelAuditingName).Append("','")
                    .Append(txfClass.CopypersonID).Append("','")
                    .Append(txfClass.CopyPersonName).Append("','")
                    .Append(txfClass.CustCode).Append("')");
                }
                else
                {
                    sqlTou.Append("insert into EXPEOTHER(BillNo,BillDate,FeeType,OperatorGuid,ApplPers,DDOperatorId,BillCount,FeeAmount,NoCountFee,BearOrga,AppendixUrl,PictureUrl,Notes,SelAuditingGuid,SelAuditingName,CopypersonID,CopyPersonName) Values('")
                    .Append(billno).Append("','")
                    .Append(DateTime.Now.ToString("yyyy-MM-dd")).Append("','")
                    .Append(txfClass.FeeType).Append("','")
                    .Append(txfClass.OperatorGuid).Append("','")
                    .Append(txfClass.ApplPers).Append("','")
                    .Append(txfClass.DDOperatorId).Append("','")
                    .Append(txfClass.BillCount).Append("','")
                    .Append(txfClass.FeeAmount).Append("','")
                    .Append(txfClass.NoCountFee).Append("','")
                    .Append(txfClass.BearOrga).Append("','")
                    .Append(txfClass.AppendixUrl).Append("','")
                    .Append(txfClass.PictureUrl).Append("','")
                    .Append(txfClass.Notes).Append("','")
                    .Append(txfClass.SelAuditingGuid).Append("','")
                    .Append(txfClass.SelAuditingName).Append("','")
                    .Append(txfClass.CopypersonID).Append("','")
                    .Append(txfClass.CopyPersonName).Append("')");
                }
                sqlList.Add(sqlTou.ToString());

                if (isWrite == "1")
                {
                    ToolsClass.TxtLog("DDLog", "\r\nTxfApproval=>insert:" + sqlTou.ToString() + "\r\n");
                }
                obj = da.ExecSql(sqlList);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"保存申请信息出错(DD6002)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 调用提交存储过程
                if (!sqlPro())
                {
                    //招待费
                    if (txfClass.FeeType == "00")
                    {
                        sqlList.Clear();
                        Sql = "delete from EXPEENTEMENT where BillNo='" + billno + "'";
                        sqlList.Add(Sql);
                    }
                    else
                    {
                        sqlList.Clear();
                        Sql = "delete from EXPEOTHER where BillNo='" + billno + "'";
                        sqlList.Add(Sql);
                    }
                    obj = da.ExecSql(sqlList);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"删除提交信息出错(DD6006)\",\"errcode\":1}");
                        return;
                    }

                    context.Response.Write("{\"errmsg\":\"" + ProResult + "(DD9003)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 发送工作通知消息
                url    = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                CsJson = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + txfClass.SelAuditingGuid + "," + txfClass.CopypersonID + "," + txfClass.DDOperatorId + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + typeUrl + "" + billno + "\",\"picUrl\":\"@\",\"title\":\"" + txfClass.OperatorName + "的【" + typeName + "】报销申请\",\"text\":\"金额: " + txfClass.FeeAmount + "¥  发票: " + txfClass.BillCount + " 张\r\n申请日期: " + DateTime.Now.ToString("yyyy-MM-dd") + "\r\n备注: " + txfClass.Notes + "\"}}}";
                FhJson = ToolsClass.ApiFun("POST", url, CsJson);

                XXTZ xxtzClass = new XXTZ();
                xxtzClass = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                errcode   = xxtzClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"您的报销申请,消息通知失败(DD9004)\",\"errcode\":1}");
                    return;
                }
                #endregion

                context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"提交的信息有误(DD0005)\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#16
0
        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }
            string signUrl = ToolsClass.GetConfig("signUrl"); context.Response.ContentType = "text/plain";
            string ymadk   = System.Configuration.ConfigurationManager.AppSettings["ymadk"].ToString() + "/";

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            //sqlServer
            da = new DbHelper.SqlHelper("SqlServer", connectionString);

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            string ddMessageId = string.Empty;

            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", ",").Replace("'", "‘").Replace("\t", ":").Replace("\r", ",").Replace("\n", ",");
            string JsonData = CsJson;

            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            AppWyy    = ToolsClass.GetConfig("AppWyy");
            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");

            if (isWrite == "1")
            {
                ToolsClass.TxtLog("交通费、通讯费、招待费等费用报销申请日志", "\r\n入参:" + CsJson + "\r\n");
            }

            TxfjtfMul txfClass = new TxfjtfMul();

            txfClass = (TxfjtfMul)JsonConvert.DeserializeObject(CsJson, typeof(TxfjtfMul));

            string path = context.Request.Path.Replace("Approval/TxfJtfZdfSQ.ashx", "zlfysqmul");
            //验证请求sign
            string sign = ToolsClass.md5(signUrl + path + "Romens1/DingDing2" + path, 32);

            ToolsClass.TxtLog("生成的sign", "生成的" + sign + "传入的sign" + txfClass.Sign + "\r\n 后台字符串:" + signUrl + path + "Romens1/DingDing2" + path);
            if (sign != txfClass.Sign)
            {
                context.Response.Write("{\"errmsg\":\"认证信息Sign不存在或者不正确!\",\"errcode\":1}");
                return;
            }

            string NodeInfo = JsonConvert.SerializeObject(txfClass.NodeInfo).Replace(",{\"AType\":\"\",\"PersonId\":\"select\",\"PersonName\":\"请选择\"}", "");

            try
            {
                #region 获取access_token

                url    = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                TokenClass tokenClass = new TokenClass();
                tokenClass   = (TokenClass)JsonConvert.DeserializeObject(FhJson, typeof(TokenClass));
                access_token = tokenClass.access_token;
                errcode      = tokenClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取ACCESS_TOKEN报错(DD0004)\",\"errcode\":1}");
                    return;
                }

                #endregion 获取access_token

                if (txfClass.FeeType == "01")
                {
                    //市内交通费
                    billTypeNo = "100520005015";
                    billNoPro  = "JTF";
                    ProName    = "EXPEREFERdd";
                    typeName   = "交通费";
                    typeUrl    = ddUrl + "/jtfui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "02")
                {
                    //通讯费
                    billTypeNo = "100520005020";
                    billNoPro  = "TXF";
                    ProName    = "EXPEREFERdd";
                    typeName   = "通讯费";
                    typeUrl    = ddUrl + "/txfui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "03")
                {
                    //车辆费
                    billTypeNo = "100520005025";
                    billNoPro  = "CLF";
                    ProName    = "EXPEREFERdd";
                    typeName   = "车辆费";
                    typeUrl    = ddUrl + "/clui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "04")
                {
                    //房租费
                    billTypeNo = "100520005030";
                    billNoPro  = "FZ";
                    ProName    = "EXPEREFERdd";
                    typeName   = "房租费";
                    typeUrl    = ddUrl + "/fzfui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "05")
                {
                    //水费
                    billTypeNo = "100520005035";
                    billNoPro  = "SF";
                    ProName    = "EXPEREFERdd";
                    typeName   = "水费";
                    typeUrl    = ddUrl + "/sfui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "06")
                {
                    //电费
                    billTypeNo = "100520005040";
                    billNoPro  = "DF";
                    ProName    = "EXPEREFERdd";
                    typeName   = "电费";
                    typeUrl    = ddUrl + "/dfui/shenpi/index.html?billno=";
                }
                else if (txfClass.FeeType == "00")
                {
                    //招待费
                    billTypeNo = "100520005010";
                    billNoPro  = "ZDF";
                    ProName    = "EXPEREFERdd";
                    typeName   = "招待费";
                    typeUrl    = ddUrl + "/zdfui/shenpi/index.html?billno=";
                }
                else
                {
                    context.Response.Write("{\"errmsg\":\"提交的报销类型不存在(DD9001)\",\"errcode\":1}");
                    return;
                }
                string fqrall  = txfClass.DDOperatorId;
                string jnumber = txfClass.ApplPers;
                string sqr     = txfClass.OperatorName;
                if (txfClass.IsInsteadApply == "1")
                {
                    fqrall  = fqrall + "," + txfClass.InsteadOperatorGuid;
                    sqr     = "【代】" + txfClass.InsteadOperatorName;
                    jnumber = da.GetValue($"select top 1 employeecode from flowemployee where ddid = '{txfClass.InsteadOperatorGuid}'").ToString();
                }
                else
                {
                    txfClass.OperatorGuid = da.GetValue($"select top 1 guid from flowemployee where ddid = '{fqrall}' and orgcode ='{txfClass.DeptCode}'").ToString();
                }

                #region 获取申请流水号

                Sql    = "select dbo.GetBillNo('" + billTypeNo + "','" + jnumber + "',getdate())";
                obj    = da.GetValue(Sql);
                billno = obj.ToString();
                if (billno == "1")
                {
                    billno = billNoPro + jnumber + DateTime.Now.ToString("yyyyMMdd") + "0001";

                    Sql = "update BillNumber set MaxNum=1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='" + billTypeNo + "' and BillDate<>convert(varchar(20),GETDATE(),120)";
                }
                else
                {
                    Sql = "update BillNumber set MaxNum=MaxNum+1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='" + billTypeNo + "'";
                }

                obj = da.ExecSql(Sql);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"更新通信费单号出错(DD9002)\",\"errcode\":1}");
                    return;
                }

                #endregion 获取申请流水号

                #region 获取用户guid

                Sql = $"select top 1 a.GUID,b.TotalAmount,b.OffDay from  operators a left join (select sum(TotalAmount) TotalAmount, sum(OffDay) OffDay from ExpetravDetail where billno = '[申请号]' group by billno) b on 1 = 1 where a.code = '[工号]'";
                Sql = Sql.Replace("[申请号]", txfClass.BillNo).Replace("[工号]", jnumber);

                obj = da.GetDataTable(Sql);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"用户不存在(DD6000)\",\"errcode\":1}");
                    return;
                }

                dt           = obj as DataTable;
                operatorGuid = dt.Rows[0]["GUID"].ToString();

                #endregion 获取用户guid

                if (txfClass.NodeInfo.Length == 0)
                {
                    //自动同意
                    //更新单据消息id与返回内容

                    #region 保存信息

                    sqlList.Clear();
                    sqlTou.Clear();
                    if (txfClass.FeeType == "00")
                    {
                        sqlTou.Append("insert into EXPEENTEMENT(BillNo,BillDate,FlowEmployeeGuid,OperatorGuid,ProcessNodeInfo,ApplPers,DDOperatorId,JsonData,BillCount,FeeAmount,DeptName,DeptCode,NoCountFee,BearOrga,AppendixUrl,PictureUrl,Notes,Urls,IsInsteadApply,InsteadOperatorGuid,CustCode) Values('")
                        .Append(billno).Append("','")
                        .Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Append("','")
                        .Append(txfClass.OperatorGuid).Append("','")
                        .Append(operatorGuid).Append("','")
                        .Append(NodeInfo).Append("','")
                        .Append(jnumber).Append("','")
                        .Append(txfClass.DDOperatorId).Append("','")
                        .Append(JsonData).Append("','")
                        .Append(txfClass.BillCount).Append("','")
                        .Append(txfClass.FeeAmount).Append("','")
                        .Append(txfClass.DeptName).Append("','")
                        .Append(txfClass.DeptCode).Append("','")
                        .Append(txfClass.NoCountFee).Append("','")
                        .Append(txfClass.BearOrga).Append("','")
                        .Append(txfClass.AppendixUrl).Append("','")
                        .Append(txfClass.PictureUrl).Append("','")
                        .Append(txfClass.Notes).Append("','")
                        .Append(JsonConvert.SerializeObject(txfClass.Urls)).Append("','")
                        .Append(txfClass.IsInsteadApply).Append("','")
                        .Append(txfClass.InsteadOperatorGuid).Append("','")
                        .Append(txfClass.CustCode).Append("')");
                    }
                    else
                    {
                        sqlTou.Append("insert into EXPEOTHER(BillNo,BillDate,FeeType,FlowEmployeeGuid,OperatorGuid,ProcessNodeInfo,ApplPers,DDOperatorId,JsonData,BillCount,FeeAmount,DeptName,DeptCode,NoCountFee,BearOrga,AppendixUrl,Urls,IsInsteadApply,InsteadOperatorGuid,PictureUrl,Notes) Values('")
                        .Append(billno).Append("','")
                        .Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Append("','")
                        .Append(txfClass.FeeType).Append("','")
                        .Append(txfClass.OperatorGuid).Append("','")
                        .Append(operatorGuid).Append("','")
                        .Append(NodeInfo).Append("','")
                        .Append(jnumber).Append("','")
                        .Append(txfClass.DDOperatorId).Append("','")
                        .Append(JsonData).Append("','")
                        .Append(txfClass.BillCount).Append("','")
                        .Append(txfClass.FeeAmount).Append("','")
                        .Append(txfClass.DeptName).Append("','")
                        .Append(txfClass.DeptCode).Append("','")
                        .Append(txfClass.NoCountFee).Append("','")
                        .Append(txfClass.BearOrga).Append("','")
                        .Append(txfClass.AppendixUrl).Append("','")
                        .Append(JsonConvert.SerializeObject(txfClass.Urls)).Append("','")
                        .Append(txfClass.IsInsteadApply).Append("','")
                        .Append(txfClass.InsteadOperatorGuid).Append("','")
                        .Append(txfClass.PictureUrl).Append("','")
                        .Append(txfClass.Notes)
                        .Append("')");
                    }
                    sqlList.Add(sqlTou.ToString());

                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("交通费、通讯费、招待费等费用报销申请日志", "\r\n操作Expeother表:" + sqlTou.ToString() + "\r\n");
                    }
                    obj = da.ExecSql(sqlList);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"保存申请信息出错(DD6002)\",\"errcode\":1}");
                        return;
                    }

                    #endregion 保存信息

                    #region 调用提交存储过程

                    keyValuePairs = CommonHelper.sqlPro(billno, billTypeNo, operatorGuid, ProName);
                    ToolsClass.TxtLog("交通费、通讯费、招待费等费用报销申请日志", "\r\n调用提交存储过程:" + JsonConvert.SerializeObject(keyValuePairs) + "\r\n");
                    if (keyValuePairs["ReturnValue"].ToString() != "0")
                    {
                        //招待费
                        if (txfClass.FeeType == "00")
                        {
                            sqlList.Clear();
                            Sql = "delete from EXPEENTEMENT where BillNo='" + billno + "'";
                            sqlList.Add(Sql);
                        }
                        else
                        {
                            sqlList.Clear();
                            Sql = "delete from EXPEOTHER where BillNo='" + billno + "'";
                            sqlList.Add(Sql);
                        }
                        obj = da.ExecSql(sqlList);
                        if (obj == null)
                        {
                            context.Response.Write("{\"errmsg\":\"删除提交信息出错(DD6006)\",\"errcode\":1}");
                            return;
                        }
                        context.Response.Write("{\"errmsg\":\"" + keyValuePairs["ReturnMsg"].ToString() + "(DD9003)\",\"errcode\":1}");
                        return;
                    }

                    #endregion 调用提交存储过程

                    if (txfClass.FeeType == "00")
                    {
                        Sql = "update EXPEENTEMENT set IsSp='1',auditingdate=getdate()  where billno='" + billno + "'";
                        ToolsClass.TxtLog("交通费、通讯费、招待费等费用报销申请日志", "\r\n操作EXPEENTEMENT表:" + Sql.ToString() + "\r\n");
                    }
                    else
                    {
                        Sql = "update EXPEOTHER set IsSp='1',auditingdate=getdate()  where billno='" + billno + "'";
                        ToolsClass.TxtLog("交通费、通讯费、招待费等费用报销申请日志", "\r\n操作EXPEOTHER表:" + Sql.ToString() + "\r\n");
                    }
                    obj = da.ExecSql(Sql);
                    Sql = "";

                    #region 发送工作通知消息

                    urlcsjson = typeUrl + "" + $"{billno}&BillClassId={txfClass.BillClassId}&showmenu=false";
                    urlcsjson = System.Web.HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);
                    url       = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                    CsJson    = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + fqrall + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + "dingtalk://dingtalkclient/page/link?url=" + urlcsjson + "&pc_slide=true\",\"picUrl\":\"@\",\"title\":\"" + sqr + "的【" + typeName + "】报销申请\",\"text\":\"金额: " + txfClass.FeeAmount + "¥  发票: " + txfClass.BillCount + " 张\r\n申请日期: " + DateTime.Now.ToString("yyyy-MM-dd") + "\r\n备注: " + txfClass.Notes + "\"}}}";
                    FhJson    = ToolsClass.ApiFun("POST", url, CsJson);
                    var xxtzClass2 = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                    ddMessageId = xxtzClass2.task_id.ToString();

                    #endregion 发送工作通知消息

                    context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                    return;
                }

                //获取第一级流程的人员信息
                NodeInfoDetailPerson[] NodeInfodetailPeople = txfClass.NodeInfo[0].NodeInfoDetails[0].Persons;
                //从入参中得到审批人及抄送人的信息
                //指定人员的id列表
                StringBuilder piddept = new StringBuilder();
                string        sql     = "";

                for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                {
                    if (i > 0)
                    {
                        piddept.Append(",");
                    }

                    //判断传空
                    if (NodeInfodetailPeople[i].PersonId != "select" && NodeInfodetailPeople[i].PersonId != "")
                    {
                        sql = $"select distinct DDId from FlowEmployee where EmployeeCode ='{NodeInfodetailPeople[i].PersonId}'";
                        piddept.Append(da.GetValue(sql).ToString());
                    }
                }

                #region 保存信息

                sqlList.Clear();
                sqlTou.Clear();
                if (txfClass.FeeType == "00")
                {
                    sqlTou.Append("insert into EXPEENTEMENT(BillNo,BillDate,FlowEmployeeGuid,OperatorGuid,ProcessNodeInfo,ApplPers,DDOperatorId,JsonData,BillCount,FeeAmount,DeptName,DeptCode,NoCountFee,BearOrga,AppendixUrl,PictureUrl,Notes,Urls,IsInsteadApply,InsteadOperatorGuid,CustCode) Values('")
                    .Append(billno).Append("','")
                    .Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Append("','")
                    .Append(txfClass.OperatorGuid).Append("','")
                    .Append(operatorGuid).Append("','")
                    .Append(NodeInfo).Append("','")
                    .Append(jnumber).Append("','")
                    .Append(txfClass.DDOperatorId).Append("','")
                    .Append(JsonData).Append("','")
                    .Append(txfClass.BillCount).Append("','")
                    .Append(txfClass.FeeAmount).Append("','")
                    .Append(txfClass.DeptName).Append("','")
                    .Append(txfClass.DeptCode).Append("','")
                    .Append(txfClass.NoCountFee).Append("','")
                    .Append(txfClass.BearOrga).Append("','")
                    .Append(txfClass.AppendixUrl).Append("','")
                    .Append(txfClass.PictureUrl).Append("','")
                    .Append(txfClass.Notes).Append("','")
                    .Append(JsonConvert.SerializeObject(txfClass.Urls)).Append("','")
                    .Append(txfClass.IsInsteadApply).Append("','")
                    .Append(txfClass.InsteadOperatorGuid).Append("','")
                    .Append(txfClass.CustCode).Append("')");
                }
                else
                {
                    sqlTou.Append("insert into EXPEOTHER(BillNo,BillDate,FeeType,FlowEmployeeGuid,OperatorGuid,JsonData,ProcessNodeInfo,ApplPers,DDOperatorId,BillCount,FeeAmount,DeptName,DeptCode,NoCountFee,BearOrga,AppendixUrl,Urls,IsInsteadApply,InsteadOperatorGuid,PictureUrl,Notes) Values('")
                    .Append(billno).Append("','")
                    .Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Append("','")
                    .Append(txfClass.FeeType).Append("','")
                    .Append(txfClass.OperatorGuid).Append("','")
                    .Append(operatorGuid).Append("','")
                    .Append(JsonData).Append("','")
                    .Append(NodeInfo).Append("','")
                    .Append(jnumber).Append("','")
                    .Append(txfClass.DDOperatorId).Append("','")
                    .Append(txfClass.BillCount).Append("','")
                    .Append(txfClass.FeeAmount).Append("','")
                    .Append(txfClass.DeptName).Append("','")
                    .Append(txfClass.DeptCode).Append("','")
                    .Append(txfClass.NoCountFee).Append("','")
                    .Append(txfClass.BearOrga).Append("','")
                    .Append(txfClass.AppendixUrl).Append("','")
                    .Append(JsonConvert.SerializeObject(txfClass.Urls)).Append("','")
                    .Append(txfClass.IsInsteadApply).Append("','")
                    .Append(txfClass.InsteadOperatorGuid).Append("','")
                    .Append(txfClass.PictureUrl).Append("','")
                    .Append(txfClass.Notes)
                    .Append("')");
                }
                sqlList.Add(sqlTou.ToString());

                if (isWrite == "1")
                {
                    ToolsClass.TxtLog("交通费、通讯费、招待费等费用报销申请日志", "\r\n操作Expeother表:" + sqlTou.ToString() + "\r\n");
                }
                obj = da.ExecSql(sqlList);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"保存申请信息出错(DD6002)\",\"errcode\":1}");
                    return;
                }

                #endregion 保存信息

                #region 调用提交存储过程

                keyValuePairs = CommonHelper.sqlPro(billno, billTypeNo, operatorGuid, ProName);
                ToolsClass.TxtLog("交通费、通讯费、招待费等费用报销申请日志", "\r\n调用提交存储过程:" + JsonConvert.SerializeObject(keyValuePairs) + "\r\n");
                if (keyValuePairs["ReturnValue"].ToString() != "0")
                {
                    //招待费
                    if (txfClass.FeeType == "00")
                    {
                        sqlList.Clear();
                        Sql = "delete from EXPEENTEMENT where BillNo='" + billno + "'";
                        sqlList.Add(Sql);
                    }
                    else
                    {
                        sqlList.Clear();
                        Sql = "delete from EXPEOTHER where BillNo='" + billno + "'";
                        sqlList.Add(Sql);
                    }
                    obj = da.ExecSql(sqlList);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"删除提交信息出错(DD6006)\",\"errcode\":1}");
                        return;
                    }

                    context.Response.Write("{\"errmsg\":\"" + ProResult + "(DD9003)\",\"errcode\":1}");
                    return;
                }

                #endregion 调用提交存储过程

                #region 发送工作通知消息

                urlcsjson = typeUrl + "" + $"{billno}&BillClassId={txfClass.BillClassId}&showmenu=false";
                urlcsjson = System.Web.HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);
                url       = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                CsJson    = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + piddept.ToString() + "," + fqrall + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + "dingtalk://dingtalkclient/page/link?url=" + urlcsjson + "&pc_slide=true\",\"picUrl\":\"@\",\"title\":\"" + sqr + "的【" + typeName + "】报销申请\",\"text\":\"金额: " + txfClass.FeeAmount + "¥  发票: " + txfClass.BillCount + " 张\r\n申请日期: " + DateTime.Now.ToString("yyyy-MM-dd") + "\r\n备注: " + txfClass.Notes + "\"}}}";
                FhJson    = ToolsClass.ApiFun("POST", url, CsJson);

                XXTZ xxtzClass = new XXTZ();
                xxtzClass   = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                errcode     = xxtzClass.errcode;
                ddMessageId = xxtzClass.task_id.ToString();
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"您的报销申请,消息通知失败(DD9004)\",\"errcode\":1}");
                    return;
                }

                #endregion 发送工作通知消息

                //保存流程信息到comments表
                sqlList.Clear();
                for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                {
                    sqlTou.Clear();
                    if (NodeInfodetailPeople[i].PersonId != "select")
                    {
                        sqlTou.Append("insert into ApprovalComments(CommentsId,BillClassId,BillNo,ApprovalID,ApprovalName,ApprovalComments,ApprovalStatus,DDMessageId,AType,ApprovalDate,IsAndOr,IsLeader,PersonType,NodeNumber) values('").Append(Guid.NewGuid().ToString()).Append("','")
                        .Append(txfClass.BillClassId).Append("','")
                        .Append(billno).Append("','")
                        .Append(NodeInfodetailPeople[i].PersonId).Append("','")
                        .Append(NodeInfodetailPeople[i].PersonName).Append("','")//内部数据库用户GUID
                        .Append("").Append("','")
                        .Append("0").Append("','")
                        .Append(ddMessageId).Append("','")
                        .Append(NodeInfodetailPeople[i].AType).Append("','")
                        .Append(DateTime.Now).Append("','")
                        .Append(txfClass.NodeInfo[0].NodeInfoDetails[0].IsAndOr).Append("','")
                        .Append(txfClass.NodeInfo[0].NodeInfoDetails[0].IsLeader).Append("','")
                        .Append(txfClass.NodeInfo[0].NodeInfoType).Append("','")
                        .Append("2").Append("')");
                        sqlList.Add(sqlTou.ToString());
                        if (isWrite == "1")
                        {
                            ToolsClass.TxtLog("交通费、通讯费、招待费等费用报销申请日志", "\r\n操作ApprovalComments表:" + sqlTou.ToString() + "\r\n");
                        }
                    }
                }
                //执行SQL语句Insert
                obj = da.ExecSql(sqlList);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"保存申请信息节点信息出错(DD6002)\",\"errcode\":1}");
                    return;
                }

                path = context.Request.Path.Replace("Approval/TxfJtfZdfSQ.ashx", "zlfyspmul");
                //验证请求sign
                sign = ToolsClass.md5(signUrl + path + "Romens1/DingDing2" + path, 32);
                //如果下个是抄送人
                TaskFactory taskFactory = new TaskFactory();
                if (txfClass.NodeInfo[0].NodeInfoType == "3")
                {
                    //根据数据开启多个线程调用审批接口

                    taskFactory.StartNew(() =>
                    {
                        for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                        {
                            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(ymadk + "zlfyspmul");
                            webrequest.Method         = "post";
                            new Action(() =>
                            {
                                fasongqingqiu ad = new fasongqingqiu
                                {
                                    BillNo       = billno,
                                    DDAuditingId = da.GetValue($"select distinct ddid from FlowEmployee where employeecode='{NodeInfodetailPeople[i].PersonId}'").ToString(),
                                    IsSp         = "3",
                                    DDOperatorId = txfClass.InsteadOperatorGuid,
                                    OperatorName = txfClass.InsteadOperatorName,
                                    BillClassId  = txfClass.BillClassId,
                                    FeeType      = txfClass.FeeType,
                                    Sign         = sign
                                };
                                byte[] postdatabyte      = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ad));
                                webrequest.ContentLength = postdatabyte.Length;
                                Stream stream;
                                stream = webrequest.GetRequestStream();
                                stream.Write(postdatabyte, 0, postdatabyte.Length);
                                stream.Close();
                                using (var httpWebResponse = webrequest.GetResponse())
                                    using (StreamReader responseStream = new StreamReader(httpWebResponse.GetResponseStream()))
                                    {
                                        String ret = responseStream.ReadToEnd();
                                    }
                            }).Invoke();
                        }
                    });
                }

                if (txfClass.NodeInfo[0].NodeInfoType == "2")
                {
                    DataRow[] dataRows = null;

                    sql = "";
                    sql = $"select ApprovalComments,ApprovalName,ApprovalID  from ApprovalComments where BillNo ='{billno}'  and BillClassId='{txfClass.BillClassId}' and ApprovalStatus ='1'";
                    DataTable logComments = da.GetDataTable(sql);
                    //如果下个环节中的人在之前已同意,自动调用此接口同意完成审批
                    taskFactory.StartNew(() =>
                    {
                        for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                        {
                            dataRows = logComments.Select("ApprovalID ='" + NodeInfodetailPeople[i].PersonId + "'");
                            //如果之前已经同意或者是发起人
                            if (dataRows.Length != 0 || da.GetValue($"select distinct DDId from FlowEmployee where EmployeeCode ='{NodeInfodetailPeople[i].PersonId}'").ToString() == txfClass.InsteadOperatorGuid)
                            {
                                HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(ymadk + "zlfyspmul");
                                webrequest.Method         = "post";
                                new Action(() =>
                                {
                                    fasongqingqiu ad = new fasongqingqiu
                                    {
                                        BillNo       = billno,
                                        DDAuditingId = da.GetValue($"select distinct ddid from FlowEmployee where employeecode='{NodeInfodetailPeople[i].PersonId}'").ToString(),
                                        IsSp         = "1",
                                        DDOperatorId = txfClass.InsteadOperatorGuid,
                                        OperatorName = txfClass.InsteadOperatorName,
                                        BillClassId  = txfClass.BillClassId,
                                        AuditingIdea = "同意",
                                        FeeType      = txfClass.FeeType,
                                        Sign         = sign
                                    };
                                    byte[] postdatabyte      = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ad));
                                    webrequest.ContentLength = postdatabyte.Length;
                                    Stream stream;
                                    stream = webrequest.GetRequestStream();
                                    stream.Write(postdatabyte, 0, postdatabyte.Length);
                                    stream.Close();
                                    using (var httpWebResponse = webrequest.GetResponse())
                                        using (StreamReader responseStream = new StreamReader(httpWebResponse.GetResponseStream()))
                                        {
                                            String ret = responseStream.ReadToEnd();
                                        }
                                }).Invoke();
                            }
                        }
                    });
                }

                //如果是撤回重新提交的,删除之前的单子
                if (!string.IsNullOrEmpty(txfClass.OldBillNo))
                {
                    da.ExecSql($"delete EXPEOTHER where billno = '{txfClass.OldBillNo}'");
                    da.ExecSql($"delete EXPEENTEMENT where billno = '{txfClass.OldBillNo}'");
                    da.ExecSql($"delete approvalcomments where billno = '{txfClass.OldBillNo}'");
                    da.Dispose();
                    ToolsClass.TxtLog("交通费、通讯费、招待费等费用报销申请日志", "\r\n删除旧单据:" + $"delete EXPEOTHER where billno = '{txfClass.OldBillNo}'" + $"delete EXPEENTEMENT where billno = '{txfClass.OldBillNo}'" + "\r\n");
                }
                context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#17
0
        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(A0001)\",\"errcode\":1}");
                return;
            }

            try
            {
                string ymadk = System.Configuration.ConfigurationManager.AppSettings["ymadk"].ToString() + "/";
                //数据库链接
                connectionString = ToolsClass.GetConfig("DataOnLine");
                da = new BankDbHelper.SqlHelper("SqlServer", connectionString);
                //获取请求json
                using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
                {
                    CsJson = reader.ReadToEnd();
                }

                if (CsJson == "")
                {
                    context.Response.Write("{\"errmsg\":\"报文格式错误(A0002)\",\"errcode\":1}");
                    return;
                }

                //ToolsClass.TxtLog("医保","1");

                //json转Hashtable
                Object    jgobj      = ToolsClass.DeserializeObject(CsJson);
                Hashtable returnhash = jgobj as Hashtable;
                if (returnhash == null)
                {
                    context.Response.Write("{\"errmsg\":\"报文格式错误(A0002)\",\"errcode\":1}");
                    return;
                }
                //ToolsClass.TxtLog("医保", "2");
                if (returnhash.Contains("BillNo"))
                {
                    BillNo = returnhash["BillNo"].ToString();
                    if (BillNo == "")
                    {
                        context.Response.Write("{\"errmsg\":\"BillNo(单据编号)不允许为空!\",\"errcode\":1}");
                        return;
                    }
                }
                else
                {
                    if (BillNo == "")
                    {
                        context.Response.Write("{\"errmsg\":\"BillNo(单据编号)不允许为空!\",\"errcode\":1}");
                        return;
                    }
                }
                //ToolsClass.TxtLog("医保", "3");
                sbSQL.Clear();
                sbSQL.AppendLine("Select A.BillNo,Convert(varchar(10),A.BillDate,126) as BillDate,A.BillTime,A.CusCode,A.CusName,A.MedType,A.ProductType,");
                sbSQL.AppendLine("A.IsAuditing,C.Name as AuditingName,A.AuditingDate,D.Name as OperatorName,isnull(YXQFlag,'') as YXQFlag,Convert(varchar(10),isnull(YXQ,'1900-01-01'),126) as YXQ,isnull(IsWrite,0) as IsWrite");
                sbSQL.AppendLine("From MedConfig A ");
                sbSQL.AppendLine("Left Join Operators C on A.AuditingGuid=C.Guid");
                sbSQL.AppendLine("Left Join Operators D On A.OperatorGuid=D.Guid");
                sbSQL.AppendLine("Where Isnull(A.IsAuditing,0)=1 and A.BillNo='" + BillNo + "' and isnull(A.MedType,' ')<>' ' and isnull(A.CusCode,' ')<>' ' and IsNull(A.CusName,' ')<>' '");
                SelectSQL = sbSQL.ToString();

                //ToolsClass.TxtLog("医保", "4");
                obj = da.GetDataTable(SelectSQL);
                if (obj == null)
                {
                    FhJson = "{\"errmsg\":\"授权单据不存在(A0002)\",\"errcode\":1}";
                    context.Response.Write(FhJson);
                    return;
                }
                dt = obj as DataTable;
                if (dt.Rows.Count == 0)
                {
                    FhJson = "{\"errmsg\":\"本笔单据未审核,不允许生成文件(A0003)\",\"errcode\":1}";
                    context.Response.Write(FhJson);
                    return;
                }
                //ToolsClass.TxtLog("医保", "5");

                EntCode = dt.Rows[0]["CusCode"].ToString();
                EntName = dt.Rows[0]["CusName"].ToString();
                MedCode = dt.Rows[0]["MedType"].ToString();
                YXQFlag = dt.Rows[0]["YXQFlag"].ToString();
                //ToolsClass.TxtLog("医保", "6");

                sbSQL.Clear();
                sbSQL.AppendLine("select CustCode CusCode,CustName CusName,MedType , Convert(varchar(10),isnull(YXQ,'1900-01-01'),126) YXQ ,YXQFlag");
                sbSQL.AppendLine("from MedEncryption ");
                sbSQL.AppendLine("where CustCode='" + EntCode + "' order by CustCode");
                SelectSQL = sbSQL.ToString();
                //ToolsClass.TxtLog("医保", "7");
                obj = da.GetDataTable(SelectSQL);
                if (obj == null)
                {
                    FhJson = "{\"errmsg\":\"授权单据不存在(A0002)\",\"errcode\":1}";
                    context.Response.Write(FhJson);
                    return;
                }
                //ToolsClass.TxtLog("医保", "8");
                dt.Clear();
                dt = obj as DataTable;
                if (dt.Rows.Count == 0)
                {
                    FhJson = "{\"errmsg\":\"本笔单据未审核,不允许生成文件(A0004)\",\"errcode\":1}";
                    context.Response.Write(FhJson);
                    return;
                }
                //ToolsClass.TxtLog("医保", "9:CustCode:" + EntCode+",sql:"+ SelectSQL);
                EntCode = dt.Rows[0]["CusCode"].ToString();
                EntName = dt.Rows[0]["CusName"].ToString();
                MedCode = dt.Rows[0]["MedType"].ToString();
                YXQFlag = dt.Rows[0]["YXQFlag"].ToString();
                //ToolsClass.TxtLog("医保", "10");
                if (YXQFlag.Equals("False", StringComparison.InvariantCultureIgnoreCase) ||
                    YXQFlag.Equals("0", StringComparison.InvariantCultureIgnoreCase))
                {
                    YXQFlag = "0";
                }
                else if (YXQFlag.Equals("true", StringComparison.InvariantCultureIgnoreCase) ||
                         YXQFlag.Equals("1", StringComparison.InvariantCultureIgnoreCase))
                {
                    YXQFlag = "1";
                }

                YXQ = dt.Rows[0]["YXQ"].ToString();

                if (this.WriteRomensEnt(MedCode, EntCode, EntName, YXQFlag, YXQ) == false)
                {
                    context.Response.Write(FhJson);
                    return;
                }

                //更新IsWrite标志
                string UpdateSQL = "Update MedConfig Set IsWrite=1,FileUrl='" + FileName + "' Where BillNo='" + BillNo + "'";
                obj = da.ExecSql(UpdateSQL);

                if (obj == null)
                {
                    FhJson = "{\"errmsg\":\"更新已写加密标志出错!\",\"errcode\":1}";
                    context.Response.Write(FhJson);
                    return;
                }
                FhJson = "{\"fileurl\":\"" + ssssname + "\",\"errmsg\":\"写入文件成功!\",\"errcode\":0}";

                context.Response.Write(FhJson);
                return;
            }
            catch (Exception)
            {
                context.Response.Write("{\"errmsg\":\"参数BillNo不允许为空!\",\"errcode\":1}");
                return;
            }
        }
示例#18
0
        public ActionResult GetRandomHotelsByJson(List <string> loc)
        {
            HotelIndexVM hivm = new HotelIndexVM();
            DataLayer    dl   = new DataLayer();

            List <Locations> locations = GetLocations(loc);
            var rand = new Random();

            string startDate = "13.08.2018";
            string endDate   = "20.08.2018";

            hivm.nights = ToolsClass.getNumOfNights(ToolsClass.getDate(startDate), ToolsClass.getDate(endDate));

            while (hivm.hotels.Count < 4)
            {
                int         random = rand.Next(0, locations.Count);
                string      code   = locations[random].code;
                HotelSearch hs     = new HotelSearch();


                hs.FillData(code, startDate, endDate);
                hs.BuildURL();
                string json         = hs.GetJson();
                string originalLink = hs.GetSearchURL();

                dynamic results = JsonConvert.DeserializeObject(json); // convert incoming data to json form
                if (results.results.Count > 0)
                {
                    ImageSearch image = new ImageSearch();

                    try
                    {
                        image.SetHotelName(results.results[0].property_name.ToString()); // initialize object by GoogleAPI
                    }
                    catch (Exception)
                    {
                        Thread.Sleep(1000);
                        return(Index());
                    }

                    int newRating = -1; // initialize to -1
                    try
                    {
                        newRating = results.results[0].awards[0].rating;
                    }
                    catch (Exception) { newRating = GenerateRating(); }
                    if (newRating == -1)
                    {
                        newRating = GenerateRating();
                    }

                    HotelSearchResultsVM temp = new HotelSearchResultsVM()
                    {
                        originalLink     = originalLink,
                        startDate        = startDate,
                        endDate          = endDate,
                        location         = locations[random].city + ", " + locations[random].country,
                        hotelLink        = results.results[0]._links.more_rooms_at_this_hotel.href,
                        hotelName        = results.results[0].property_name,
                        hotelDescription = results.results[0].marketing_text,
                        rating           = newRating,
                        hotelPrice       = results.results[0].total_price.amount,
                        hotelImage       = image.GetImage() // image is an object
                    };
                    hivm.hotels.Add(temp);
                    locations.RemoveAt(random);
                }
            }
            return(Json(hivm, JsonRequestBehavior.AllowGet));
        }
示例#19
0
        public ResultGetMulParams resultGetMulParams(string ymadk, string spid, string ddUrl, SqlHelper sqlHelper)
        {
            try
            {
                HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(ymadk + "/SelApproval");
                webrequest.Method = "post";
                GetMulParams mulParams = new GetMulParams
                {
                    SpTypeId     = "2",
                    Value        = "",
                    WTypeId      = "1",
                    DDOperatorId = spid,
                    Sign         = "70F1A62A657B745EB80137B1ED90D56D"
                };
                byte[] postdatabyte = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(mulParams));
                webrequest.ContentLength = postdatabyte.Length;
                Stream stream;
                stream = webrequest.GetRequestStream();
                stream.Write(postdatabyte, 0, postdatabyte.Length);
                stream.Close();
                string mulresult = string.Empty;
                using (var httpWebResponse = webrequest.GetResponse())
                    using (StreamReader responseStream = new StreamReader(httpWebResponse.GetResponseStream()))
                    {
                        mulresult = responseStream.ReadToEnd();
                    }

                string       NextUrl      = "";
                GetMulResult getMulResult = (GetMulResult)JsonConvert.DeserializeObject(mulresult, typeof(GetMulResult));
                ToolsClass.TxtLog("查询下条待审批日志", "\r\n接口返回信息:" + mulresult + "\r\n");
                string billno    = "";
                string ApplyDDId = "";
                string ApplyName = "";
                //http://oatest.romens.cn:8085/clfui/shenpi/index.html?BillNo=CL10602201910240021_B&BillClassId=71DFE51C-D684-41DD-B1E5-3DF1740978DD&showmenu=false
                // http://oatest.romens.cn:8085/txfui/shenpi/index.html?BillNo=TXF10653201909120003&BillClassId=B56B70A7-ECDC-4FCF-82C1-B5A37D0B88D4&showmenu=false
                if (getMulResult.Detail != null)
                {
                    billno    = getMulResult.Detail[getMulResult.Detail.Count - 1].BillNo;
                    ApplyDDId = getMulResult.Detail[getMulResult.Detail.Count - 1].InsteadOperatorGuid;
                    ApplyName = sqlHelper.GetValue($"select top 1 employeename from flowemployee where ddid = '{ApplyDDId}'").SqlDataBankToString();
                    string BillClassId = getMulResult.Detail[getMulResult.Detail.Count - 1].BillClassId;
                    if (billno.Contains("CL"))
                    {
                        NextUrl = ddUrl + "/clfui/shenpi/index.html?BillNo=" + billno + "&BillClassId=" + BillClassId + "&showmenu=false";
                    }
                    else if (billno.Contains("JTF"))
                    {
                        NextUrl = ddUrl + "/jtfui/shenpi/index.html?BillNo=" + billno + "&BillClassId=" + BillClassId + "&showmenu=false";
                    }
                    else if (billno.Contains("TXF"))
                    {
                        NextUrl = ddUrl + "/txfui/shenpi/index.html?BillNo=" + billno + "&BillClassId=" + BillClassId + "&showmenu=false";
                    }
                    else if (billno.Contains("ZDF"))
                    {
                        NextUrl = ddUrl + "/zdfui/shenpi/index.html?BillNo=" + billno + "&BillClassId=" + BillClassId + "&showmenu=false";
                    }
                    else if (billno.Contains("QTFY"))
                    {
                        NextUrl = ddUrl + "/qtfyui/shenpi/index.html?BillNo=" + billno + "&BillClassId=" + BillClassId + "&showmenu=false";
                    }
                }
                return(new ResultGetMulParams {
                    errcode = "0", errmsg = "", NextUrl = NextUrl, BillNo = billno, ApplyDDId = ApplyDDId, ApplyName = ApplyName
                });
            }
            catch (System.Exception ex)
            {
                return(new ResultGetMulParams {
                    errcode = "1", errmsg = JsonConvert.SerializeObject(ex), NextUrl = "", BillNo = "", ApplyDDId = "", ApplyName = ""
                });
            }
        }
示例#20
0
        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            //sqlServer
            da = new DbHelper.SqlHelper("SqlServer", connectionString);

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }

            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", "");
            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            AppWyy    = ToolsClass.GetConfig("AppWyy");
            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");


            if (isWrite == "1")
            {
                ToolsClass.TxtLog("DDLog", "\r\nExpeTravReq=>入参:" + CsJson + "\r\n");
            }

            CLFBX clfbxClass = new CLFBX();

            clfbxClass       = (CLFBX)JsonConvert.DeserializeObject(CsJson, typeof(CLFBX));
            clfbxClass.Notes = Regex.Replace(clfbxClass.Notes, @"[\n\r]", "").Replace("\\", "");
            if (clfbxClass.ExpeTravDetail.Length <= 0)
            {
                context.Response.Write("{\"errmsg\":\"费用明细不允许为空,请添加费用明细(DD7001)\",\"errcode\":1}");
                return;
            }
            try
            {
                operatorGuid = clfbxClass.OperatorGuid;

                #region 获取access_token
                url    = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                TokenClass tokenClass = new TokenClass();
                tokenClass   = (TokenClass)JsonConvert.DeserializeObject(FhJson, typeof(TokenClass));
                access_token = tokenClass.access_token;
                errcode      = tokenClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取ACCESS_TOKEN报错(DD0004)\",\"errcode\":1}");
                    return;
                }
                #endregion

                if (clfbxClass.isRe == "1")//是否需要生产新的申请号
                {
                    #region 获取申请流水号
                    Sql    = "select dbo.GetBillNo('DDTrvelReq','" + clfbxClass.JobNumber + "',getdate())";
                    obj    = da.GetValue(Sql);
                    billno = obj.ToString();

                    if (billno == "1")
                    {
                        billno = "CL" + clfbxClass.JobNumber + DateTime.Now.ToString("yyyyMMdd") + "0001";

                        Sql = "update BillNumber set MaxNum=1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='DDTrvelReq' and BillDate<>convert(varchar(20),GETDATE(),120)";
                    }
                    else
                    {
                        Sql = "update BillNumber set MaxNum=MaxNum+1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='DDTrvelReq'";
                    }
                    obj = da.ExecSql(Sql);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"更新审批信息出错(DD6006)\",\"errcode\":1}");
                        return;
                    }
                    billno = billno + "_B";
                    #endregion
                }
                else
                {
                    billno = clfbxClass.BillNo;
                }

                #region 保存信息
                sqlList.Clear();
                sqlTou.Clear();
                sqlTou.Append("insert into ExpeTrav(BillNo,BillDate,Notes,OperatorGuid,Applpers,DDOperatorId,BearOrga,CostType,NoCountFee,SelAuditingGuid,CopyPerson,SelAuditingName,CopyPersonName,AppendixUrl,PictureUrl) values('")
                .Append(billno).Append("','")
                .Append(DateTime.Now.ToString("yyyy-MM-dd")).Append("','")
                .Append(clfbxClass.Notes).Append("','")
                .Append(clfbxClass.OperatorGuid).Append("','")
                .Append(clfbxClass.JobNumber).Append("','")
                .Append(clfbxClass.DDOperatorId).Append("','")
                .Append(clfbxClass.BearOrga).Append("','")
                .Append(clfbxClass.CostType).Append("','")
                .Append(clfbxClass.NoCountFee).Append("','")
                .Append(clfbxClass.SelAuditingGuid).Append("','")
                .Append(clfbxClass.CopyPerson).Append("','")
                .Append(clfbxClass.SelAuditingName).Append("','")
                .Append(clfbxClass.CopyPersonName).Append("','")
                .Append(clfbxClass.AppendixUrl).Append("','")
                .Append(clfbxClass.PictureUrl).Append("')");
                sqlList.Add(sqlTou.ToString());

                if (isWrite == "1")
                {
                    ToolsClass.TxtLog("DDLog", "\r\nExpeTravReq=>insertTou:" + sqlTou.ToString() + "\r\n");
                }

                sqlTou.Clear();
                sqlTou.Append("insert into ExpetravDetail(TripNo,BillNo,Guid,DepaDate,RetuDate,DepaCity,DestCity,DepaCity1,DestCity1,CustCode,DetailNo,AlloDay,OffDay,AlloPric,AlloAmount,OtherFee,TranMode,TranCount,TranAmount,GasAmount,HsrAmount,AccoCount,AccoAmount,CityTrafCount,CityTraAmont,TotalAmount) values('");
                for (int i = 0; i < clfbxClass.ExpeTravDetail.Length; i++)
                {
                    AccoCount     = "0"; // 住宿票张数
                    AccoAmount    = "0"; // 住宿金额
                    CityTrafCount = "0"; // 市内交通票张数
                    CityTraAmount = "0"; // 市内交通金额
                    oneSumAmount  = 0;   //第一行的和
                    SumMony       = SumMony + Double.Parse(clfbxClass.ExpeTravDetail[i].TotalAmount);
                    sqlTiPro.Clear();
                    detailNo = detailNo + 1;
                    TripNo   = 1;
                    sqlTiPro.Append(sqlTou.ToString()).Append(i + 1).Append("','")
                    .Append(billno).Append("',newid(),'")
                    .Append(clfbxClass.ExpeTravDetail[i].DepaDate).Append("','")
                    .Append(clfbxClass.ExpeTravDetail[i].RetuDate).Append("','")
                    .Append(clfbxClass.ExpeTravDetail[i].DepaCity3).Append("','")
                    .Append(clfbxClass.ExpeTravDetail[i].DestCity3).Append("','")
                    .Append(clfbxClass.ExpeTravDetail[i].DepaCity1).Append("','")
                    .Append(clfbxClass.ExpeTravDetail[i].DestCity1).Append("','")
                    .Append(clfbxClass.ExpeTravDetail[i].CustCode).Append("','");
                    for (int j = 0; j < clfbxClass.ExpeTravDetail[i].PList.Length; j++)
                    {
                        if (j == 0)
                        {
                            sqlTi.Clear();
                            sqlTi.Append(sqlTiPro.ToString()).Append(detailNo)
                            .Append("','").Append(clfbxClass.ExpeTravDetail[i].AlloDay)
                            .Append("','").Append(clfbxClass.ExpeTravDetail[i].OffDay)
                            .Append("','").Append(clfbxClass.ExpeTravDetail[i].AlloPric)
                            .Append("','").Append(clfbxClass.ExpeTravDetail[i].AlloAmount)
                            .Append("','").Append(clfbxClass.ExpeTravDetail[i].OtherFee);
                            oneSumAmount = oneSumAmount + Double.Parse(clfbxClass.ExpeTravDetail[i].AlloAmount) + Double.Parse(clfbxClass.ExpeTravDetail[i].OtherFee);
                        }

                        if (clfbxClass.ExpeTravDetail[i].PList[j].FType == "火车票" || clfbxClass.ExpeTravDetail[i].PList[j].FType == "飞机票" || clfbxClass.ExpeTravDetail[i].PList[j].FType == "汽车票" || clfbxClass.ExpeTravDetail[i].PList[j].FType == "轮船票")
                        {
                            if (TripNo == 1)
                            {
                                sqlTi.Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].FType.Replace("票", ""))
                                .Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].Count)
                                .Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].Amount)
                                .Append("','0','0");
                                oneSumAmount = oneSumAmount + Double.Parse(clfbxClass.ExpeTravDetail[i].PList[j].Amount);
                                detailNo     = detailNo + 1;
                                TripNo       = TripNo + 1;
                            }
                            else
                            {
                                sqlTi2.Clear();
                                sqlTi2.Append(sqlTiPro.ToString()).Append(detailNo).Append("','0','0','0','0','0")
                                .Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].FType.Replace("票", ""))
                                .Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].Count)
                                .Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].Amount)
                                .Append("','0','0','0','0','0','0','").Append(clfbxClass.ExpeTravDetail[i].PList[j].SumAmount)
                                .Append("')");
                                sqlList.Add(sqlTi2.ToString());
                                detailNo = detailNo + 1;
                                TripNo   = TripNo + 1;
                                ToolsClass.TxtLog("DDLog", "\r\nExpeTravReq=>insertTi:" + sqlTi2.ToString() + "\r\n");
                            }
                        }
                        else if (clfbxClass.ExpeTravDetail[i].PList[j].FType == "自驾")
                        {
                            if (TripNo == 1)
                            {
                                sqlTi.Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].FType)
                                .Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].Count)
                                .Append("','0','").Append(clfbxClass.ExpeTravDetail[i].PList[j].GasAmount)
                                .Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].HsrAmount);

                                oneSumAmount = oneSumAmount + Double.Parse(clfbxClass.ExpeTravDetail[i].PList[j].SumAmount);
                                detailNo     = detailNo + 1;
                                TripNo       = TripNo + 1;
                            }
                            else
                            {
                                sqlTi2.Clear();
                                sqlTi2.Append(sqlTiPro.ToString()).Append(detailNo).Append("','0','0','0','0','0")
                                .Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].FType)
                                .Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].Count)
                                .Append("','0','").Append(clfbxClass.ExpeTravDetail[i].PList[j].GasAmount).Append("','").Append(clfbxClass.ExpeTravDetail[i].PList[j].HsrAmount).Append("','0','0','0','0','").Append(clfbxClass.ExpeTravDetail[i].PList[j].SumAmount)
                                .Append("')");
                                sqlList.Add(sqlTi2.ToString());

                                detailNo = detailNo + 1;
                                TripNo   = TripNo + 1;
                                ToolsClass.TxtLog("DDLog", "\r\nExpeTravReq=>insertTi:" + sqlTi2.ToString() + "\r\n");
                            }
                        }
                        else if (clfbxClass.ExpeTravDetail[i].PList[j].FType == "住宿票")
                        {
                            AccoCount    = clfbxClass.ExpeTravDetail[i].PList[j].Count;
                            AccoAmount   = clfbxClass.ExpeTravDetail[i].PList[j].Amount;
                            oneSumAmount = oneSumAmount + Double.Parse(clfbxClass.ExpeTravDetail[i].PList[j].Amount);
                        }
                        else if (clfbxClass.ExpeTravDetail[i].PList[j].FType == "市内交通票")
                        {
                            CityTrafCount = clfbxClass.ExpeTravDetail[i].PList[j].Count;
                            CityTraAmount = clfbxClass.ExpeTravDetail[i].PList[j].Amount;
                            oneSumAmount  = oneSumAmount + Double.Parse(clfbxClass.ExpeTravDetail[i].PList[j].Amount);
                        }
                    }

                    sqlTi.Append("','").Append(AccoCount)
                    .Append("','").Append(AccoAmount)
                    .Append("','").Append(CityTrafCount)
                    .Append("','").Append(CityTraAmount)
                    .Append("','").Append(oneSumAmount).Append("')");

                    sqlList.Add(sqlTi.ToString());
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("DDLog", "\r\nExpeTravReq=>insert:" + sqlTi.ToString() + "\r\n");
                    }
                }
                obj = da.ExecSql(sqlList);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"保存出差申请信息出错(DD6002)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 调用提交存储过程
                if (!sqlPro())
                {
                    aList.Clear();
                    Sql = "delete from ExpeTrav where BillNo='" + billno + "'";
                    aList.Add(Sql);

                    Sql = "delete from ExpetravDetail where BillNo='" + billno + "'";
                    aList.Add(Sql);

                    Sql = "delete from CUSTIMPLLOG where SourceBill='" + billno + "'";
                    aList.Add(Sql);
                    obj = da.ExecSql(aList);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"删除提交信息出错(DD6006)\",\"errcode\":1}");
                        return;
                    }

                    context.Response.Write("{\"errmsg\":\"" + ProResult + "(DD9003)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 差旅费报销 申请 发送工作通知消息
                url    = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                CsJson = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + clfbxClass.SelAuditingGuid + "," + clfbxClass.CopyPerson + "," + clfbxClass.DDOperatorId + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + ddUrl + "/clfui/shenpi/index.html?billno=" + billno + "\",\"picUrl\":\"@\",\"title\":\"" + clfbxClass.OperatorName + "的【差旅费】报销申请\",\"text\":\"金额: " + SumMony + " ¥\r\n行程: " + clfbxClass.ExpeTravDetail[0].DepaCity1 + " - " + clfbxClass.ExpeTravDetail[0].DestCity1 + "\r\n申请日期: " + System.DateTime.Now.ToString("yyyy-MM-dd") + "\"}}}";
                FhJson = ToolsClass.ApiFun("POST", url, CsJson);

                XXTZ xxtzClass = new XXTZ();
                xxtzClass = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                errcode   = xxtzClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"您的差旅费报销申请消息通知失败(DD6004)\",\"errcode\":1}");
                    return;
                }
                #endregion

                context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"提交的信息有误(DD0005)\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#21
0
        public ActionResult SubmitIdentify(IdentifyVM ivm)
        {
            DataLayer    dl        = new DataLayer();
            List <Order> orderlist = (from x in dl.orders
                                      where x.CreditCard == ivm.credit && x.InvoiceNumber == ivm.InvoiceId && (x.Type == "Hotel" || x.Type == "Package")
                                      select x).ToList <Order>();

            if (orderlist.Count == 0)
            {
                ViewData["msg"] = "Invalid Credit Card and/or Invoice!";
                return(View("WriteReview", ivm));
            }

            if (orderlist.First().Status != 1)
            {
                ViewData["msg"] = "Order is not confirmed";
                return(View("WriteReview", ivm));
            }

            if (orderlist.First().Type == "Hotel")
            {
                List <HotelOrder> horderlist = (from x in dl.hotelOrders
                                                where x.InvoiceID == ivm.InvoiceId
                                                select x).ToList <HotelOrder>();

                int inid = horderlist.First().InvoiceID;

                if (horderlist.First().Reviewed == 1)
                {
                    ViewData["msg"] = "You Already Reviewed This Order!";
                    return(View("WriteReview", ivm));
                }

                if (!ToolsClass.iskDateValidForReview(ToolsClass.getDate(horderlist.First().EndDate)))
                {
                    ViewData["msg"] = "You Cannot Review This Order Yet! (wait untill the end)";
                    return(View("WriteReview", ivm));
                }

                TempData["hotelName"] = horderlist.First().HotelName;
                TempData["ID"]        = inid;
                TempData["email"]     = orderlist.First().CustomerEmail;
                HotelReview hr = new HotelReview();
                hr.HotelName     = horderlist.First().HotelName;
                hr.CustomerEmail = orderlist.First().CustomerEmail;

                hr.CustomerName = (from x in dl.customers
                                   where x.Email == hr.CustomerEmail
                                   select x.FullName).ToList <string>().FirstOrDefault();
                TempData["Cname"] = hr.CustomerName;
                return(View("HotelReview", hr));
            }

            else // if package
            {
                List <PackageOrder> packagelist = (from x in dl.packageOrders
                                                   where x.InvoiceID == ivm.InvoiceId
                                                   select x).ToList <PackageOrder>();

                int inid = packagelist.First().InvoiceID;

                if (packagelist.First().Reviewed == 1)
                {
                    ViewData["msg"] = "You Already Reviewed This Order!";
                    return(View("WriteReview", ivm));
                }

                if (!ToolsClass.iskDateValidForReview(ToolsClass.getDate(packagelist.First().ReturnDate)))
                {
                    ViewData["msg"] = "You Cannot Review This Order Yet! (wait untill the end)";
                    return(View("WriteReview", ivm));
                }

                TempData["hotelName"] = packagelist.First().HotelName;
                TempData["ID"]        = inid;
                TempData["email"]     = orderlist.First().CustomerEmail;
                HotelReview hr = new HotelReview();
                hr.HotelName     = packagelist.First().HotelName;
                hr.CustomerEmail = orderlist.First().CustomerEmail;

                hr.CustomerName = (from x in dl.customers
                                   where x.Email == hr.CustomerEmail
                                   select x.FullName).ToList <string>().FirstOrDefault();
                TempData["Cname"] = hr.CustomerName;
                return(View("HotelReview", hr));
            }
        }
示例#22
0
        private string ddUrl = "";                                            //钉钉前端地址

        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }
            GetMulParams getMulParams = new GetMulParams();
            string       ymadk        = System.Configuration.ConfigurationManager.AppSettings["ymadk"].ToString() + "/";

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            SqlHelper        = new BankDbHelper.SqlHelper("SqlServer", connectionString);
            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }
            string result  = string.Empty;
            string signUrl = ToolsClass.GetConfig("signUrl"); context.Response.ContentType = "text/plain";

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", ",").Replace("'", "‘").Replace("\t", ":").Replace("\r", ",").Replace("\n", ",");
            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            AppWyy    = ToolsClass.GetConfig("AppWyy");
            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");

            if (isWrite == "1")
            {
                ToolsClass.TxtLog("其他费用申请审批日志", "\r\n申请审批入参:" + CsJson + "\r\n");
            }
            string IsLocalHost = "0";
            //前端传入数据
            TravelApprovalMul traApprClass = new TravelApprovalMul();

            traApprClass = (TravelApprovalMul)JsonConvert.DeserializeObject(CsJson, typeof(TravelApprovalMul));
            IsLocalHost  = traApprClass.IsLocalHost == null ? "0" : traApprClass.IsLocalHost;
            string path1 = context.Request.Path.Replace("Approval/OtherCostSP.ashx", "othercostsp");
            //验证请求sign
            string sign = ToolsClass.md5(signUrl + path1 + "Romens1/DingDing2" + path1, 32);

            ToolsClass.TxtLog("生成的sign", "生成的" + "sign1:" + sign + "传入的sign" + traApprClass.Sign + "\r\n 后台字符串:" + signUrl + path1 + "Romens1/DingDing2" + path1);
            if (sign != traApprClass.Sign)
            {
                context.Response.Write("{\"errmsg\":\"认证信息Sign不存在或者不正确!\",\"errcode\":1}");
                return;
            }

            try
            {
                if (traApprClass.IsSp == "1")
                {
                    audiIdea = "同意";
                }
                else if (traApprClass.IsSp == "2")
                {
                    audiIdea = "驳回";
                }
                else
                {
                    audiIdea = "抄送";
                }

                billTypeNo = "100520005055";
                ProName    = "EXPEAUDITINGdd";
                typeName   = "其他费用";
                typeUrl    = ddUrl + "/qtfyui/shenpi/index.html?billno=";

                //获取当前单号的发起人和待报销人
                string fqrall = traApprClass.DDOperatorId;
                var    fqr    = SqlHelper.GetDataTable($"select DDOperatorId,InsteadOperatorGuid,IsSp from EXPEOTHER where BillNo = '{traApprClass.BillNo}'");
                if (fqr.Rows.Count == 0)
                {
                    context.Response.Write("{\"errmsg\":\"当前单据已撤回\",\"errcode\":1}");
                    return;
                }
                else if (fqr.Rows[0]["IsSp"].ToString() == "3")
                {
                    context.Response.Write("{\"errmsg\":\"当前单据已撤回\",\"errcode\":1}");
                    return;
                }
                if (fqr.Rows[0]["InsteadOperatorGuid"].ToString() != fqrall)
                {
                    fqrall = fqrall + "," + fqr.Rows[0]["InsteadOperatorGuid"].ToString();
                }

                #region 获取access_token

                url    = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                TokenClass tokenClass = new TokenClass();
                tokenClass   = (TokenClass)JsonConvert.DeserializeObject(FhJson, typeof(TokenClass));
                access_token = tokenClass.access_token;
                errcode      = tokenClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取ACCESS_TOKEN报错(DD0004)\",\"errcode\":1}");
                    return;
                }

                #endregion 获取access_token

                #region 获取用户详情

                url    = "https://oapi.dingtalk.com/user/get?access_token=" + access_token + "&userid=" + traApprClass.DDAuditingId;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                GetUserXq userXqClass = new GetUserXq();
                userXqClass = (GetUserXq)JsonConvert.DeserializeObject(FhJson, typeof(GetUserXq));
                errcode     = userXqClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取审批人详细信息报错(DD6003)\",\"errcode\":1}");
                    return;
                }
                audiName = userXqClass.name;

                #endregion 获取用户详情

                #region 获取用户guid

                Sql = $"select top 1 a.Guid,b.BillCount,b.FeeAmount from  operators a left join (select BillCount,FeeAmount from EXPEOTHER where billno = '[申请号]') b on 1 = 1 where a.code = '[工号]'";

                Sql = Sql.Replace("[申请号]", traApprClass.BillNo).Replace("[工号]", userXqClass.jobnumber);

                obj = SqlHelper.GetDataTable(Sql);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"用户不存在(DD6000)\",\"errcode\":1}");
                    return;
                }

                dt           = obj as DataTable;
                AuditingGuid = dt.Rows[0]["Guid"].ToString();

                #endregion 获取用户guid

                //判断当前是流程节点中的哪个流程
                Sql = $"select count( DISTINCT  NodeNumber) NodeNumber  from ApprovalComments where BillNo ='{traApprClass.BillNo}'";
                //得到当前流程节点的数量
                string nodeNumber = SqlHelper.GetValue(Sql).ToString();
                //得到当前流程信息
                //更新单据消息id与返回内容
                NodeInfo[] NodeInfo = null;

                NodeInfo = (NodeInfo[])JsonConvert.DeserializeObject(SqlHelper.GetValue($"select  ProcessNodeInfo from EXPEOTHER where BillNo='{traApprClass.BillNo}'").ToString(), typeof(NodeInfo[]));

                XXTZ          xxtzClass2  = new XXTZ();
                StringBuilder piddept     = new StringBuilder();
                string        sql         = "";
                DataTable     logComments = new DataTable();
                StringBuilder logcoments  = new StringBuilder();
                //判断当前人是否已经审批过
                Sql = $"select *  from  ApprovalComments where ApprovalStatus='0' and BillNo ='{traApprClass.BillNo}' and ApprovalID='{userXqClass.jobnumber}' and NodeNumber ='{int.Parse(nodeNumber) + 1}' and BillClassId='{traApprClass.BillClassId}'";
                ToolsClass.TxtLog("其他费用申请审批日志", "\r\n查询当前人的审批节点" + Sql + "\r\n");
                if (SqlHelper.GetDataTable(Sql).Rows.Count == 0)
                {
                    ToolsClass.TxtLog("其他费用申请审批日志", "\r\n返回前端信息:" + JsonConvert.SerializeObject(new PublicResult
                    {
                        errcode = "1",
                        errmsg  = "当前单据您已经审批过,请勿点击太快或者重复提交!"
                    }) + "\r\n");
                    context.Response.Write(JsonConvert.SerializeObject(new PublicResult
                    {
                        errcode = "1",
                        errmsg  = "当前单据您已经审批过,请勿点击太快或者重复提交!"
                    }));
                    return;
                }
                if (audiIdea == "同意" || audiIdea == "抄送")
                {
                    bool processIsEnd = false;

                    processIsEnd = CommonHelper.SaveComments(traApprClass, userXqClass, nodeNumber, context, ddUrl, "其他费用申请审批日志", out result);

                    //可以给下个人发送消息
                    if (processIsEnd)
                    //如果当前流程节点走完
                    {
                        //判断当前单号是否已经结束
                        sql = "";

                        sql = $"select issp from EXPEOTHER where BillNo ='{traApprClass.BillNo}'";

                        if (SqlHelper.GetValue(sql).ToString() != "0" && traApprClass.IsSp == "2")
                        {
                            if (IsLocalHost == "0")
                            {
                                result = JsonConvert.SerializeObject(getMulParams.resultGetMulParams(ymadk, traApprClass.DDAuditingId, ddUrl, SqlHelper));
                                ToolsClass.TxtLog("其他费用申请审批日志", "\r\n返回前端信息:" + result + "\r\n");
                                context.Response.Write(result);
                            }
                            else
                            {
                                result = JsonConvert.SerializeObject(new ResultGetMulParams {
                                    errcode = "0", errmsg = "", NextUrl = ""
                                });
                                ToolsClass.TxtLog("其他费用申请审批日志", "\r\n返回前端信息:" + result + "\r\n");
                                context.Response.Write(result);
                            }
                            return;
                        }
                        //判断是否是根结点,判断数量(去重)是否小于流程的长度
                        //是否是最后一个流程
                        if (int.Parse(nodeNumber) < NodeInfo.Length)
                        {
                            //获取下个节点的人员信息
                            NodeInfoDetailPerson[] NodeInfodetailPeople = NodeInfo[int.Parse(nodeNumber)].NodeInfoDetails[0].Persons;
                            for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                            {
                                if (i > 0)
                                {
                                    piddept.Append(",");
                                }

                                //判断传空
                                if (NodeInfodetailPeople[i].PersonId != "")
                                {
                                    sql = "";
                                    sql = $"select distinct DDId from FlowEmployee where EmployeeCode ='{NodeInfodetailPeople[i].PersonId}'";
                                    piddept.Append(SqlHelper.GetValue(sql).ToString());
                                }
                            }
                            //插入相应的信息到comments表中
                            sqlList.Clear();
                            for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                            {
                                sqlTou.Clear();
                                sqlTou.Append("insert into ApprovalComments(CommentsId,BillClassId,BillNo,ApprovalID,ApprovalName,ApprovalComments,ApprovalStatus,AType,ApprovalDate,IsAndOr,IsLeader,PersonType,NodeNumber) values('")
                                .Append(Guid.NewGuid().ToString()).Append("','")
                                .Append(traApprClass.BillClassId).Append("','")
                                .Append(traApprClass.BillNo).Append("','")
                                .Append(NodeInfodetailPeople[i].PersonId).Append("','")
                                .Append(NodeInfodetailPeople[i].PersonName).Append("','")//内部数据库用户GUID
                                .Append("").Append("','")
                                .Append("0").Append("','")
                                .Append(NodeInfodetailPeople[i].AType).Append("','")
                                .Append(DateTime.Now).Append("','")
                                .Append(NodeInfo[int.Parse(nodeNumber)].NodeInfoDetails[0].IsAndOr).Append("','")
                                .Append(NodeInfo[int.Parse(nodeNumber)].NodeInfoDetails[0].IsLeader).Append("','")
                                .Append(NodeInfo[int.Parse(nodeNumber)].NodeInfoType).Append("','")
                                .Append(int.Parse(nodeNumber) + 2).Append("')");
                                sqlList.Add(sqlTou.ToString());
                                if (isWrite == "1")
                                {
                                    ToolsClass.TxtLog("其他费用申请审批日志", "\r\n操作ApprovalComments表:" + sqlTou.ToString() + "\r\n");
                                }
                            }

                            //执行SQL语句Insert
                            obj = SqlHelper.ExecSql(sqlList);
                            if (obj == null)
                            {
                                context.Response.Write("{\"errmsg\":\"保存出差申请节点信息出错(DD6002)\",\"errcode\":1}");
                                return;
                            }
                            //给申请人发送审批意见  给下个节点的人员发送目前为止的审批状态及意见,给之前的人也发
                            //获取现在的审批意见
                            sql         = "";
                            sql         = $"select ApprovalComments,ApprovalName,ApprovalID  from ApprovalComments where BillNo ='{traApprClass.BillNo}'  and BillClassId='{traApprClass.BillClassId}'";
                            logComments = SqlHelper.GetDataTable(sql);
                            //"【出差】\r\n审批意见: " + traApprClass.AuditingIdea + "\"}}}";
                            for (int i = 0; i < logComments.Rows.Count; i++)
                            {
                                if (i > 0)
                                {
                                    logcoments.Append(",");
                                }
                                //piddept.Append(",");
                                sql = "";
                                sql = $"select distinct DDId from FlowEmployee where EmployeeCode ='{logComments.Rows[i]["ApprovalID"].ToString()}'";
                                // piddept.Append(SqlHelper.GetValue(sql).ToString());
                                logcoments.Append(logComments.Rows[i]["ApprovalName"].ToString() + ":" + logComments.Rows[i]["ApprovalComments"].ToString());
                            }

                            urlcsjson = typeUrl + traApprClass.BillNo + $"&BillClassId={traApprClass.BillClassId}&showmenu=false";
                            urlcsjson = HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);
                            CsJson    = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + piddept.ToString() + "," + fqrall + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + "dingtalk://dingtalkclient/page/link?url=" + urlcsjson + "&pc_slide=true\",\"picUrl\":\"@\",\"title\":\"已" + audiIdea + "【" + audiName + "】\",\"text\":\"金额: " + dt.Rows[0]["FeeAmount"].ToString() + "¥ 发票: " + dt.Rows[0]["BillCount"].ToString() + "张\r\n申请人: " + traApprClass.OperatorName + "【" + typeName + "】\r\n审批意见: " + logcoments.ToString() + "\"}}}";

                            url    = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                            FhJson = ToolsClass.ApiFun("POST", url, CsJson);
                            if (isWrite == "1")
                            {
                                ToolsClass.TxtLog("其他费用申请审批日志", "\r\n发送通知入参:" + CsJson + "\r\n出参:" + FhJson);
                            }
                            xxtzClass2 = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                            errcode    = xxtzClass2.errcode;
                            if (errcode != 0)
                            {
                                ToolsClass.TxtLog("其他费用申请审批日志", "\r\n其他费用申请审批申请审批发送通知失败" + "钉钉id不正确!");
                                context.Response.Write("{\"errmsg\":\"您的出差申请消息通知失败(DD6004)\",\"errcode\":1}");
                                return;
                            }
                            sql = $"update EXPEOTHER set HangState = '0',HangDDIDs = '' where billno = '{traApprClass.BillNo}'";
                            SqlHelper.ExecSql(sql);

                            TaskFactory taskFactory = new TaskFactory();
                            //如果下个是抄送人
                            if (NodeInfo[int.Parse(nodeNumber)].NodeInfoType == "3")
                            {
                                //根据数据开启多个线程调用审批接口

                                taskFactory.StartNew(() =>
                                {
                                    for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                                    {
                                        HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(ymadk + "othercostsp");
                                        webrequest.Method         = "post";
                                        fasongqingqiu ad          = new fasongqingqiu
                                        {
                                            BillNo       = traApprClass.BillNo,
                                            DDAuditingId = SqlHelper.GetValue($"select distinct ddid from FlowEmployee where employeecode='{NodeInfodetailPeople[i].PersonId}'").ToString(),
                                            IsSp         = "3",
                                            DDOperatorId = traApprClass.DDOperatorId,
                                            OperatorName = traApprClass.OperatorName,
                                            BillClassId  = traApprClass.BillClassId,
                                            FeeType      = traApprClass.FeeType,
                                            Sign         = sign
                                        };
                                        byte[] postdatabyte      = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ad));
                                        webrequest.ContentLength = postdatabyte.Length;
                                        Stream stream;
                                        stream = webrequest.GetRequestStream();
                                        stream.Write(postdatabyte, 0, postdatabyte.Length);
                                        stream.Close();
                                        using (var httpWebResponse = webrequest.GetResponse())
                                            using (StreamReader responseStream = new StreamReader(httpWebResponse.GetResponseStream()))
                                            {
                                                String ret = responseStream.ReadToEnd();
                                            }
                                    }
                                });
                            }

                            if (NodeInfo[int.Parse(nodeNumber)].NodeInfoType == "2")
                            {
                                DataRow[] dataRows = null;

                                sql         = "";
                                sql         = $"select ApprovalComments,ApprovalName,ApprovalID  from ApprovalComments where BillNo ='{traApprClass.BillNo}'  and BillClassId='{traApprClass.BillClassId}' and ApprovalStatus ='1'";
                                logComments = SqlHelper.GetDataTable(sql);
                                //如果下个环节中的人在之前已同意,自动调用此接口同意完成审批
                                taskFactory.StartNew(() =>
                                {
                                    for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                                    {
                                        dataRows = logComments.Select("ApprovalID ='" + NodeInfodetailPeople[i].PersonId + "'");
                                        if (dataRows.Length != 0 || SqlHelper.GetValue($"select distinct DDId from FlowEmployee where EmployeeCode ='{NodeInfodetailPeople[i].PersonId}'").ToString() == traApprClass.DDOperatorId)
                                        {
                                            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(ymadk + "othercostsp");
                                            webrequest.Method         = "post";
                                            fasongqingqiu ad          = new fasongqingqiu
                                            {
                                                BillNo       = traApprClass.BillNo,
                                                DDAuditingId = SqlHelper.GetValue($"select distinct ddid from FlowEmployee where employeecode='{NodeInfodetailPeople[i].PersonId}'").ToString(),
                                                IsSp         = "1",
                                                DDOperatorId = traApprClass.DDOperatorId,
                                                OperatorName = traApprClass.OperatorName,
                                                BillClassId  = traApprClass.BillClassId,
                                                FeeType      = traApprClass.FeeType,
                                                AuditingIdea = "同意",
                                                Sign         = sign
                                            };
                                            byte[] postdatabyte      = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ad));
                                            webrequest.ContentLength = postdatabyte.Length;
                                            Stream stream;
                                            stream = webrequest.GetRequestStream();
                                            stream.Write(postdatabyte, 0, postdatabyte.Length);
                                            stream.Close();
                                            using (var httpWebResponse = webrequest.GetResponse())
                                                using (StreamReader responseStream = new StreamReader(httpWebResponse.GetResponseStream()))
                                                {
                                                    String ret = responseStream.ReadToEnd();
                                                }
                                        }
                                    }
                                });
                            }
                        }
                        //如果是最后一级
                        //给申请人发送审批意见  给之前的人发
                        //获取现在的审批意见
                        else
                        {
                            //更新单据消息id与返回内容
                            if (traApprClass.FeeType == "00")
                            {
                                Sql = "update EXPEENTEMENT set IsSp='1',auditingdate=getdate()  where billno='" + traApprClass.BillNo + "'";
                            }
                            else
                            {
                                Sql = "update EXPEOTHER set IsSp='1',auditingdate=getdate()  where billno='" + traApprClass.BillNo + "'";
                            }

                            if (isWrite == "1")
                            {
                                ToolsClass.TxtLog("其他费用申请审批日志", "\r\n操作Expeother表:" + Sql.ToString() + "\r\n");
                            }

                            obj = SqlHelper.ExecSql(Sql);

                            billno        = traApprClass.BillNo;
                            keyValuePairs = CommonHelper.sqlPro(billno, billTypeNo, "", ProName);
                            if (keyValuePairs["ReturnValue"].ToString() != "0")
                            {
                                ToolsClass.TxtLog("其他费用申请审批日志", "\r\n调用存储过程失败:" + keyValuePairs["ReturnMsg"].ToString() + "\r\n");
                                if (traApprClass.FeeType == "00")
                                {
                                    Sql = "update EXPEENTEMENT set IsSp='0'  where billno='" + traApprClass.BillNo + "'";
                                }
                                else
                                {
                                    Sql = "update EXPEOTHER set IsSp='0'  where billno='" + traApprClass.BillNo + "'";
                                }

                                obj = SqlHelper.ExecSql(Sql);
                                if (obj == null)
                                {
                                    context.Response.Write("{\"errmsg\":\"更新审批状态出错(DD6006)\",\"errcode\":1}");
                                    return;
                                }

                                context.Response.Write("{\"errmsg\":\"" + keyValuePairs["ReturnMsg"].ToString() + "(DD9003)\",\"errcode\":1}");
                                return;
                            }
                            sql         = $"select ApprovalComments,ApprovalName,ApprovalID  from ApprovalComments where BillNo ='{traApprClass.BillNo}'  and BillClassId='{traApprClass.BillClassId}'";
                            logComments = SqlHelper.GetDataTable(sql);
                            //"【出差】\r\n审批意见: " + traApprClass.AuditingIdea + "\"}}}";
                            for (int i = 0; i < logComments.Rows.Count; i++)
                            {
                                if (i > 0)
                                {
                                    logcoments.Append(",");
                                    //piddept.Append(",");
                                }
                                sql = "";
                                sql = $"select distinct DDId from FlowEmployee where EmployeeCode ='{logComments.Rows[i]["ApprovalID"].ToString()}'";
                                // piddept.Append(SqlHelper.GetValue(sql).ToString());
                                logcoments.Append(logComments.Rows[i]["ApprovalName"].ToString() + ":" + logComments.Rows[i]["ApprovalComments"].ToString());
                            }
                            urlcsjson = typeUrl + traApprClass.BillNo + $"&BillClassId={traApprClass.BillClassId}&showmenu=false";
                            urlcsjson = HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);
                            CsJson    = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + fqrall + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + "dingtalk://dingtalkclient/page/link?url=" + urlcsjson + "&pc_slide=true\",\"picUrl\":\"@\",\"title\":\"已" + audiIdea + "【" + audiName + "】\",\"text\":\"金额: " + dt.Rows[0]["FeeAmount"].ToString() + "¥ 发票: " + dt.Rows[0]["BillCount"].ToString() + "张\r\n申请人: " + traApprClass.OperatorName + "【" + typeName + "】\r\n审批意见: " + logcoments.ToString() + "\"}}}";

                            url    = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                            FhJson = ToolsClass.ApiFun("POST", url, CsJson);
                            if (isWrite == "1")
                            {
                                ToolsClass.TxtLog("其他费用申请审批日志", "\r\n审批发送通知:" + CsJson + "FhJson\r\n:" + FhJson);
                            }
                            xxtzClass2 = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                            errcode    = xxtzClass2.errcode;
                            if (errcode != 0)
                            {
                                context.Response.Write("{\"errmsg\":\"您的申请消息通知失败(DD6004)\",\"errcode\":1}");
                                return;
                            }
                            sql = $"update EXPEOTHER set HangState = '0',HangDDIDs = '' where billno = '{traApprClass.BillNo}'";
                            SqlHelper.ExecSql(sql);
                        }
                    }
                    else
                    {
                        ToolsClass.TxtLog("其他费用申请审批日志", "\r\n返回前端信息:" + result + "\r\n");
                        context.Response.Write(result);
                        return;
                    }
                    if (IsLocalHost == "0")
                    {
                        result = JsonConvert.SerializeObject(getMulParams.resultGetMulParams(ymadk, traApprClass.DDAuditingId, ddUrl, SqlHelper));
                        ToolsClass.TxtLog("其他费用申请审批日志", "\r\n返回前端信息:" + result + "\r\n");
                        context.Response.Write(result);
                    }
                    else
                    {
                        result = JsonConvert.SerializeObject(new ResultGetMulParams {
                            errcode = "0", errmsg = "", NextUrl = ""
                        });
                        ToolsClass.TxtLog("其他费用申请审批日志", "\r\n返回前端信息:" + result + "\r\n");
                        context.Response.Write(result);
                    }
                    return;
                }
                if (audiIdea == "驳回")
                {
                    //将意见及日期保存到ApprovalComments表,并改变状态
                    Sql = "";
                    Sql = $"update ApprovalComments set ApprovalComments='{traApprClass.AuditingIdea}',Urls='{JsonConvert.SerializeObject(traApprClass.Urls)}',ApprovalStatus='{traApprClass.IsSp}',ApprovalDate='{DateTime.Now}' where BillNo ='{traApprClass.BillNo}' and ApprovalID='{userXqClass.jobnumber}' and NodeNumber ='{int.Parse(nodeNumber) + 1}'  and BillClassId='{traApprClass.BillClassId}'";
                    SqlHelper.ExecSql(Sql);
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("其他费用申请审批日志", "\r\n操作ApprovalComments表:" + Sql + "\r\n");
                    }

                    //更新单据消息id与返回内容

                    Sql = "update EXPEOTHER set IsSp='2',isAuditing = '1',auditingdate=getdate()  where billno='" + traApprClass.BillNo + "'";

                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("其他费用申请审批日志", "\r\n操作Expeother表:" + Sql.ToString() + "\r\n");
                    }

                    obj = SqlHelper.ExecSql(Sql);
                    //给当前节点以前的人及申请人发送通知,通知已驳回,并改变出差申请表中的状态
                    sql         = "";
                    sql         = $"select ApprovalComments,ApprovalName,ApprovalID  from ApprovalComments where BillNo ='{traApprClass.BillNo}'  and BillClassId='{traApprClass.BillClassId}'";
                    logComments = SqlHelper.GetDataTable(sql);
                    //"【出差】\r\n审批意见: " + traApprClass.AuditingIdea + "\"}}}";
                    for (int i = 0; i < logComments.Rows.Count; i++)
                    {
                        if (i > 0)
                        {
                            logcoments.Append(",");
                            // piddept.Append(",");
                        }
                        sql = "";
                        sql = $"select distinct DDId from FlowEmployee where EmployeeCode ='{logComments.Rows[i]["ApprovalID"].ToString()}'";
                        // piddept.Append(SqlHelper.GetValue(sql).ToString());
                        logcoments.Append(logComments.Rows[i]["ApprovalName"].ToString() + ":" + logComments.Rows[i]["ApprovalComments"].ToString());
                    }
                    urlcsjson = typeUrl + traApprClass.BillNo + $"&BillClassId={traApprClass.BillClassId}&showmenu=false";
                    urlcsjson = HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);
                    CsJson    = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + fqrall + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + "dingtalk://dingtalkclient/page/link?url=" + urlcsjson + "&pc_slide=true\",\"picUrl\":\"@\",\"title\":\"已" + audiIdea + "【" + audiName + "】\",\"text\":\"金额: " + dt.Rows[0]["FeeAmount"].ToString() + "¥ 发票: " + dt.Rows[0]["BillCount"].ToString() + "张\r\n申请人: " + traApprClass.OperatorName + "【" + typeName + "】\r\n审批意见: " + logcoments.ToString() + "\"}}}";
                    url       = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                    FhJson    = ToolsClass.ApiFun("POST", url, CsJson);
                    if (isWrite == "1")
                    {
                        ToolsClass.TxtLog("其他费用申请审批日志", "\r\n发送通知出入参=>CsJson:" + CsJson + "\r\n出参:" + FhJson);
                    }
                    xxtzClass2 = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                    errcode    = xxtzClass2.errcode;
                    if (errcode != 0)
                    {
                        context.Response.Write("{\"errmsg\":\"您的其他费用申请消息通知失败(DD6004)\",\"errcode\":1}");
                        return;
                    }
                    sql = $"update EXPEOTHER set HangState = '0',HangDDIDs = '' where billno = '{traApprClass.BillNo}'";
                    SqlHelper.ExecSql(sql);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"更新审批信息出错(DD6006)\",\"errcode\":1}");
                        return;
                    }
                }
                if (IsLocalHost == "0")
                {
                    result = JsonConvert.SerializeObject(getMulParams.resultGetMulParams(ymadk, traApprClass.DDAuditingId, ddUrl, SqlHelper));
                    ToolsClass.TxtLog("其他费用申请审批日志", "\r\n返回前端信息:" + result + "\r\n");
                    context.Response.Write(result);
                }
                else
                {
                    result = JsonConvert.SerializeObject(new ResultGetMulParams {
                        errcode = "0", errmsg = "", NextUrl = ""
                    });
                    ToolsClass.TxtLog("其他费用申请审批日志", "\r\n返回前端信息:" + result + "\r\n");
                    context.Response.Write(result);
                }

                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#23
0
        // ----------------------------- this view is only for static run (TEMP VIEW)
        public ActionResult ViewPackageInfo()
        {
            List <string> amenities = new List <string>();

            amenities.Add("Elevators");
            amenities.Add("Sauna");
            amenities.Add("Room service");
            amenities.Add("Internet services");
            amenities.Add("220 AC");
            amenities.Add("Parking");
            amenities.Add("Pets allowed");
            amenities.Add("Wireless internet connection in public areas");
            amenities.Add("Lounges/bars");
            amenities.Add("24-hour front desk");

            List <string> contacts = new List <string>();

            contacts.Add("PHONE: 49/8161/5320");
            contacts.Add("FAX: 49/8161/532100");
            contacts.Add("EMAIL: [email protected]");
            contacts.Add("URL: www.mercure.com");

            List <string> images = new List <string>();

            images.Add("https://maps.googleapis.com/maps/api/place/photo?maxwidth=800&photoreference=CmRaAAAAtIARwdNqhiQNC-jj-6upRvxxBXgk5Wdl_t484HkmD_ecnJrvi1wK3l53njD6C-XYc0dUEdEGg_SThMQJs7bZpb-2SpTAIUbRmTPoe2aOnpK7tIeC-oERWKsSjvS3H7eyEhA1a_4sr0mjoc7yFPpqvEFhGhSzrFsXmCqtC_7EZdfsvH1zdCjqEQ&key=AIzaSyCArIw-PoGMwSXFZr08nZT64BPDvix8w98");
            images.Add("https://maps.googleapis.com/maps/api/place/photo?maxwidth=800&photoreference=CmRaAAAA9zNoq-JwlWS9MkZCsM0FxyrXoogblHtJtoaPeJRzD2DZVWQS5qrq9vXYY7gCqS-MrEAd389xmp57gKYv7k1KzeqN7pO2Ufc1EUs6IxTX6D2541mMA-N5cAIVxf7ib_nbEhAoYFrmfqLRbhQbzIkNGqh3GhTk2uP9_DRnbDVmt_Nihbz0_ZDbIA&key=AIzaSyCArIw-PoGMwSXFZr08nZT64BPDvix8w98");

            List <string> roomType1 = new List <string>();

            roomType1.Add("Room type: Unspecified");
            roomType1.Add("Bed type: Double");
            roomType1.Add("Number of beds: 1");
            List <string> roomType2 = new List <string>();

            roomType2.Add("Room type: Unspecified");
            roomType2.Add("Bed type: Twin");
            roomType2.Add("Number of beds: 2");

            List <RoomVM> rooms = new List <RoomVM>();

            rooms.Add(new RoomVM()
            {
                roomDescription = "1 DOUBLE BED NONSMOKING FEEL YOURSELF AT HOME ",
                roomPrice       = 684.27,
                roomType        = roomType1
            });
            rooms.Add(new RoomVM()
            {
                roomDescription = "2 SINGLE BEDS NONSMOKING FEEL YOURSELF AT HOME ",
                roomPrice       = 684.27,
                roomType        = roomType1
            });

            HotelOrderDetailsVM hotel = new HotelOrderDetailsVM()
            {
                address       = "ADDRESS: Dr Von Daller Str 1 3, Freising",
                amenities     = amenities,
                apiKey        = "AIzaSyCArIw-PoGMwSXFZr08nZT64BPDvix8w98",
                contact       = contacts,
                hotelName     = "Mercure Muc Freising Airport",
                image         = images,
                latitude      = 48.40068,
                longitude     = 11.75076,
                rating        = "4",
                room          = rooms,
                reviews       = new List <HotelReview>(),
                customersName = new List <string>(),
            };

            FlightRouteVM inbound = new FlightRouteVM()
            {
                ArrivalAirportCode   = "TLV",
                ArrivalAirportName   = "Ben Gurion Airport",
                ArrivalDate          = "18.09.2018",
                ArrivalDay           = "Tuesday",
                ArrivalTime          = "03:35",
                DepartureAirportCode = "MUC",
                DepartureAirportName = "Munich International Airport",
                DepartureDate        = "17.09.2018",
                DepartureDay         = "Monday",
                DepartureTime        = "23:00",
                FlightNumber         = "680"
            };

            FlightRouteVM outbound = new FlightRouteVM()
            {
                ArrivalAirportCode   = "MUC",
                ArrivalAirportName   = "Munich International Airport",
                ArrivalDate          = "10.09.2018",
                ArrivalDay           = "Monday",
                ArrivalTime          = "09:55",
                DepartureAirportCode = "TLV",
                DepartureAirportName = "Ben Gurion Airport",
                DepartureDate        = "10.09.2018",
                DepartureDay         = "Monday",
                DepartureTime        = "06:55",
                FlightNumber         = "681"
            };

            FlightInfoVM flight = new FlightInfoVM()
            {
                airline             = "LH",
                departureDate       = "10.09.2018",
                destinationCity     = "Munich",
                destinationCodeCity = "MUC",
                destinationCountry  = "Germany",
                inbound             = inbound,
                originCity          = "Tel Aviv",
                originCodeCity      = "TLV",
                originCountry       = "Israel",
                outbound            = outbound,
                price                 = "555.07",
                returnDate            = "17.09.2018",
                seatsRemaining        = "9",
                timeDuration_outbound = ToolsClass.TimeDifferences("06:55", "09:55"),
                timeDuration_inbound  = ToolsClass.TimeDifferences("23:00", "03:35"),
            };

            PackageInfoVM package = new PackageInfoVM()
            {
                hotel       = hotel,
                flight      = flight,
                nights      = 7,
                price       = 3121.4,
                composition = "Couple",
            };

            return(View(package));
        }
示例#24
0
        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }
            string ymadk = System.Configuration.ConfigurationManager.AppSettings["ymadk"].ToString() + "/";

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");

            da = new DbHelper.SqlHelper("SqlServer", connectionString);
            string signUrl = ToolsClass.GetConfig("signUrl"); context.Response.ContentType = "text/plain";

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            Object    jgobj      = ToolsClass.DeserializeObject(CsJson);
            Hashtable returnhash = jgobj as Hashtable;

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }

            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", ",").Replace("'", "‘").Replace("\t", ":").Replace("\r", ",").Replace("\n", ",");

            ToolsClass.TxtLog("审批信息修改日志", context.Request.Path.ToLower() + "\r\n修改后的数据:" + CsJson + "\r\n");

            string path1 = context.Request.Path.Replace("Approval/ChangeSQDetails.ashx", "changeclfbxdetails");
            string path2 = context.Request.Path.Replace("Approval/ChangeSQDetails.ashx", "changeqitadetails");
            string path3 = context.Request.Path.Replace("Approval/ChangeSQDetails.ashx", "changezddetails");
            string path4 = context.Request.Path.Replace("Approval/ChangeSQDetails.ashx", "changeqtfydetails");
            //验证请求sign
            string sign1 = ToolsClass.md5(signUrl + path1 + "Romens1/DingDing2" + path1, 32);
            string sign2 = ToolsClass.md5(signUrl + path2 + "Romens1/DingDing2" + path2, 32);
            string sign3 = ToolsClass.md5(signUrl + path3 + "Romens1/DingDing2" + path3, 32);
            string sign4 = ToolsClass.md5(signUrl + path4 + "Romens1/DingDing2" + path4, 32);

            ToolsClass.TxtLog("生成的sign", "生成的" + "sign:" + sign1 + ";" + sign2 + ";" + sign3 + ";" + sign4 + ";" + "传入的sign" + returnhash["Sign"].ToString() + "\r\n");

            if (sign1 != returnhash["Sign"].ToString() && sign2 != returnhash["Sign"].ToString() && sign3 != returnhash["Sign"].ToString() && sign4 != returnhash["Sign"].ToString())
            {
                context.Response.Write("{\"errmsg\":\"认证信息Sign不存在或者不正确!\",\"errcode\":1}");
                return;
            }
            try
            {
                if (returnhash["BillNo"].ToString().Contains("CL"))
                {
                    //前端传入数据
                    changeCLFBXSQRC = new ChangeCLFBXSQRC();
                    changeCLFBXSQRC = (ChangeCLFBXSQRC)JsonConvert.DeserializeObject(CsJson, typeof(ChangeCLFBXSQRC));

                    isclf = 1;
                }
                else if (returnhash["BillNo"].ToString().Contains("TXF") || returnhash["BillNo"].ToString().Contains("JTF"))
                {
                    //前端传入数据
                    changeQTSQRC = new ChangeQTSQRC();
                    changeQTSQRC = (ChangeQTSQRC)JsonConvert.DeserializeObject(CsJson, typeof(ChangeQTSQRC));

                    isclf = 2;
                }
                else if (returnhash["BillNo"].ToString().Contains("ZDF"))
                {
                    //前端传入数据
                    changeZDSQRC = new ChangeZDSQRC();
                    changeZDSQRC = (ChangeZDSQRC)JsonConvert.DeserializeObject(CsJson, typeof(ChangeZDSQRC));

                    isclf = 3;
                }
                else if (returnhash["BillNo"].ToString().Contains("QTFY"))
                {
                    //前端传入数据
                    changeQTFYSQRC = new ChangeQTFYSQRC();
                    changeQTFYSQRC = (ChangeQTFYSQRC)JsonConvert.DeserializeObject(CsJson, typeof(ChangeQTFYSQRC));

                    isclf = 4;
                }
                string updatedetail    = "";
                string updateCCnum     = "";
                string insertLogMain   = "";
                string insertLogDetail = "";

                if (isclf == 1)
                {
                    updateCCnum = $"update ExpeTrav set CCNum = CCNum -1 where billno = '{changeCLFBXSQRC.BillNo}'";
                    string guid = Guid.NewGuid().ToString();
                    //修改可修改次数减一
                    //保存修改的日志内容
                    insertLogMain   = $"insert into BILLCHANGELOG(GUID,BILLTYPE,BILLNAME,DDID,SPPName,BILLNO,ChangeReason)  values('{guid}','{changeCLFBXSQRC.BillType}','差旅费报销','{changeCLFBXSQRC.SPPDDid}','{changeCLFBXSQRC.SPPName}','{changeCLFBXSQRC.BillNo}','{changeCLFBXSQRC.ChangeReason}')";
                    insertLogDetail = $"INSERT INTO ExpeTravDetailLOG(BillNo, Detailno, CustCode, DepaDate, RetuDate , DepaCity, DestCity, TranMode, TranCount, TranAmount, AlloDay,AlloPric,AlloAmount, AccoCount, AccoAmount , CityTrafCount , CityTraAmont , TotalAmount, GUID , OtherFee , GasAmount , HSRAmount , OffDay , TaxAmount , TripNo, DepaCity1, DestCity1, MAINGUID) SELECT BillNo, Detailno, CustCode, DepaDate, RetuDate , DepaCity, DestCity, TranMode, TranCount, TranAmount, AlloDay,AlloPric,AlloAmount, AccoCount, AccoAmount , CityTrafCount , CityTraAmont , TotalAmount, GUID , OtherFee , GasAmount , HSRAmount , OffDay , TaxAmount , TripNo, DepaCity1, DestCity1, '{guid}' FROM ExpeTravDetail  where  BillNo='{changeCLFBXSQRC.BillNo}'";

                    sqlList.Clear();
                    sqlList.Add(updateCCnum);
                    sqlList.Add(insertLogMain);
                    sqlList.Add(insertLogDetail);
                    da.ExecSql(sqlList);
                    sqlList.Clear();

                    #region 修改差旅费

                    //,isnull(B.TripNo,0) TripNo,convert(varchar(20),B.DepaDate,120) DepaDate,convert(varchar(20),B.RetuDate,120) RetuDate,B.DepaCity,B.DestCity,B.CustCode,e.CustName,B.DetailNo,B.AlloDay,B.OffDay,AlloPric, AlloAmount,OtherFee,B.TranMode,B.TranCount,TranAmount,GasAmount,HsrAmount,B.AccoCount,AccoAmount,B.CityTrafCount,CityTraAmont,TotalAmount
                    for (int i = 0; i < changeCLFBXSQRC.ExpeTravDetail.Length; i++)
                    {
                        double ta = 0.00;
                        ta           = double.Parse(changeCLFBXSQRC.ExpeTravDetail[i].TranAmount) + double.Parse(changeCLFBXSQRC.ExpeTravDetail[i].AlloAmount) + double.Parse(changeCLFBXSQRC.ExpeTravDetail[i].OtherFee);
                        updatedetail = $"update ExpeTravDetail set TranCount ='{changeCLFBXSQRC.ExpeTravDetail[i].TranCount}',TranAmount='{changeCLFBXSQRC.ExpeTravDetail[i].TranAmount}',AlloDay='{changeCLFBXSQRC.ExpeTravDetail[i].AlloDay}',AlloPric='{changeCLFBXSQRC.ExpeTravDetail[i].AlloPric}',AlloAmount='{changeCLFBXSQRC.ExpeTravDetail[i].AlloAmount}',AccoCount='{changeCLFBXSQRC.ExpeTravDetail[i].AccoCount}',AccoAmount='{changeCLFBXSQRC.ExpeTravDetail[i].AccoAmount}',CityTrafCount='{changeCLFBXSQRC.ExpeTravDetail[i].CityTrafCount}',CityTraAmont='{changeCLFBXSQRC.ExpeTravDetail[i].CityTraAmont}',TotalAmount='{ta}',OtherFee='{changeCLFBXSQRC.ExpeTravDetail[i].OtherFee}',DepaDate='{changeCLFBXSQRC.ExpeTravDetail[i].DepaDate}',RetuDate='{changeCLFBXSQRC.ExpeTravDetail[i].RetuDate}',DepaCity='{changeCLFBXSQRC.ExpeTravDetail[i].DepaCity}',DestCity='{changeCLFBXSQRC.ExpeTravDetail[i].DestCity}',GasAmount='{changeCLFBXSQRC.ExpeTravDetail[i].GasAmount}',HSRAmount='{changeCLFBXSQRC.ExpeTravDetail[i].HsrAmount}',TranMode='{changeCLFBXSQRC.ExpeTravDetail[i].TranMode}',OffDay='{changeCLFBXSQRC.ExpeTravDetail[i].OffDay}'  where BillNo = '{changeCLFBXSQRC.BillNo}' and Detailno = '{changeCLFBXSQRC.ExpeTravDetail[i].DetailNo}' and TripNo='{changeCLFBXSQRC.ExpeTravDetail[i].TripNo}'";
                        sqlTou.Clear();
                        sqlTou.Append(updatedetail);
                        sqlList.Add(sqlTou.ToString());
                        ToolsClass.TxtLog("审批信息修改日志", "\r\n执行的sql语句:" + updatedetail + "\r\n");
                    }

                    string ss = da.ExecSql(sqlList);
                    da.ExecSql($"update ExpeTravDetail");
                    ToolsClass.TxtLog("审批信息修改日志", "\r\n执行的sql语句返回:" + ss + "\r\n");
                    if (ss == null)
                    {
                        context.Response.Write("{\"errmsg\":\"更新流程失败\",\"errcode\":1}");
                        return;
                    }

                    ToolsClass.TxtLog("审批信息修改日志", $"\r\n 修改单据明细:{updatedetail} \r\n  修改可修改次数:{updateCCnum}  \r\n    保存日志主表:{insertLogMain} \r\n   保存日志明细:{insertLogDetail}");

                    #endregion 修改差旅费
                }
                else if (isclf == 2)
                {
                    //修改可修改次数减一
                    updateCCnum = $"update ExpeOther set CCNum = CCNum -1 where billno = '{changeQTSQRC.BillNo}'";
                    string guid = Guid.NewGuid().ToString();

                    //保存修改的日志内容
                    insertLogMain   = $"insert into BILLCHANGELOG(GUID,BILLTYPE,BILLNAME,DDID,SPPName,BILLNO,ChangeReason)  values('{guid}','{changeQTSQRC.BillType}','交通费、通讯费报销','{changeQTSQRC.SPPDDid}','{changeQTSQRC.SPPName}','{changeQTSQRC.BillNo}','{changeQTSQRC.ChangeReason}')";
                    insertLogDetail = $"INSERT INTO ExpeOtherLOG(BillNo,BillDate,FeeType ,ApplPers,BearOrga,BillCount,FeeAmount,Notes ,OperatorGuid,IsAuditing ,AuditingGUID ,AuditingDate,IsAccount ,AccountGUID ,AccountDate,REALDATE,ISREFER,REFERGUID,REFERDATE ,NoCountFee ,DDOperatorId,DDAuditingId ,AppendixUrl ,PictureUrl ,SelAuditingGuid ,SelAuditingName,CopypersonID ,CopyPersonName ,IsSp ,AuditingIdea,ProcessNodeInfo,Urls,DeptCode ,DeptName ,CCNum,MAINGUID) SELECT BillNo,BillDate,FeeType ,ApplPers,BearOrga,BillCount,FeeAmount,Notes ,OperatorGuid,IsAuditing ,AuditingGUID ,AuditingDate,IsAccount ,AccountGUID ,AccountDate,REALDATE,ISREFER,REFERGUID,REFERDATE ,NoCountFee ,DDOperatorId,DDAuditingId ,AppendixUrl ,PictureUrl ,SelAuditingGuid ,SelAuditingName,CopypersonID ,CopyPersonName ,IsSp ,AuditingIdea,ProcessNodeInfo,Urls,DeptCode ,DeptName ,CCNum, '{guid}' FROM ExpeOther  where  BillNo='{changeQTSQRC.BillNo}'";

                    sqlList.Clear();
                    sqlList.Add(updateCCnum);
                    sqlList.Add(insertLogMain);
                    sqlList.Add(insertLogDetail);
                    da.ExecSql(sqlList);

                    updatedetail = $"update ExpeOther set BillCount='{changeQTSQRC.BillCount}',FeeAmount='{changeQTSQRC.FeeAmount}'  where BillNo = '{changeQTSQRC.BillNo}'";

                    if (da.ExecSql(updatedetail) == null)
                    {
                        context.Response.Write("{\"errmsg\":\"更新流程失败\",\"errcode\":1}");
                        return;
                    }

                    ToolsClass.TxtLog("审批信息修改日志", $"\r\n 修改单据明细:{updatedetail} \r\n  修改可修改次数:{updateCCnum}  \r\n    保存日志主表:{insertLogMain} \r\n   保存日志明细:{insertLogDetail}");
                }
                else if (isclf == 3)
                {
                    //修改可修改次数减一
                    updateCCnum = $"update ExpeEnteMent set CCNum = CCNum -1 where billno = '{changeZDSQRC.BillNo}'";
                    string guid = Guid.NewGuid().ToString();

                    //保存修改的日志内容
                    insertLogMain   = $"insert into BILLCHANGELOG(GUID,BILLTYPE,BILLNAME,DDID,SPPName,BILLNO,ChangeReason)  values('{guid}','{changeZDSQRC.BillType}','招待费报销','{changeZDSQRC.SPPDDid}','{changeZDSQRC.SPPName}','{changeZDSQRC.BillNo}','{changeZDSQRC.ChangeReason}')";
                    insertLogDetail = $"INSERT INTO ExpeEnteMentLOG( BillNo,BillDate,ApplPers,BearOrga ,CustCode ,BillCount,FeeAmount ,Notes ,OperatorGuid,IsAuditing ,AuditingGUID,AuditingDate ,IsAccount ,AccountGUID,AccountDate,REALDATE ,ISREFER ,REFERGUID ,REFERDATE ,NoCountFee,DDOperatorId,DDAuditingId,AppendixUrl,PictureUrl,SelAuditingGuid ,SelAuditingName ,CopypersonID ,CopyPersonName,IsSp ,AuditingIdea ,ProcessNodeInfo,Urls,DeptCode,DeptName ,CCNum,MAINGUID) SELECT BillNo,BillDate,ApplPers,BearOrga ,CustCode ,BillCount,FeeAmount ,Notes ,OperatorGuid,IsAuditing ,AuditingGUID,AuditingDate ,IsAccount ,AccountGUID,AccountDate,REALDATE ,ISREFER ,REFERGUID ,REFERDATE ,NoCountFee,DDOperatorId,DDAuditingId,AppendixUrl,PictureUrl,SelAuditingGuid ,SelAuditingName ,CopypersonID ,CopyPersonName,IsSp ,AuditingIdea ,ProcessNodeInfo,Urls,DeptCode,DeptName ,CCNum, '{guid}' FROM ExpeEnteMent  where  BillNo='{changeZDSQRC.BillNo}'";

                    sqlList.Clear();
                    sqlList.Add(updateCCnum);
                    sqlList.Add(insertLogMain);
                    sqlList.Add(insertLogDetail);
                    da.ExecSql(sqlList);

                    updatedetail = $"update ExpeEnteMent set BillCount='{changeZDSQRC.BillCount}',FeeAmount='{changeZDSQRC.FeeAmount}'  where BillNo = '{changeZDSQRC.BillNo}'";

                    if (da.ExecSql(updatedetail) == null)
                    {
                        context.Response.Write("{\"errmsg\":\"更新流程失败\",\"errcode\":1}");
                        return;
                    }

                    ToolsClass.TxtLog("审批信息修改日志", $"\r\n 修改单据明细:{updatedetail} \r\n  修改可修改次数:{updateCCnum}  \r\n    保存日志主表:{insertLogMain} \r\n   保存日志明细:{insertLogDetail}");
                }
                else if (isclf == 4)
                {
                    //修改可修改次数减一
                    updateCCnum = $"update ExpeOther set CCNum = CCNum -1 where billno = '{changeQTFYSQRC.BillNo}'";
                    string guid = Guid.NewGuid().ToString();

                    //保存修改的日志内容
                    insertLogMain   = $"insert into BILLCHANGELOG(GUID,BILLTYPE,BILLNAME,DDID,SPPName,BILLNO,ChangeReason)  values('{guid}','{changeQTFYSQRC.BillType}','其他费用报销','{changeQTFYSQRC.SPPDDid}','{changeQTFYSQRC.SPPName}','{changeQTFYSQRC.BillNo}','{changeQTFYSQRC.ChangeReason}')";
                    insertLogDetail = $"INSERT INTO ExpeOtherLOG(BillNo,BillDate,FeeType ,ApplPers,BearOrga,BillCount,FeeAmount,Notes ,OperatorGuid,IsAuditing ,AuditingGUID ,AuditingDate,IsAccount ,AccountGUID ,AccountDate,REALDATE,ISREFER,REFERGUID,REFERDATE ,NoCountFee ,DDOperatorId,DDAuditingId ,AppendixUrl ,PictureUrl ,SelAuditingGuid ,SelAuditingName,CopypersonID ,CopyPersonName ,IsSp ,AuditingIdea,ProcessNodeInfo,Urls,DeptCode ,DeptName ,CCNum,MAINGUID) SELECT BillNo,BillDate,FeeType ,ApplPers,BearOrga,BillCount,FeeAmount,Notes ,OperatorGuid,IsAuditing ,AuditingGUID ,AuditingDate,IsAccount ,AccountGUID ,AccountDate,REALDATE,ISREFER,REFERGUID,REFERDATE ,NoCountFee ,DDOperatorId,DDAuditingId ,AppendixUrl ,PictureUrl ,SelAuditingGuid ,SelAuditingName,CopypersonID ,CopyPersonName ,IsSp ,AuditingIdea,ProcessNodeInfo,Urls,DeptCode ,DeptName ,CCNum, '{guid}' FROM ExpeOther  where  BillNo='{changeQTFYSQRC.BillNo}'";

                    sqlList.Clear();
                    sqlList.Add(updateCCnum);
                    sqlList.Add(insertLogMain);
                    sqlList.Add(insertLogDetail);
                    ToolsClass.TxtLog("审批信息修改日志", $"\r\n 修改可修改次数:{updateCCnum}  \r\n    保存日志主表:{insertLogMain} \r\n   保存日志明细:{insertLogDetail}");
                    da.ExecSql(sqlList);

                    sqlList.Clear();
                    for (int i = 0; i < changeQTFYSQRC.OtherCostSQModels.Count; i++)
                    {
                        updatedetail = $"insert into ExpeOtherDetailLOG(BillNo,MAINGUID,BillCount,BillAmount,FeeTypeDetail) values('{changeQTFYSQRC.BillNo}','{guid}','{changeQTFYSQRC.OtherCostSQModels[i].Count}','{changeQTFYSQRC.OtherCostSQModels[i].Amount}','{changeQTFYSQRC.OtherCostSQModels[i].FType}')";
                        sqlList.Add(updatedetail);
                        ToolsClass.TxtLog("审批信息修改日志", "\r\n执行的sql语句:" + updatedetail + "\r\n");
                    }
                    da.ExecSql(sqlList);
                    sqlList.Clear();
                    updatedetail = $"update ExpeOther set BillCount='{changeQTFYSQRC.BillCount}',FeeAmount='{changeQTFYSQRC.FeeAmount}'  where BillNo = '{changeQTFYSQRC.BillNo}'";
                    da.ExecSql(updatedetail);
                    ToolsClass.TxtLog("审批信息修改日志", "\r\n执行的sql语句:" + updatedetail + "\r\n");
                    for (int i = 0; i < changeQTFYSQRC.OtherCostSQModels.Count; i++)
                    {
                        updatedetail = string.Empty;
                        updatedetail = $"update ExpeOtherDetail set BillCount ='{changeQTFYSQRC.OtherCostSQModels[i].Count}',BillAmount='{changeQTFYSQRC.OtherCostSQModels[i].Amount}'  where BillNo = '{changeQTFYSQRC.BillNo}' and FeeTypeDetail = '{changeQTFYSQRC.OtherCostSQModels[i].FType}'";
                        sqlTou.Clear();
                        sqlTou.Append(updatedetail);
                        sqlList.Add(sqlTou.ToString());
                        ToolsClass.TxtLog("审批信息修改日志", "\r\n执行的sql语句:" + updatedetail + "\r\n");
                    }
                    da.ExecSql(sqlList);
                    if (da.ExecSql(updatedetail) == null)
                    {
                        context.Response.Write("{\"errmsg\":\"更新流程失败\",\"errcode\":1}");
                        return;
                    }
                }
                context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#25
0
        string ddUrl = "";                    //钉钉前端地址

        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            //sqlServer
            da = new DbHelper.SqlHelper("SqlServer", connectionString);

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", "");
            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            AppWyy    = ToolsClass.GetConfig("AppWyy");
            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");

            if (isWrite == "1")
            {
                ToolsClass.TxtLog("DDLog", "\r\nnClfAudi=>入参:" + CsJson + "\r\n");
            }

            //前端传入数据
            TravelApproval traApprClass = new TravelApproval();

            traApprClass = (TravelApproval)JsonConvert.DeserializeObject(CsJson, typeof(TravelApproval));
            try
            {
                if (traApprClass.IsSp == "1")
                {
                    audiIdea = "同意";
                }
                else if (traApprClass.IsSp == "2")
                {
                    audiIdea = "驳回";
                }
                else
                {
                    audiIdea = "抄送";
                }
                #region 获取access_token
                url    = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                TokenClass tokenClass = new TokenClass();
                tokenClass   = (TokenClass)JsonConvert.DeserializeObject(FhJson, typeof(TokenClass));
                access_token = tokenClass.access_token;
                errcode      = tokenClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取ACCESS_TOKEN报错(DD0004)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 获取用户详情
                url    = "https://oapi.dingtalk.com/user/get?access_token=" + access_token + "&userid=" + traApprClass.DDAuditingId;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                GetUserXq userXqClass = new GetUserXq();
                userXqClass = (GetUserXq)JsonConvert.DeserializeObject(FhJson, typeof(GetUserXq));
                errcode     = userXqClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取审批人详细信息报错(DD6003)\",\"errcode\":1}");
                    return;
                }
                audiName = userXqClass.name;
                #endregion

                #region 获取用户guid
                Sql = "select top 1 a.GUID,b.TotalAmount,b.OffDay from  Employee a left join (select sum(TotalAmount) TotalAmount, sum(OffDay) OffDay from ExpetravDetail where billno = '[申请号]' group by billno) b on 1 = 1 where a.employeecode = '[工号]'";
                Sql = Sql.Replace("[申请号]", traApprClass.BillNo).Replace("[工号]", userXqClass.jobnumber);

                obj = da.GetDataTable(Sql);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"用户不存在(DD6000)\",\"errcode\":1}");
                    return;
                }

                dt           = obj as DataTable;
                AuditingGuid = dt.Rows[0]["GUID"].ToString();
                #endregion

                #region 更新审批信息
                //更新单据消息id与返回内容
                Sql = "update EXPETRAV set IsSp='" + traApprClass.IsSp + "',auditingidea='" + traApprClass.AuditingIdea + "',DDAuditingId='" + traApprClass.DDAuditingId + "',auditingguid='" + AuditingGuid + "' where billno='" + traApprClass.BillNo + "'";

                if (isWrite == "1")
                {
                    ToolsClass.TxtLog("DDLog", "\r\nnClfAudi=>update:" + Sql.ToString() + "\r\n");
                }

                obj = da.ExecSql(Sql);

                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"更新审批信息出错(DD6006)\",\"errcode\":1}");
                    return;
                }
                #endregion

                #region 调用审核存储过程
                if (traApprClass.IsSp == "1")
                {
                    billno = traApprClass.BillNo;
                    if (!sqlPro())
                    {
                        Sql = "update EXPETRAV set IsSp='0',auditingidea=null,DDAuditingId=null,auditingguid=null where billno='" + traApprClass.BillNo + "'";

                        obj = da.ExecSql(Sql);
                        if (obj == null)
                        {
                            context.Response.Write("{\"errmsg\":\"更新审批状态出错(DD6006)\",\"errcode\":1}");
                            return;
                        }

                        context.Response.Write("{\"errmsg\":\"" + ProResult + "(DD9003)\",\"errcode\":1}");
                        return;
                    }
                }
                #endregion

                #region 发送工作通知消息
                CsJson = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + traApprClass.DDAuditingId + "," + traApprClass.CopyPerson + "," + traApprClass.DDOperatorId + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + ddUrl + "/clfui/shenpi/index.html?billno=" + traApprClass.BillNo + "\",\"picUrl\":\"@\",\"title\":\"已" + audiIdea + "【" + audiName + "】\",\"text\":\"金额: " + dt.Rows[0]["TotalAmount"].ToString() + "¥ 调休: " + dt.Rows[0]["OffDay"].ToString() + "天\r\n申请人: " + traApprClass.OperatorName + "【差旅费】\r\n审批意见: " + traApprClass.AuditingIdea + "\"}}}";

                url    = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                FhJson = ToolsClass.ApiFun("POST", url, CsJson);
                if (isWrite == "1")
                {
                    ToolsClass.TxtLog("DDLog", "\r\nClfAudi=>CsJson:" + CsJson + "FhJson\r\n:" + FhJson);
                }

                XXTZ xxtzClass2 = new XXTZ();
                xxtzClass2 = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                errcode    = xxtzClass2.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"您的报销申请消息通知失败(DD6004)\",\"errcode\":1}");
                    return;
                }
                #endregion

                context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"提交的信息有误(DD0005)\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#26
0
        public void Start(DelegateTimerTick TimerTick)
        {
            TimeSpan t = new TimeSpan(0, 0, 0, 0, 100);

            ToolsClass.CreateAndStart_DispatcherTimer(ref timer, TimerTick, t);
        }
示例#27
0
        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }
            string signUrl = ToolsClass.GetConfig("signUrl"); context.Response.ContentType = "text/plain";

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            //sqlServer
            da = new DbHelper.SqlHelper("SqlServer", connectionString);

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", ",").Replace("'", "‘").Replace("\t", ":").Replace("\r", ",").Replace("\n", ",");
            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            AppWyy    = ToolsClass.GetConfig("AppWyy");
            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");

            if (isWrite == "1")
            {
                ToolsClass.TxtLog("保存流程信息日志", "\r\n保存流程入参:" + CsJson + "\r\n");
            }

            PSP psp = new PSP();

            psp = (PSP)JsonConvert.DeserializeObject(CsJson, typeof(PSP));
            if (psp.Data.Length <= 0)
            {
                context.Response.Write("{\"errmsg\":\"流程不允许为空,请添加流程(DD6001)\",\"errcode\":1}");
                return;
            }

            string path = context.Request.Path.Replace("Approval/ProcessSave.ashx", "saveprocess");
            //验证请求sign
            string sign = ToolsClass.md5(signUrl + path + "Romens1/DingDing2" + path, 32);

            ToolsClass.TxtLog("生成的sign", "生成的" + sign + "传入的sign" + psp.Sign + "\r\n 后台字符串:" + signUrl + path + "Romens1/DingDing2" + path);
            if (sign != psp.Sign)
            {
                context.Response.Write("{\"errmsg\":\"认证信息Sign不存在或者不正确!\",\"errcode\":1}");
                return;
            }

            string sqlss = ",";

            try
            {
                #region 保存流程信息

                sqlList.Clear();
                sqlTou.Clear();
                for (int i = 1; i <= psp.Data.Length; i++)
                {
                    if (i > 1)
                    {
                        sqlTou.Clear();
                    }
                    sqlTou.Append("insert into ApprovalNode(nodeid,BilliClassid,BillClassName,NodeNumber,CharacterTypes,ApprovalType,persons,IsAndOr,IsEnd) values('")
                    .Append(Guid.NewGuid().ToString()).Append("','")
                    .Append(psp.BillClassId).Append("','")
                    .Append(psp.BillName).Append("','")
                    .Append(i.ToString()).Append("','")
                    .Append(psp.Data[i - 1].CharacterTypes).Append("','")
                    .Append(JsonConvert.SerializeObject(psp.Data[i - 1].ApprovalType[0])).Append("','")
                    //.Append(JsonConvert.SerializeObject(psp.Data[i - 1].Persons).Replace("[","").Replace("]", "")).Append("','")
                    .Append(JsonConvert.SerializeObject(psp.Data[i - 1].Persons)).Append("','")
                    .Append(psp.Data[i - 1].IsAndOr).Append("','")
                    .Append(psp.Data[i - 1].IsEnd).Append("')");
                    sqlss = sqlTou.ToString() + sqlss;
                    sqlList.Add(sqlTou.ToString());
                }
                if (isWrite == "1")
                {
                    ToolsClass.TxtLog("保存流程信息日志", "\r\n保存流程入参:" + sqlss + "\r\n");
                }
                //执行SQL语句Insert
                da.ExecSql($"delete ApprovalNode where BilliClassid ='{psp.BillClassId}'");
                da.ExecSql($"update BillClass set ClassRuCan = '{CsJson}' where BillClassid ='{psp.BillClassId}'");
                obj = da.ExecSql(sqlList);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"保存流程信息出错(DD6002)\",\"errcode\":1}");
                    return;
                }

                #endregion 保存流程信息

                context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                context.Response.End();
            }
        }
示例#28
0
 public void Pause()
 {
     ToolsClass.StopAndNull_DispatcherTimer(ref timer);
 }
示例#29
0
    //public static GraphicRaycaster graphicRaycaster2;
    //public static GraphicRaycaster graphicRaycaster3;

    void Awake()
    {
        Instance = this;
    }
示例#30
0
        public void ProcessRequest(HttpContext context)
        {
            //判断客户端请求是否为post方法
            if (context.Request.HttpMethod.ToUpper() != "POST")
            {
                context.Response.Write("{\"errmsg\":\"请求方式不允许,请使用POST方式(DD0001)\",\"errcode\":1}");
                return;
            }
            string signUrl = ToolsClass.GetConfig("signUrl"); context.Response.ContentType = "text/plain";
            string ymadk   = System.Configuration.ConfigurationManager.AppSettings["ymadk"].ToString() + "/";

            //数据库链接
            connectionString = ToolsClass.GetConfig("DataOnLine");
            //sqlServer
            da = new BankDbHelper.SqlHelper("SqlServer", connectionString);

            //获取请求json
            using (var reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
            {
                CsJson = reader.ReadToEnd();
            }

            if (CsJson == "")
            {
                context.Response.Write("{\"errmsg\":\"报文格式错误(DD0003)\",\"errcode\":1}");
                return;
            }
            CsJson = Regex.Replace(CsJson, @"[\n\r]", "").Replace(@"\n", ",").Replace("'", "‘").Replace("\t", ":").Replace("\r", ",").Replace("\n", ",");
            string JsonData = CsJson;

            //#微应用ID:agentId #企业ID:corpId #应用的唯一标识:appKey #应用的密钥:appSecret
            AppWyy    = ToolsClass.GetConfig("AppWyy");
            ScList    = AppWyy.Split('$');
            agentId   = ScList[0].ToString();
            corpId    = ScList[1].ToString();
            appKey    = ScList[2].ToString();
            appSecret = ScList[3].ToString();

            isWrite = ToolsClass.GetConfig("isWrite");
            ddUrl   = ToolsClass.GetConfig("ddUrl");

            if (isWrite == "1")
            {
                ToolsClass.TxtLog("医保及三方授权申请日志", "\r\n入参:" + CsJson + "\r\n");
            }
            string ddMessageId = string.Empty;
            MedConfigReqRequest configReqRequest = new MedConfigReqRequest();

            configReqRequest = (MedConfigReqRequest)JsonConvert.DeserializeObject(CsJson, typeof(MedConfigReqRequest));

            string path = context.Request.Path.Replace("Approval/MedConfigReq.ashx", "medconfigreq");
            //验证请求sign
            string sign = ToolsClass.md5(signUrl + path + "Romens1/DingDing2" + path, 32);

            ToolsClass.TxtLog("生成的sign", "生成的" + sign + "传入的sign" + configReqRequest.Sign + "\r\n 后台字符串:" + signUrl + path + "Romens1/DingDing2" + path);
            if (sign != configReqRequest.Sign)
            {
                context.Response.Write("{\"errmsg\":\"认证信息Sign不存在或者不正确!\",\"errcode\":1}");
                return;
            }

            string NodeInfo = JsonConvert.SerializeObject(configReqRequest.NodeInfo).Replace(",{\"AType\":\"\",\"PersonId\":\"select\",\"PersonName\":\"请选择\"}", "");

            try
            {
                #region 获取access_token

                url    = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret;
                FhJson = ToolsClass.ApiFun("GET", url, "");

                TokenClass tokenClass = new TokenClass();
                tokenClass   = (TokenClass)JsonConvert.DeserializeObject(FhJson, typeof(TokenClass));
                access_token = tokenClass.access_token;
                errcode      = tokenClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"获取ACCESS_TOKEN报错(DD0004)\",\"errcode\":1}");
                    return;
                }

                #endregion 获取access_token

                ProName  = "MedConfigRefer";
                typeName = "医保及三方授权";
                typeUrl  = ddUrl + "/yibao/shenpi/index.html?billno=";

                string fqrall = configReqRequest.OperatorDDID;

                //根据ddid获取内部系统中operator中guid
                //获得提交人信息dt
                var referinfo = da.GetDataTable($"select a.GUID,a.code,a.name from operators a  where code = (select top 1 employeecode from flowemployee where ddid = '{configReqRequest.ReferDDID}')");
                if (referinfo.Rows.Count == 0)
                {
                    context.Response.Write("{\"errmsg\":\"当前操作人员未在operators或者flowemployee中维护信息!请联系信息部解决\",\"errcode\":1}");
                    return;
                }
                string ReferGuid = referinfo.Rows[0]["GUID"].ToString();
                string jnumber   = referinfo.Rows[0]["code"].ToString();
                string sqr       = configReqRequest.OperatorName;
                if (configReqRequest.IsInsteadApply == "1")
                {
                    fqrall  = fqrall + "," + configReqRequest.ReferDDID;
                    sqr     = "【代替】" + configReqRequest.InsteadOperatorName;
                    jnumber = da.GetValue($"select top 1 employeecode from flowemployee where ddid = '{configReqRequest.ReferDDID}'").ToString();
                }
                operatorGuid = da.GetValue($"select a.GUID from operators a  where code = (select top 1 employeecode from flowemployee where ddid = '{configReqRequest.OperatorDDID}')").ToString();

                #region 获取申请流水号

                Sql    = $"select dbo.GetBillNo('{billTypeNo}','{jnumber}',getdate())";
                billno = da.GetValue(Sql).ToString();

                if (billno == "1")
                {
                    billno = billNoPro + DateTime.Now.ToString("yyyyMMdd") + "0001";

                    Sql = "update BillNumber set MaxNum=1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='" + billTypeNo + "' and BillDate<>convert(varchar(20),GETDATE(),120)";
                }
                else
                {
                    Sql = "update BillNumber set MaxNum=MaxNum+1,BillDate=convert(varchar(20),GETDATE(),120) where BillGuid='" + billTypeNo + "'";
                }

                obj = da.ExecSql(Sql);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"更新医保授权申请单号出错(DD9002)\",\"errcode\":1}");
                    return;
                }
                string guid = string.Empty;

                #endregion 获取申请流水号

                #region 暂不会有没有审批人现象

                //if (configReqRequest.NodeInfo.Count == 0)
                //{
                //    //自动同意
                //    //更新单据消息id与返回内容

                //    #region 保存信息

                //    sqlList.Clear();
                //    sqlTou.Clear();
                //    sqlTou.Append("insert into EXPEOTHER(BillNo,BillDate,FeeType,OperatorGuid,FlowEmployeeGuid,ProcessNodeInfo,ApplPers,DDOperatorId,JsonData,BillCount,FeeAmount,DeptName,DeptCode,NoCountFee,BearOrga,AppendixUrl,Urls,IsInsteadApply,InsteadOperatorGuid,PictureUrl,Notes) Values('")
                //    .Append(billno).Append("','")
                //    .Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Append("','")
                //    .Append(configReqRequest.FeeType).Append("','")
                //     .Append(operatorGuid).Append("','")
                //    .Append(configReqRequest.OperatorGuid).Append("','")
                //    .Append(NodeInfo).Append("','")
                //    .Append(jnumber).Append("','")
                //    .Append(configReqRequest.DDOperatorId).Append("','")
                //    .Append(JsonData).Append("','")
                //    .Append(configReqRequest.BillCount).Append("','")
                //    .Append(configReqRequest.FeeAmount).Append("','")
                //    .Append(configReqRequest.DeptName).Append("','")
                //    .Append(configReqRequest.DeptCode).Append("','")
                //    .Append(configReqRequest.NoCountFee).Append("','")
                //    .Append(configReqRequest.BearOrga).Append("','")
                //    .Append(configReqRequest.AppendixUrl).Append("','")
                //    .Append(JsonConvert.SerializeObject(configReqRequest.Urls)).Append("','")
                //     .Append(configReqRequest.IsInsteadApply).Append("','")
                //    .Append(configReqRequest.InsteadOperatorGuid).Append("','")
                //    .Append(configReqRequest.PictureUrl).Append("','")
                //    .Append(configReqRequest.Notes)
                //    .Append("')");
                //    sqlList.Add(sqlTou.ToString());
                //    for (int i = 0; i < configReqRequest.configReqRequests.Count; i++)
                //    {
                //        guid = Guid.NewGuid().ToString();
                //        Sql = string.Empty;
                //        Sql = $"insert into ExpeOtherDetail(BillNo,GUID,BillCount,BillAmount,FeeTypeDetail) values('{billno}','{guid}','{configReqRequest.configReqRequests[i].Count}','{configReqRequest.configReqRequests[i].Amount}','{configReqRequest.configReqRequests[i].FType}')";
                //        sqlList.Add(Sql);
                //        ToolsClass.TxtLog("医保及三方授权申请日志", "\r\n操作ExpeotherDetail表:" + Sql + "\r\n");
                //    }

                //    if (isWrite == "1")
                //    {
                //        ToolsClass.TxtLog("医保及三方授权申请日志", "\r\n操作Expeother表:" + sqlTou.ToString() + "\r\n");
                //    }
                //    obj = da.ExecSql(sqlList);
                //    if (obj == null)
                //    {
                //        context.Response.Write("{\"errmsg\":\"保存申请信息出错(DD6002)\",\"errcode\":1}");
                //        return;
                //    }

                //    #endregion 保存信息

                //    #region 调用提交存储过程

                //    keyValuePairs = CommonHelper.sqlPro(billno, billTypeNo, operatorGuid, ProName);
                //    if (keyValuePairs["ReturnValue"].ToString() != "0")
                //    {
                //        ToolsClass.TxtLog("医保及三方授权申请日志", "\r\n调用存储过程失败:" + keyValuePairs["ReturnMsg"].ToString() + "\r\n");
                //        sqlList.Clear();
                //        Sql = "delete from EXPEOTHER where BillNo='" + billno + "'";
                //        sqlList.Add(Sql);
                //        obj = da.ExecSql(sqlList);
                //        if (obj == null)
                //        {
                //            context.Response.Write("{\"errmsg\":\"删除提交信息出错(DD6006)\",\"errcode\":1}");
                //            return;
                //        }

                //        context.Response.Write("{\"errmsg\":\"" + keyValuePairs["ReturnMsg"].ToString() + "(DD9003)\",\"errcode\":1}");
                //        return;
                //    }

                //    #endregion 调用提交存储过程

                //    Sql = "update EXPEOTHER set IsSp='1',auditingdate=getdate()  where billno='" + billno + "'";
                //    ToolsClass.TxtLog("医保及三方授权申请日志", "\r\n操作EXPEOTHER表:" + Sql.ToString() + "\r\n");

                //    obj = da.ExecSql(Sql);
                //    Sql = "";

                //    #region 发送工作通知消息

                //    urlcsjson = typeUrl + "" + $"{billno}&BillClassId={configReqRequest.BillClassId}&showmenu=false";
                //    urlcsjson = System.Web.HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);
                //    url = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
                //    CsJson = "{\"agent_id\":\"" + agentId + "\",\"userid_list\":\"" + fqrall + "\",\"msg\":{\"msgtype\":\"link\",\"link\":{\"messageUrl\":\"" + "dingtalk://dingtalkclient/page/link?url=" + urlcsjson + "&pc_slide=true\",\"picUrl\":\"@\",\"title\":\"" + sqr + "的【" + typeName + "】报销申请\",\"text\":\"金额: " + configReqRequest.FeeAmount + "¥  发票: " + configReqRequest.BillCount + " 张\r\n申请日期: " + DateTime.Now.ToString("yyyy-MM-dd") + "\r\n备注: " + configReqRequest.Notes + "\"}}}";
                //    FhJson = ToolsClass.ApiFun("POST", url, CsJson);
                //    var xxtzClass2 = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                //    ddMessageId = xxtzClass2.task_id.ToString();

                //    #endregion 发送工作通知消息

                //    context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                //    return;
                //}

                #endregion 暂不会有没有审批人现象

                //获取第一级流程的人员信息
                NodeInfoDetailPerson[] NodeInfodetailPeople = configReqRequest.NodeInfo[0].NodeInfoDetails[0].Persons;
                //从入参中得到审批人及抄送人的信息
                //指定人员的id列表
                StringBuilder piddept = new StringBuilder();
                string        sql     = "";

                for (int i = 0; i < NodeInfodetailPeople.Length; i++)
                {
                    if (i > 0)
                    {
                        piddept.Append(",");
                    }

                    //判断传空
                    if (NodeInfodetailPeople[i].PersonId != "select" && NodeInfodetailPeople[i].PersonId != "")
                    {
                        sql = $"select top 1 DDId from FlowEmployee where EmployeeCode ='{NodeInfodetailPeople[i].PersonId}'";
                        piddept.Append(da.GetValue(sql).ToString());
                    }
                }

                #region 保存信息

                string medGuid = Guid.NewGuid().ToString();
                sqlList.Clear();
                sqlTou.Clear();
                string mainMedConfig = $"insert into MedConfig (Guid,BillNo,BillDate,BillTime,CusGuid,CusCode,CusName,MedType,ProductType,IsAuditing,AuditingGuid,AuditingDate,OperatorGuid,Notes,YXQ,YXQFlag,iswrite,YXQType,ISREFER,REFERGUID,REFERDATE,FileUrl,AuditingReason,IsSp) Values('{medGuid}','{billno}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{DateTime.Now.ToString(" HH:mm:ss")}',null,'{configReqRequest.CustCode}','{configReqRequest.CustName}','{configReqRequest.MedTypeList}','{configReqRequest.ProductType}','0',null,null,'{operatorGuid}','{configReqRequest.Notes}',null,null,'0','{configReqRequest.YXQType}','0',null,null,null,null,0)";

                if (isWrite == "1")
                {
                    ToolsClass.TxtLog("医保及三方授权申请日志", "\r\n操作MedConfig表:" + mainMedConfig + "\r\n");
                }
                obj = da.ExecSql(mainMedConfig);
                if (obj == null)
                {
                    context.Response.Write("{\"errmsg\":\"保存申请信息出错(DD6002)\",\"errcode\":1}");
                    return;
                }

                #endregion 保存信息

                #region 调用提交存储过程

                keyValuePairs = CommonHelper.sqlPro(medGuid, billTypeNo, ReferGuid, ProName);
                if (keyValuePairs["ReturnValue"].ToString() != "0")
                {
                    ToolsClass.TxtLog("医保及三方授权申请日志", "\r\n调用存储过程失败:" + keyValuePairs["ReturnMsg"].ToString() + "\r\n");

                    sqlList.Clear();
                    Sql = "delete from MedConfig where guid='" + medGuid + "'";

                    obj = da.ExecSql(Sql);
                    if (obj == null)
                    {
                        context.Response.Write("{\"errmsg\":\"删除提交信息出错(DD6006)\",\"errcode\":1}");
                        return;
                    }
                    context.Response.Write("{\"errmsg\":\"执行存储过程报错\",\"errcode\":1}");
                    return;
                }

                #endregion 调用提交存储过程

                #region 发送工作通知消息

                urlcsjson = typeUrl + "" + $"{billno}&BillClassId={configReqRequest.BillClassId}&showmenu=false";
                urlcsjson = System.Web.HttpUtility.UrlEncode(urlcsjson, System.Text.Encoding.UTF8);
                url       = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;

                DDMsgModelLink link = new DDMsgModelLink
                {
                    messageUrl = $"dingtalk://dingtalkclient/page/link?url={ urlcsjson}&pc_slide=true",
                    picUrl     = "@",
                    text       = $"\r\n申请日期:{ DateTime.Now.ToString("yyyy-MM-dd")}\r\n备注:{configReqRequest.Notes}",
                    title      = $"{sqr }发起的【医保及三方支付申请】"
                };
                DDMsgModelLinkMsg dDMsg = new DDMsgModelLinkMsg {
                    link = link, msgtype = "link"
                };
                string ddmsgModel = JsonConvert.SerializeObject(new DDMsgModel
                {
                    agent_id    = agentId,
                    userid_list = piddept.ToString() + "," + fqrall,
                    msg         = dDMsg
                });
                FhJson = ToolsClass.ApiFun("POST", url, ddmsgModel);
                ToolsClass.TxtLog("医保及三方授权申请日志", "\r\n发送通知json:" + ddmsgModel + "\r\n");
                XXTZ xxtzClass = new XXTZ();
                xxtzClass   = (XXTZ)JsonConvert.DeserializeObject(FhJson, typeof(XXTZ));
                ddMessageId = xxtzClass.task_id.ToString();
                errcode     = xxtzClass.errcode;
                if (errcode != 0)
                {
                    context.Response.Write("{\"errmsg\":\"您的报销申请,消息通知失败(DD9004)\",\"errcode\":1}");
                    return;
                }

                #endregion 发送工作通知消息

                //如果是撤回重新提交的,删除之前的单子
                //if (!string.IsNullOrEmpty(configReqRequest.OldBillNo))
                //{
                //    da.ExecSql($"delete ExpeOtherDetail where billno = '{configReqRequest.OldBillNo}'");
                //    da.ExecSql($"delete EXPEOTHER where billno = '{configReqRequest.OldBillNo}'");
                //    da.ExecSql($"delete approvalcomments where billno = '{configReqRequest.OldBillNo}'");
                //    da.Dispose();
                //    ToolsClass.TxtLog("医保及三方授权申请日志", "\r\n删除旧单据:" + $"delete ExpeOtherDetail where billno = '{configReqRequest.OldBillNo}'" + $"delete EXPEOTHER where billno = '{configReqRequest.OldBillNo}'" + "\r\n");
                //}
                context.Response.Write("{\"errmsg\":\"ok\",\"errcode\":0}");
                return;
            }
            catch (Exception ex)
            {
                context.Response.Write("{\"errmsg\":\"" + ex.Message + "\",\"errcode\":1}");
                context.Response.End();
            }
        }