コード例 #1
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();
            }
        }
コード例 #2
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();
            }
        }