tijian_jichuang/Code/TiJianFuWu/PAJK.asmx.cs
2025-02-20 11:54:48 +08:00

1039 lines
44 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data;
using Newtonsoft.Json;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using Newtonsoft.Json.Linq;
using System.Web.Script.Serialization;
using log4net;
namespace TiJianFuWu
{
/// <summary>
/// PAJK 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
// [System.Web.Script.Services.ScriptService]
public class PAJK : System.Web.Services.WebService
{
private static SqlConnection connection;
string yzm = "0";
object yzm1 = "0";
private const string SError = "Error";
/// <summary>
/// 1.预约申请
/// </summary>
/// <param name="data">3DES加密后的预约JSON数据</param>
/// <returns>status=状态码正常200参数异常400权限异常: 401未知错误: 500不能预约: 600预约人数已满: 601其他无法预约情况: 602</returns>
/// <returns>hospitalOrderId=医疗机构订单ID</returns>
/// <returns>orderState=预约订单状态预约已确认01 预约待确认02</returns>
[WebMethod]
public string yysq(string sign, string timestamp, string data)
{
try
{
//var log = log4net.LogManager.GetLogger(this.GetType());
var log = log4net.LogManager.GetLogger(SError);
log.Info(data);
if (JianQuan(sign, timestamp) == false)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "401", hospitalOrderId = "", orderState = "02" });
}
//EAS.Loggers.ILogger log = new EAS.Loggers.TextLogger();
//使用3des解密
//var data3des = Decrypt3Des1(data, "pOju50umByKqfGFAqrknUKmM");
var data3des = Decrypt3Des1(data, "D4c631fEanBeA1dMdrsCjdte");
//将解密字符串转换成Json对象
JObject jo = (JObject)JsonConvert.DeserializeObject(data3des);
//医疗机构订单ID
string hospitalOrderId = Guid.NewGuid().ToString();
//体检平台订单ID
string orderId = jo["orderId"].ToString();
string sql = "select * from pa_yysq where orderId='"+ orderId + "'";
DataTable dtMd = GetDataSet(sql);
if(dtMd.Rows.Count>0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "200", hospitalOrderId = hospitalOrderId, orderState = "01" });
}
//客户姓名
string customerName = jo["customerName"].ToString();
if (string.IsNullOrEmpty(customerName))
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "400", hospitalOrderId = "", orderState = "02" });
}
var log1 = log4net.LogManager.GetLogger(SError);
log1.Info(customerName);
//客户证件类型--身份证1护照2军人证3港澳通行证 / 回乡证或台胞证6
string customerIdentityType = jo["customerIdentityType"].ToString();
//客户证件号
string customerIdentityNo = jo["customerIdentityNo"].ToString();
if (string.IsNullOrEmpty(customerIdentityNo))
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "400", hospitalOrderId = "", orderState = "02" });
}
//客户性别 男MF
string customerGender = jo["customerGender"].ToString();
//客户出生日期 yyyyMMdd
string customerBirthday = jo["customerBirthday"].ToString();
//生理状态01 未婚女02 已婚女03
string medicalStatus = jo["medicalStatus"].ToString();
//门店ID
string hospitalSubId = jo["hospitalSubId"].ToString();
//套餐ID
string medicalPackage = jo["medicalPackage"].ToString();
//预约时间 yyyyMMddHHmmss
string appointmentTime = jo["appointmentTime"].ToString();
if (string.IsNullOrEmpty(appointmentTime))
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "400", hospitalOrderId = "", orderState = "02" });
}
string aa = appointmentTime.Substring(0, 8);
//var time = DateTime.Parse(Request["Pusinessdate"].ToString());
DateTime dtAppointmentTime = Convert.ToDateTime(DateTime.ParseExact(aa, "yyyyMMdd", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces).ToString("yyyy-MM-dd"));
//是否授权查看体检报告Y 否N
string hasAuthorized = jo["hasAuthorized"].ToString();
//手机号码11位
string phone = jo["phone"].ToString();
//套餐展示名称
string packageDisplayName = jo["packageDisplayName"].ToString();
//所属公司名称
string companyName = jo["companyName"].ToString();
//是否VIP预约N 是Y
string isVip = jo["isVip"].ToString();
/*
* 验证是否可以预约
*/
/// canOrder 是否可预约:可预约: 1 不可预约: 0
/// provideVipData 是否提供VIP预约数据提供1 不提供0
/// vipMaxNum VIP最大可体检人数
/// vipOrderNum VIP已预约人数
/// maxNum 最大可体检人数包括vip和非vip
/// orderNum 已预约人数包括vip和非vip
/// status=状态码正常200参数异常400权限异常: 401未知错误: 500不能预约: 600预约人数已满: 601其他无法预约情况: 602
sql = "select * from pa_yyrs where yyrq='" + dtAppointmentTime + "'";
DataTable dt1 = GetDataSet(sql);
if (dt1.Rows.Count == 0)
{
sql = @"INSERT INTO pa_yyrs
(yyrq
,maxNum
,orderNum
,vipMaxNum
,vipOrderNum
,canOrder
,provideVipData
) VALUES ('{0}',{1},{2},{3},{4},{5},{6})";
sql = string.Format(sql, dtAppointmentTime
, 150
, 1
, 50
, isVip == "Y" ? 1 : 0
, (int)dtAppointmentTime.DayOfWeek == 1 ? 0 : 1
, (int)dtAppointmentTime.DayOfWeek == 1 ? 0 : 1);
//创建SqlCommand对象
SqlCommand cmd1 = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue1 = cmd1.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue1 < 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId, orderState = "02" });
}
}
else
{
if (dt1.Rows[0]["canOrder"].ToString() == "0")
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "600", hospitalOrderId = "", orderState = "02" });
}
if (isVip == "Y")
{
if (dt1.Rows[0]["provideVipData"].ToString() == "0")
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "600", hospitalOrderId = "", orderState = "02" });
}
if (Convert.ToInt32(dt1.Rows[0]["vipMaxNum"]) == Convert.ToInt32(dt1.Rows[0]["vipOrderNum"]))
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "601", hospitalOrderId = "", orderState = "02" });
}
sql = "update pa_yyrs set vipOrderNum=vipOrderNum+1,orderNum=orderNum+1 where yyrq='" + dtAppointmentTime + "'";
//创建SqlCommand对象
SqlCommand cmd2 = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue2 = cmd2.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue2 < 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId, orderState = "02" });
}
}
else
{
if (Convert.ToInt32(dt1.Rows[0]["maxNum"]) == Convert.ToInt32(dt1.Rows[0]["orderNum"]))
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "601", hospitalOrderId = "", orderState = "02" });
}
sql = "update pa_yyrs set orderNum=orderNum+1 where yyrq='" + dtAppointmentTime + "'";
//创建SqlCommand对象
SqlCommand cmd3 = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue3 = cmd3.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue3 < 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId, orderState = "02" });
}
}
}
sql = @"INSERT INTO pa_yysq
(hospitalOrderId
,orderId
,customerName
,customerIdentityType
,customerIdentityNo
,customerGender
,customerBirthday
,medicalStatus
,hospitalSubId
,medicalPackage
,appointmentTime
,hasAuthorized
,phone
,packageDisplayName
,companyName
,isVip
,tm
,orderState,status,tjrq)
VALUES
('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}',{18},'{19}')";
//填充SQL语句
sql = string.Format(sql, hospitalOrderId
, orderId
, customerName
, customerIdentityType
, customerIdentityNo
, customerGender
, customerBirthday
, medicalStatus
, hospitalSubId
, medicalPackage
, appointmentTime
, hasAuthorized
, phone
, packageDisplayName
, companyName
, isVip
, ""
, "01"
, "200", DateTime.Now.ToString("yyyyMMdd HH:mm:ss"));
//创建SqlCommand对象
SqlCommand cmd = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue = cmd.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue != -1)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "200", hospitalOrderId = hospitalOrderId, orderState = "01" });
}
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "602", hospitalOrderId = "", orderState = "02" });
}
catch (Exception ext)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = yzm, orderState = yzm1 });
}
}
/// <summary>
/// 1.预约申请2
/// </summary>
/// <param name="data">3DES加密后的预约JSON数据</param>
/// <returns>status=状态码正常200参数异常400权限异常: 401未知错误: 500不能预约: 600预约人数已满: 601其他无法预约情况: 602</returns>
/// <returns>hospitalOrderId=医疗机构订单ID</returns>
/// <returns>orderState=预约订单状态预约已确认01 预约待确认02</returns>
[WebMethod]
public string yysq2(string data)
{
try
{
//var log = log4net.LogManager.GetLogger(this.GetType());
var log = log4net.LogManager.GetLogger(SError);
log.Info(data);
//EAS.Loggers.ILogger log = new EAS.Loggers.TextLogger();
//使用3des解密
//var data3des = Decrypt3Des1(data, "pOju50umByKqfGFAqrknUKmM");
var data3des = Decrypt3Des1(data, "D4c631fEanBeA1dMdrsCjdte");
//将解密字符串转换成Json对象
JObject jo = (JObject)JsonConvert.DeserializeObject(data3des);
//医疗机构订单ID
string hospitalOrderId = Guid.NewGuid().ToString();
//yzm = hospitalOrderId;
//体检平台订单ID
string orderId = jo["orderId"].ToString();
string sql = "select * from pa_yysq where orderId='" + orderId + "'";
DataTable dtMd = GetDataSet(sql);
if (dtMd.Rows.Count > 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "200", hospitalOrderId = hospitalOrderId, orderState = "01" });
}
//客户姓名
string customerName = jo["customerName"].ToString();
if (string.IsNullOrEmpty(customerName))
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "400", hospitalOrderId = "", orderState = "02" });
}
var log1 = log4net.LogManager.GetLogger(SError);
log1.Info(customerName);
//客户证件类型--身份证1护照2军人证3港澳通行证 / 回乡证或台胞证6
string customerIdentityType = jo["customerIdentityType"].ToString();
//客户证件号
string customerIdentityNo = jo["customerIdentityNo"].ToString();
if (string.IsNullOrEmpty(customerIdentityNo))
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "400", hospitalOrderId = "", orderState = "02" });
}
//客户性别 男MF
string customerGender = jo["customerGender"].ToString();
//客户出生日期 yyyyMMdd
string customerBirthday = jo["customerBirthday"].ToString();
//生理状态01 未婚女02 已婚女03
string medicalStatus = jo["medicalStatus"].ToString();
//门店ID
string hospitalSubId = jo["hospitalSubId"].ToString();
//套餐ID
string medicalPackage = jo["medicalPackage"].ToString();
//预约时间 yyyyMMddHHmmss
string appointmentTime = jo["appointmentTime"].ToString();
if (string.IsNullOrEmpty(appointmentTime))
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "400", hospitalOrderId = "", orderState = "02" });
}
string aa = appointmentTime.Substring(0, 8);
//var time = DateTime.Parse(Request["Pusinessdate"].ToString());
DateTime dtAppointmentTime = Convert.ToDateTime(DateTime.ParseExact(aa, "yyyyMMdd", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces).ToString("yyyy-MM-dd"));
//是否授权查看体检报告Y 否N
string hasAuthorized = jo["hasAuthorized"].ToString();
//手机号码11位
string phone = jo["phone"].ToString();
//套餐展示名称
string packageDisplayName = jo["packageDisplayName"].ToString();
//所属公司名称
string companyName = jo["companyName"].ToString();
//是否VIP预约N 是Y
string isVip = jo["isVip"].ToString();
/*
* 验证是否可以预约
*/
/// canOrder 是否可预约:可预约: 1 不可预约: 0
/// provideVipData 是否提供VIP预约数据提供1 不提供0
/// vipMaxNum VIP最大可体检人数
/// vipOrderNum VIP已预约人数
/// maxNum 最大可体检人数包括vip和非vip
/// orderNum 已预约人数包括vip和非vip
/// status=状态码正常200参数异常400权限异常: 401未知错误: 500不能预约: 600预约人数已满: 601其他无法预约情况: 602
sql = "select * from pa_yyrs where yyrq='" + dtAppointmentTime + "'";
DataTable dt1 = GetDataSet(sql);
if (dt1.Rows.Count == 0)
{
sql = @"INSERT INTO pa_yyrs
(yyrq
,maxNum
,orderNum
,vipMaxNum
,vipOrderNum
,canOrder
,provideVipData
) VALUES ('{0}',{1},{2},{3},{4},{5},{6})";
sql = string.Format(sql, dtAppointmentTime
, 150
, 1
, 50
, isVip == "Y" ? 1 : 0
, (int)dtAppointmentTime.DayOfWeek == 1 ? 0 : 1
, (int)dtAppointmentTime.DayOfWeek == 1 ? 0 : 1);
//创建SqlCommand对象
SqlCommand cmd1 = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue1 = cmd1.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue1 < 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId, orderState = "02" });
}
}
else
{
if (dt1.Rows[0]["canOrder"].ToString() == "0")
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "600", hospitalOrderId = "", orderState = "02" });
}
if (isVip == "Y")
{
if (dt1.Rows[0]["provideVipData"].ToString() == "0")
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "600", hospitalOrderId = "", orderState = "02" });
}
if (Convert.ToInt32(dt1.Rows[0]["vipMaxNum"]) == Convert.ToInt32(dt1.Rows[0]["vipOrderNum"]))
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "601", hospitalOrderId = "", orderState = "02" });
}
sql = "update pa_yyrs set vipOrderNum=vipOrderNum+1,orderNum=orderNum+1 where yyrq='" + dtAppointmentTime + "'";
//创建SqlCommand对象
SqlCommand cmd2 = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue2 = cmd2.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue2 < 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId, orderState = "02" });
}
}
else
{
if (Convert.ToInt32(dt1.Rows[0]["maxNum"]) == Convert.ToInt32(dt1.Rows[0]["orderNum"]))
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "601", hospitalOrderId = "", orderState = "02" });
}
sql = "update pa_yyrs set orderNum=orderNum+1 where yyrq='" + dtAppointmentTime + "'";
//创建SqlCommand对象
SqlCommand cmd3 = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue3 = cmd3.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue3 < 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId, orderState = "02" });
}
}
}
sql = @"INSERT INTO pa_yysq
(hospitalOrderId
,orderId
,customerName
,customerIdentityType
,customerIdentityNo
,customerGender
,customerBirthday
,medicalStatus
,hospitalSubId
,medicalPackage
,appointmentTime
,hasAuthorized
,phone
,packageDisplayName
,companyName
,isVip
,tm
,orderState,status,tjrq)
VALUES
('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}',{18},'{19}')";
//填充SQL语句
sql = string.Format(sql, hospitalOrderId
, orderId
, customerName
, customerIdentityType
, customerIdentityNo
, customerGender
, customerBirthday
, medicalStatus
, hospitalSubId
, medicalPackage
, appointmentTime
, hasAuthorized
, phone
, packageDisplayName
, companyName
, isVip
, ""
, "01"
, "200", DateTime.Now.ToString("yyyyMMdd HH:mm:ss"));
//创建SqlCommand对象
SqlCommand cmd = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue = cmd.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue != -1)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "200", hospitalOrderId = hospitalOrderId, orderState = "01" });
}
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "602", hospitalOrderId = "", orderState = "02" });
}
catch (Exception ext)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = yzm, orderState = yzm1 });
}
}
/// <summary>
/// 2.取消预约
/// </summary>
/// <param name="hospitalOrderId">医疗机构订单ID</param>
/// <param name="orderId">体检平台订单ID</param>
/// <returns>status=状态码正常200参数异常400权限异常: 401未知错误: 500不能预约: 600预约人数已满: 601其他无法预约情况: 602</returns>
[WebMethod]
public string qxyy(string sign, string timestamp, string hospitalOrderId, string orderId)
{
try
{
if (JianQuan(sign, timestamp) == false)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "401" });
}
//DateTime dtAppointmentTime = Convert.ToDateTime(DateTime.ParseExact(aa, "yyyyMMdd", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces).ToString("yyyy-MM-dd"));
string sql = "select * from pa_yysq where hospitalOrderId='{0}' and orderId='{1}'";
sql = string.Format(sql, hospitalOrderId, orderId);
DataTable dt1 = GetDataSet(sql);
if (dt1.Rows.Count == 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500" });
}
string aa = dt1.Rows[0]["appointmentTime"].ToString().Substring(0, 8);
string isVIP = dt1.Rows[0]["isVip"].ToString();
DateTime dtAppointmentTime = Convert.ToDateTime(DateTime.ParseExact(aa, "yyyyMMdd", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces).ToString("yyyy-MM-dd"));
sql = "select * from pa_yyrs where yyrq='" + dtAppointmentTime + "'";
DataTable dt2 = GetDataSet(sql);
if (dt2.Rows.Count != 0)
{
if (isVIP == "Y")
{
sql = "update pa_yyrs set vipOrderNum=vipOrderNum-1,orderNum=orderNum-1 where yyrq='" + dtAppointmentTime + "'";
}
else
{
sql = "update pa_yyrs set orderNum=orderNum-1 where yyrq='" + dtAppointmentTime + "'";
}
//创建SqlCommand对象
SqlCommand cmd2 = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue2 = cmd2.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue2 < 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500" });
}
}
sql = @"delete from pa_yysq where hospitalOrderId='{0}' and orderId='{1}'";
sql = string.Format(sql, hospitalOrderId, orderId);
//创建SqlCommand对象
SqlCommand cmd = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue = cmd.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue != 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "200" });
}
else
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "400" });
}
}
catch (Exception ext)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500" });
}
}
/// <summary>
/// 3.客户申请改期
/// </summary>
/// <param name="hospitalOrderId">医疗机构订单ID</param>
/// <param name="orderId">体检平台订单ID</param>
/// <param name="appointmentTime">预约时间</param>
/// <returns>status=状态码正常200参数异常400权限异常: 401未知错误: 500不能预约: 600预约人数已满: 601其他无法预约情况: 602</returns>
/// <returns>hospitalOrderId=医疗机构订单ID</returns>
[WebMethod]
public string khsqgq(string sign, string timestamp, string hospitalOrderId, string orderId, string appointmentTime)
{
try
{
if (JianQuan(sign, timestamp) == false)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "401", hospitalOrderId = hospitalOrderId });
}
string bb = appointmentTime.Substring(0, 8);
DateTime dt = Convert.ToDateTime(DateTime.ParseExact(bb, "yyyyMMdd", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces).ToString("yyyy-MM-dd"));
if ((int)dt.DayOfWeek == 1)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "601", hospitalOrderId = hospitalOrderId });
}
string sql = "select * from pa_yysq where hospitalOrderId='{0}' and orderId='{1}'";
sql = string.Format(sql, hospitalOrderId, orderId);
DataTable dt1 = GetDataSet(sql);
if (dt1.Rows.Count == 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId });
}
//释放预约
string aa = dt1.Rows[0]["appointmentTime"].ToString().Substring(0, 8);
string isVIP = dt1.Rows[0]["isVip"].ToString();
DateTime dtAppointmentTime = Convert.ToDateTime(DateTime.ParseExact(aa, "yyyyMMdd", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces).ToString("yyyy-MM-dd"));
sql = "select * from pa_yyrs where yyrq='" + dtAppointmentTime + "'";
DataTable dt2 = GetDataSet(sql);
if (dt2.Rows.Count != 0)
{
if (isVIP == "Y")
{
sql = "update pa_yyrs set vipOrderNum=vipOrderNum-1,orderNum=orderNum-1 where yyrq='" + dtAppointmentTime + "'";
}
else
{
sql = "update pa_yyrs set orderNum=orderNum-1 where yyrq='" + dtAppointmentTime + "'";
}
//创建SqlCommand对象
SqlCommand cmd2 = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue2 = cmd2.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue2 < 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId });
}
}
//新的预约日期 填充预约
sql = "select * from pa_yyrs where yyrq='" + dt + "'";
DataTable dt3 = GetDataSet(sql);
if (dt3.Rows.Count == 0)
{
sql = @"INSERT INTO pa_yyrs
(yyrq
,maxNum
,orderNum
,vipMaxNum
,vipOrderNum
,canOrder
,provideVipData
) VALUES ('{0}',{1},{2},{3},{4},{5},{6})";
sql = string.Format(sql, dt
, 150
, 1
, 50
, isVIP == "Y" ? 1 : 0
, (int)dtAppointmentTime.DayOfWeek == 1 ? 0 : 1
,(int)dtAppointmentTime.DayOfWeek == 1 ? 0 : 1);
//创建SqlCommand对象
SqlCommand cmd1 = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue1 = cmd1.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue1 < 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId });
}
}
else
{
if (isVIP == "Y")
{
sql = "update pa_yyrs set vipOrderNum=vipOrderNum+1,orderNum=orderNum+1 where yyrq='" + dt + "'";
}
else
{
sql = "update pa_yyrs set orderNum=orderNum+1 where yyrq='" + dt + "'";
}
//创建SqlCommand对象
SqlCommand cmd3 = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue3 = cmd3.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue3 < 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId });
}
}
sql = @"update pa_yysq set appointmentTime='{0}',tjrq='{3}' where hospitalOrderId='{1}' and orderId='{2}'";
sql = string.Format(sql, appointmentTime, hospitalOrderId, orderId, DateTime.Now.ToString("yyyyMMdd HH:mm:ss"));
//创建SqlCommand对象
SqlCommand cmd = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue = cmd.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue != 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "200", hospitalOrderId = hospitalOrderId });
}
else
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "400", hospitalOrderId = hospitalOrderId });
}
}
catch (Exception ext)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", hospitalOrderId = hospitalOrderId });
}
}
/// <summary>
/// 4.客户授权查看影像报告
/// </summary>
/// <param name="hospitalOrderId">医疗机构订单ID</param>
/// <param name="orderId">体检平台订单ID</param>
/// <returns>status=状态码正常200参数异常400权限异常: 401未知错误: 500不能预约: 600预约人数已满: 601其他无法预约情况: 602</returns>
[WebMethod]
public string khsqckyxbg(string sign, string timestamp, string hospitalOrderId, string orderId)
{
try
{
if (JianQuan(sign, timestamp) == false)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "401" });
}
string sql = "select * from pa_yysq where hospitalOrderId='{0}' and orderId='{1}'";
sql = string.Format(sql, hospitalOrderId, orderId);
DataTable dt1 = GetDataSet(sql);
if (dt1.Rows.Count == 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500" });
}
sql = @"update pa_yysq set hasAuthorized='Y' where hospitalOrderId='{0}' and orderId='{1}'";
sql = string.Format(sql, hospitalOrderId, orderId);
//创建SqlCommand对象
SqlCommand cmd = new SqlCommand(sql, Connection);
//执行SQL语句
int returnvalue = cmd.ExecuteNonQuery();
//判断SQL语句是否执行成功
if (returnvalue != 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "200" });
}
else
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "400" });
}
}
catch (Exception ext)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500" });
}
}
/// <summary>
/// 5.体检预约可用人数
/// </summary>
/// <param name="startDate">起始时间</param>
/// <param name="endDate">结束时间</param>
/// <param name="hospitalSubId">机构门店ID</param>
/// <returns>status=状态码正常200参数异常400权限异常: 401未知错误: 500不能预约: 600预约人数已满: 601其他无法预约情况: 602</returns>
/// <returns>results=
/// date 具体每一天的日期
/// canOrder 是否可预约:可预约: 1 不可预约: 0
/// provideVipData 是否提供VIP预约数据提供1 不提供0
/// vipMaxNum VIP最大可体检人数
/// vipOrderNum VIP已预约人数
/// maxNum 最大可体检人数包括vip和非vip
/// orderNum 已预约人数包括vip和非vip</returns>
[WebMethod]
public string tjyykyrs(string sign, string timestamp, string startDate, string endDate, string hospitalSubId)
{
try
{
if (JianQuan(sign, timestamp) == false)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "401", results = "" });
}
DateTime dt1 = Convert.ToDateTime(DateTime.ParseExact(startDate, "yyyyMMdd", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces).ToString("yyyy-MM-dd"));
DateTime dt2 = Convert.ToDateTime(DateTime.ParseExact(endDate, "yyyyMMdd", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces).ToString("yyyy-MM-dd"));
string sql = "select * from pa_yyrs where yyrq between '" + dt1 + "' and '" + dt2 + "'";
DataTable dtSet = GetDataSet(sql);
//DateTime dt1 = Convert.ToDateTime(Convert.ToDateTime(startDate).ToShortDateString());
//DateTime dt2 = Convert.ToDateTime(Convert.ToDateTime(endDate).ToShortDateString());
TimeSpan sp = dt2.Subtract(dt1);
int count = sp.Days + 1;
results[] re = new results[count];
int compNum = 999;
DateTime dt = dt1.AddDays(-1);
for (int i = 0; i < count; i++)
{
dt = dt.AddDays(1);
if (dtSet.Rows.Count != 0)
{
foreach (DataRow dr in dtSet.Rows)
{
compNum = DateTime.Compare(dt, Convert.ToDateTime(dr["yyrq"]));
if (compNum == 0)
{
re[i] = new results { date = dt.ToString("yyyyMMdd"), canOrder = Convert.ToInt32(dr["canOrder"]), provideVipData = Convert.ToInt32(dr["provideVipData"]), vipMaxNum = Convert.ToInt32(dr["vipMaxNum"]), vipOrderNum = Convert.ToInt32(dr["vipOrderNum"]), maxNum = Convert.ToInt32(dr["maxNum"]), orderNum = Convert.ToInt32(dr["orderNum"]) };
break;
}
}
}
if (compNum != 0)
{
int xq = (int)dt.DayOfWeek;
if (xq == 1)
{
re[i] = new results { date = dt.ToString("yyyyMMdd"), canOrder = 0, provideVipData = 0, vipMaxNum = 50, vipOrderNum = 0, maxNum = 110, orderNum = 0 };
}
else
{
re[i] = new results { date = dt.ToString("yyyyMMdd"), canOrder = 1, provideVipData = 1, vipMaxNum = 50, vipOrderNum = 0, maxNum = 110, orderNum = 0 };
}
}
compNum = 999;
}
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "200", results = re });
}
catch (Exception e)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = "500", results = "" });
}
}
public class results
{
public string date { get; set; }
public int canOrder { get; set; }
public int provideVipData { get; set; }
public int vipMaxNum { get; set; }
public int vipOrderNum { get; set; }
public int maxNum { get; set; }
public int orderNum { get; set; }
}
public static bool JianQuan(string sign, string timestamp)
{
if (string.IsNullOrEmpty(sign))
{
return false;
}
if (string.IsNullOrEmpty(timestamp))
{
return false;
}
DateTime dt1 = DateTime.ParseExact(timestamp, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
DateTime dt2 = DateTime.Now;
TimeSpan timeSpan = dt2 - dt1;
if (timeSpan.TotalMinutes > 10)
{
return false;
}
string yzm = GenerateMD5("tianrui0871338ce2bddd34fd02a0c383d0b73a" + timestamp);
if (yzm.ToLower() != sign.ToLower())
{
return false;
}
return true;
}
public static string GenerateMD5(string txt)
{
using (MD5 mi = MD5.Create())
{
byte[] buffer = Encoding.Default.GetBytes(txt);
//开始加密
byte[] newBuffer = mi.ComputeHash(buffer);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < newBuffer.Length; i++)
{
sb.Append(newBuffer[i].ToString("x2"));
}
return sb.ToString();
}
}
public static string Decrypt3Des1(string aStrString, string aStrKey, CipherMode mode = CipherMode.ECB, string iv = "")
{
try
{
var des = new TripleDESCryptoServiceProvider
{
Key = Encoding.UTF8.GetBytes(aStrKey),
Mode = mode,
Padding = PaddingMode.PKCS7
};
if (mode == CipherMode.CBC)
{
des.IV = Encoding.UTF8.GetBytes(iv);
}
var desDecrypt = des.CreateDecryptor();
var result = "";
byte[] buffer = Convert.FromBase64String(aStrString);
result = Encoding.UTF8.GetString(desDecrypt.TransformFinalBlock(buffer, 0, buffer.Length));
return result;
}
catch (Exception e)
{
return string.Empty;
}
}
public static SqlConnection Connection
{
get
{
string con = "";
//System.Configuration.Configuration cm = System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.BaseDirectory + "\\local.ext");
//con = cm.AppSettings.Settings["zbbodycheck"].Value;
con = System.Configuration.ConfigurationManager.ConnectionStrings["tjconn"].ConnectionString;
if (connection == null)
{
connection = new SqlConnection(con);
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}
public static DataTable GetDataSet(string safeSql)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
}
}