HospitalPay-Go/doc/建新接口代码.txt
2025-05-28 16:19:21 +08:00

884 lines
19 KiB
Plaintext

// SocketServiceForm.ClientConnection
using System;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using JXHospitalWSBLL;
using SocketServiceForm;
public class ClientConnection
{
private Thread threadClient;
private Socket socket;
private Form1 frmMain;
private bool doesClose;
public ClientConnection(Form1 f1, Socket socket)
{
frmMain = f1;
this.socket = socket;
threadClient = new Thread(MoniterMsg);
threadClient.IsBackground = true;
threadClient.Start();
}
private void MoniterMsg()
{
while (!doesClose)
{
try
{
byte[] byteMsgRec = new byte[4194304];
int length = socket.Receive(byteMsgRec, byteMsgRec.Length, SocketFlags.None);
if (length > 0)
{
string strMsgRec = Encoding.UTF8.GetString(byteMsgRec, 0, length);
ShowMsg("从" + socket.RemoteEndPoint.ToString() + "接收消息:" + strMsgRec);
strMsgRec.Substring(0, 4);
string _JXsendObj = strMsgRec.Substring(4, strMsgRec.Length - 4);
string _fun = _JXsendObj.Substring(0, 4);
string _obj = _JXsendObj.Substring(35, _JXsendObj.Length - 35);
switch (_fun)
{
case "0001":
SendMsg(JXHospitalBLL.CriminalIn(_obj));
break;
case "0002":
SendMsg(JXHospitalBLL.CriminalConsumedQuota(_obj));
break;
case "0003":
SendMsg(JXHospitalBLL.CriminalOut(_obj));
break;
case "0004":
SendMsg(JXHospitalBLL.CriminalConsume(_obj));
break;
case "0005":
SendMsg(JXHospitalBLL.RealTimeBalance(_obj));
break;
case "0006":
SendMsg(JXHospitalBLL.SynInvoiceResult(_obj));
break;
case "0007":
SendMsg(JXHospitalBLL.MonitorSocketResult(_obj));
break;
case "0008":
SendMsg(JXHospitalBLL.CancelOrderResult(_obj));
break;
}
}
Close();
}
catch (Exception ex)
{
if (socket != null)
{
ShowErr("客户端" + socket.RemoteEndPoint.ToString() + "断开连接:", ex);
}
frmMain.RemoveListItem(socket.RemoteEndPoint.ToString());
return;
}
}
}
private void ShowErr(string msg, Exception ex)
{
frmMain.ShowErr(msg, ex);
}
private void ShowMsg(string msg)
{
frmMain.ShowReqTxt(msg);
}
public void SendMsg(string msg)
{
try
{
byte[] msgSendByte = Encoding.UTF8.GetBytes(Encoding.UTF8.GetBytes(msg).Length.ToString("0000") + msg);
socket.Send(msgSendByte);
ShowMsg("发送消息:" + Encoding.UTF8.GetString(msgSendByte, 0, msgSendByte.Length));
}
catch (Exception ex)
{
ShowErr("发送消息:", ex);
}
}
public void Close()
{
doesClose = true;
threadClient.Abort();
socket.Shutdown(SocketShutdown.Both);
socket.Close();
socket = null;
}
}
// JXHospitalWSBLL.JXHospitalBLL
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web.Script.Serialization;
using JXHospitalWSBLL;
using JXHospitalWSDAL;
public class JXHospitalBLL
{
public static string GetSocketIp()
{
return ConfigurationManager.ConnectionStrings["SocketIP"].ConnectionString;
}
public static string GetSocketPort()
{
return ConfigurationManager.ConnectionStrings["SocketPort"].ConnectionString;
}
public static string CriminalIn(string FCode)
{
ResponCriminalIn re = new ResponCriminalIn();
JavaScriptSerializer jss = new JavaScriptSerializer();
ReqFCode _fcode = jss.Deserialize<ReqFCode>(FCode);
string errorMsg = "";
string errorCode = "";
try
{
using JXHospitalWSDBDataContextCustom db = new JXHospitalWSDBDataContextCustom();
re.ResultData = (from b in db.T_Criminal
join c in db.T_Criminal_card on b.FCode equals c.fcrimecode into temp
from tt in temp.DefaultIfEmpty()
where b.FCode.Equals(_fcode.FCode)
select new CriminalEntity
{
AmountB = ((tt == null) ? 0m : tt.AmountB.Value),
AmountC = ((tt == null) ? 0m : tt.AmountC.Value),
AmountA = ((tt == null) ? 0m : tt.AmountA.Value),
BankAccNo = tt.BankAccNo,
BankAmount = ((tt.BankAmount == null) ? 0m : tt.BankAmount.Value),
FCode = b.FCode,
FName = b.FName,
Fflag = (b.fflag.HasValue ? b.fflag.Value : 0),
Flimitflag = (b.flimitflag.HasValue ? b.flimitflag.Value : 0),
Flimitamt = (b.flimitamt.HasValue ? b.flimitamt.Value : 0m)
}).FirstOrDefault();
if (re.ResultData == null)
{
re.ResultCode = "0005";
re.ResultData = new CriminalEntity();
}
else if (re.ResultData.Fflag == 1)
{
re.ResultCode = "0007";
re.ResultData = new CriminalEntity();
}
else
{
db.proc_CriminalInHospital(_fcode.FCode, ref errorMsg, ref errorCode);
if (errorCode == "1")
{
re.ResultCode = "0000";
}
else
{
re.ResultCode = "0006";
re.ResultData = new CriminalEntity();
}
}
}
catch (Exception)
{
re.ResultCode = "0008";
re.ResultData = new CriminalEntity();
}
return jss.Serialize(re);
}
public static string CriminalConsumedQuota(string FCode)
{
InvoiceEntity reModel = new InvoiceEntity();
JavaScriptSerializer jss = new JavaScriptSerializer();
ReqFCode _fcode = jss.Deserialize<ReqFCode>(FCode);
DateTime FirstDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
DateTime EndDate = DateTime.Parse(FirstDate.AddMonths(1).ToShortDateString()).AddSeconds(-1.0);
using (JXHospitalWSDBDataContextCustom db = new JXHospitalWSDBDataContextCustom())
{
proc_CriminalConsumedResult a = db.proc_CriminalConsumed(_fcode.FCode, FirstDate, EndDate).FirstOrDefault();
if (a != null)
{
InvoiceEntity invoiceEntity = new InvoiceEntity();
invoiceEntity.AmountA = Convert.ToDecimal((!a.AmountA.HasValue) ? new decimal?(0m) : a.AmountA);
invoiceEntity.AmountB = Convert.ToDecimal((!a.AmountB.HasValue) ? new decimal?(0m) : a.AmountB);
invoiceEntity.FreeAmountA = Convert.ToDecimal((!a.FreeAmountA.HasValue) ? new decimal?(0m) : a.FreeAmountA);
invoiceEntity.FreeAmountB = Convert.ToDecimal((!a.FreeAmountB.HasValue) ? new decimal?(0m) : a.FreeAmountB);
invoiceEntity.Checkflag = a.checkflag.Value;
invoiceEntity.FCode = a.fcrimecode;
invoiceEntity.FCriminal = a.fcriminal;
invoiceEntity.Flag = (a.Flag.HasValue ? a.Flag.Value : 0);
reModel = invoiceEntity;
}
}
return jss.Serialize(reModel);
}
public static string CriminalOut(string FCode)
{
ResultEntity reModel = new ResultEntity();
JavaScriptSerializer jss = new JavaScriptSerializer();
ReqFCode _fcode = jss.Deserialize<ReqFCode>(FCode);
string errorMsg = "";
string errorCode = "";
using (JXHospitalWSDBDataContextCustom db = new JXHospitalWSDBDataContextCustom())
{
db.proc_CriminalOutHospital(_fcode.FCode, ref errorMsg, ref errorCode);
if (errorCode == "1")
{
reModel.Result = true;
}
else
{
reModel.Result = false;
}
reModel.ReMsg = errorMsg;
}
return jss.Serialize(reModel);
}
public static string CriminalConsume(string reqModel)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ReqInoiveEntity _req = jss.Deserialize<ReqInoiveEntity>(reqModel);
ResponNormalModel reModel = new ResponNormalModel();
try
{
using (JXHospitalWSDBDataContextCustom db = new JXHospitalWSDBDataContextCustom())
{
T_Invoice t_Invoice = new T_Invoice();
t_Invoice.InvoiceNo = _req.InvoiceNo;
t_Invoice.CardCode = _req.CardCode;
t_Invoice.Amount = _req.Amount;
t_Invoice.AmountA = _req.AmountA;
t_Invoice.AmountB = _req.AmountB;
t_Invoice.Checkflag = 0;
t_Invoice.Crtby = "建新";
t_Invoice.Crtdate = _req.CrtDate;
t_Invoice.FCrimeCode = _req.FCode;
t_Invoice.FCriminal = _req.FCriminal;
t_Invoice.Flag = 1;
t_Invoice.FreeAmountA = _req.FreeAmountA;
t_Invoice.FreeAmountB = _req.FreeAmountB;
t_Invoice.OrderDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
t_Invoice.OrderId = _req.OrderId;
t_Invoice.PayDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
t_Invoice.PType = "建新消费";
t_Invoice.TypeFlag = 30;
t_Invoice.OrderStatus = 1;
t_Invoice.Fifoflag = -1;
T_Invoice invoice = t_Invoice;
db.T_Invoice.InsertOnSubmit(invoice);
var _criminal = (from crinimal in db.T_Criminal
join area in db.T_AREA on crinimal.FAreaCode equals area.FCode into temp
from tt in temp.DefaultIfEmpty()
where crinimal.FCode.Equals(_req.FCode)
select new
{
FAreaCode = ((crinimal.FAreaCode == null) ? "0" : crinimal.FAreaCode),
FAreaName = ((tt.FName == null) ? "0" : tt.FName)
}).FirstOrDefault();
if (_req.AmountA > 0m)
{
string vouno = "";
db.CREATESEQNO("vouno", 1, ref vouno);
T_Vcrd t_Vcrd = new T_Vcrd();
t_Vcrd.Vouno = "JXVouNo" + vouno;
t_Vcrd.CardCode = _req.CardCode;
t_Vcrd.FCrimeCode = _req.FCode;
t_Vcrd.DAmount = 0m;
t_Vcrd.CAmount = _req.AmountA;
t_Vcrd.CrtBy = "建新";
t_Vcrd.CrtDate = DateTime.Now;
t_Vcrd.DType = "建新消费";
t_Vcrd.Depositer = "";
t_Vcrd.Flag = 0;
t_Vcrd.FCriminal = _req.FCriminal;
t_Vcrd.Frealareacode = "";
t_Vcrd.FrealAreaName = "";
t_Vcrd.PType = "";
t_Vcrd.UDate = DateTime.Now;
t_Vcrd.OrigId = _req.InvoiceNo;
t_Vcrd.CardType = 0;
t_Vcrd.TypeFlag = 30;
t_Vcrd.AccType = 0;
t_Vcrd.BankFlag = 0;
t_Vcrd.CheckFlag = 0;
t_Vcrd.pc = 0;
t_Vcrd.FAreaCode = _criminal.FAreaCode;
t_Vcrd.FAreaName = _criminal.FAreaName;
t_Vcrd.FinancePayFlag = 0;
T_Vcrd vcrd = t_Vcrd;
db.T_Vcrd.InsertOnSubmit(vcrd);
}
if (_req.AmountB > 0m)
{
string vouno2 = "";
db.CREATESEQNO("vouno", 1, ref vouno2);
T_Vcrd t_Vcrd2 = new T_Vcrd();
t_Vcrd2.Vouno = "JXVouNo" + vouno2;
t_Vcrd2.CardCode = _req.CardCode;
t_Vcrd2.FCrimeCode = _req.FCode;
t_Vcrd2.DAmount = 0m;
t_Vcrd2.CAmount = _req.AmountB;
t_Vcrd2.CrtBy = "建新";
t_Vcrd2.CrtDate = DateTime.Now;
t_Vcrd2.DType = "建新消费";
t_Vcrd2.Depositer = "";
t_Vcrd2.Flag = 0;
t_Vcrd2.FCriminal = _req.FCriminal;
t_Vcrd2.Frealareacode = "";
t_Vcrd2.FrealAreaName = "";
t_Vcrd2.PType = "";
t_Vcrd2.UDate = DateTime.Now;
t_Vcrd2.OrigId = _req.InvoiceNo;
t_Vcrd2.CardType = 0;
t_Vcrd2.TypeFlag = 30;
t_Vcrd2.AccType = 1;
t_Vcrd2.BankFlag = 0;
t_Vcrd2.CheckFlag = 0;
t_Vcrd2.pc = 0;
t_Vcrd2.FAreaCode = _criminal.FAreaCode;
t_Vcrd2.FAreaName = _criminal.FAreaName;
t_Vcrd2.FinancePayFlag = 0;
T_Vcrd vcrd2 = t_Vcrd2;
db.T_Vcrd.InsertOnSubmit(vcrd2);
}
T_Criminal_card a = db.T_Criminal_card.Where((T_Criminal_card b) => b.fcrimecode.Equals(_req.FCode)).FirstOrDefault();
a.AmountA -= (decimal?)_req.AmountA;
a.AmountB -= (decimal?)_req.AmountB;
a.BankAmount = a.AmountA + a.AmountB + a.AmountC;
db.SubmitChanges();
}
reModel.ResultCode = "0000";
reModel.ResultMsg = "";
}
catch (Exception ex)
{
reModel.ResultCode = "0008";
reModel.ResultMsg = ex.Message;
}
return jss.Serialize(reModel);
}
public static string RealTimeBalance(string FCode)
{
ResponCriminalIn rspModel = new ResponCriminalIn();
JavaScriptSerializer jss = new JavaScriptSerializer();
ReqFCode _fcode = jss.Deserialize<ReqFCode>(FCode);
try
{
using JXHospitalWSDBDataContextCustom db = new JXHospitalWSDBDataContextCustom();
T_Criminal_card a = db.T_Criminal_card.Where((T_Criminal_card b) => b.fcrimecode.Equals(_fcode.FCode)).FirstOrDefault();
if (a != null)
{
rspModel.ResultData = new CriminalEntity
{
AmountA = (a.AmountA.HasValue ? a.AmountA.Value : 0m),
AmountB = (a.AmountB.HasValue ? a.AmountB.Value : 0m),
AmountC = (a.AmountC.HasValue ? a.AmountC.Value : 0m),
BankAccNo = a.BankAccNo,
BankAmount = (a.BankAmount.HasValue ? a.BankAmount.Value : 0m),
FCode = a.fcrimecode
};
}
rspModel.ResultCode = "0000";
}
catch (Exception)
{
rspModel.ResultCode = "0008";
rspModel.ResultData = new CriminalEntity();
}
return jss.Serialize(rspModel);
}
public static string SynInvoiceResult(string InvoiceNoList)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
RsponEntity _rsp = new RsponEntity();
_rsp.ResultData = new List<RspVcrdEntity>();
List<string> _req = jss.Deserialize<List<string>>(InvoiceNoList);
try
{
using JXHospitalWSDBDataContextCustom db = new JXHospitalWSDBDataContextCustom();
var reList = (from a in db.T_Vcrd
where _req.Contains(a.OrigId)
group a by new { a.CardCode, a.FCrimeCode, a.BankFlag, a.OrigId, a.SendDate } into b
select new
{
cardcode = b.Key.CardCode,
fcrimecode = b.Key.FCrimeCode,
CAMOUNT = b.Sum((T_Vcrd c) => c.CAmount),
Bankflag = b.Key.BankFlag,
origid = b.Key.OrigId,
SendDate = b.Key.SendDate
}).ToList();
if (reList.Count > 0)
{
foreach (var re in reList)
{
_rsp.ResultData.Add(new RspVcrdEntity
{
BankFlag = (re.Bankflag.HasValue ? re.Bankflag.Value : 0),
CAmount = (re.CAMOUNT.HasValue ? re.CAMOUNT.Value : 0m),
FCode = re.fcrimecode,
Origid = re.origid,
SendDate = (re.SendDate.HasValue ? re.SendDate.Value : DateTime.Now)
});
}
}
else
{
_rsp.ResultData = new List<RspVcrdEntity>();
}
_rsp.ResultCode = "0000";
}
catch (Exception)
{
_rsp.ResultCode = "0008";
_rsp.ResultData = new List<RspVcrdEntity>();
}
return jss.Serialize(_rsp);
}
public static string MonitorSocketResult(string ReqData)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ResponNormalModel responNormalModel = new ResponNormalModel();
responNormalModel.ResultCode = "0000";
responNormalModel.ResultMsg = "";
ResponNormalModel _rsp = responNormalModel;
return jss.Serialize(_rsp);
}
public static string CancelOrderResult(string ReqData)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ResponNormalModel responNormalModel = new ResponNormalModel();
responNormalModel.ResultCode = "0000";
responNormalModel.ResultMsg = "";
ResponNormalModel _rsp = responNormalModel;
return jss.Serialize(_rsp);
}
}
// JXHospitalWSBLL.ResponNormalModel
public class ResponNormalModel
{
private string _ResultCode;
private string _ResultMsg;
public string ResultCode
{
get
{
return _ResultCode;
}
set
{
_ResultCode = value;
}
}
public string ResultMsg
{
get
{
return _ResultMsg;
}
set
{
_ResultMsg = value;
}
}
}
// JXHospitalWSBLL.RspVcrdEntity
using System;
public class RspVcrdEntity
{
private int _BankFlag;
private decimal _CAmount;
private string _FCode;
private string _Origid;
private DateTime _SendDate;
public int BankFlag
{
get
{
return _BankFlag;
}
set
{
_BankFlag = value;
}
}
public decimal CAmount
{
get
{
return _CAmount;
}
set
{
_CAmount = value;
}
}
public string FCode
{
get
{
return _FCode;
}
set
{
_FCode = value;
}
}
public string Origid
{
get
{
return _Origid;
}
set
{
_Origid = value;
}
}
public DateTime SendDate
{
get
{
return _SendDate;
}
set
{
_SendDate = value;
}
}
}
// JXHospitalWSBLL.CriminalEntity
public class CriminalEntity
{
private string _FCode;
private string _FName;
private decimal _AmountA;
private int _fflag;
private decimal _AmountB;
private string _BankAccNo;
private decimal _BankAmount;
private decimal _AmountC;
private int _flimitflag;
private decimal _flimitamt;
public string FCode
{
get
{
return _FCode;
}
set
{
_FCode = value;
}
}
public string FName
{
get
{
return _FName;
}
set
{
_FName = value;
}
}
public decimal AmountA
{
get
{
return _AmountA;
}
set
{
_AmountA = value;
}
}
public int Fflag
{
get
{
return _fflag;
}
set
{
_fflag = value;
}
}
public decimal AmountB
{
get
{
return _AmountB;
}
set
{
_AmountB = value;
}
}
public string BankAccNo
{
get
{
return _BankAccNo;
}
set
{
_BankAccNo = value;
}
}
public decimal BankAmount
{
get
{
return _BankAmount;
}
set
{
_BankAmount = value;
}
}
public decimal AmountC
{
get
{
return _AmountC;
}
set
{
_AmountC = value;
}
}
public int Flimitflag
{
get
{
return _flimitflag;
}
set
{
_flimitflag = value;
}
}
public decimal Flimitamt
{
get
{
return _flimitamt;
}
set
{
_flimitamt = value;
}
}
}
// JXHospitalWSBLL.ReqInoiveEntity
using System;
public class ReqInoiveEntity
{
private string _FCode;
private string _InvoiceNo;
private decimal _AmountA;
private decimal _AmountB;
private decimal _Amount;
private decimal _FreeAmountA;
private decimal _FreeAmountB;
private DateTime _CrtDate;
private string _FCriminal;
private string _CardCode;
private int _OrderId;
public string FCode
{
get
{
return _FCode;
}
set
{
_FCode = value;
}
}
public string InvoiceNo
{
get
{
return _InvoiceNo;
}
set
{
_InvoiceNo = value;
}
}
public decimal AmountA
{
get
{
return _AmountA;
}
set
{
_AmountA = value;
}
}
public decimal AmountB
{
get
{
return _AmountB;
}
set
{
_AmountB = value;
}
}
public decimal Amount
{
get
{
return _Amount;
}
set
{
_Amount = value;
}
}
public decimal FreeAmountA
{
get
{
return _FreeAmountA;
}
set
{
_FreeAmountA = value;
}
}
public decimal FreeAmountB
{
get
{
return _FreeAmountB;
}
set
{
_FreeAmountB = value;
}
}
public DateTime CrtDate
{
get
{
return _CrtDate;
}
set
{
_CrtDate = value;
}
}
public string FCriminal
{
get
{
return _FCriminal;
}
set
{
_FCriminal = value;
}
}
public string CardCode
{
get
{
return _CardCode;
}
set
{
_CardCode = value;
}
}
public int OrderId
{
get
{
return _OrderId;
}
set
{
_OrderId = value;
}
}
}