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(); } }
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(); } }