private ETCPaymentRecord CreateRecord(GetCardInfoResponse cardInfo, WriteCardResponse writeInfo) { var ret = new ETCPaymentRecord() { ListType = IsExit ? 1 : 0, ListNo = string.Format("{0}{1}{2}{3}{4}{5}{6}", ProvinceNo, CityNo, AreaNo, GateNo, LaneNo, DateTime.Now.ToString("yyyyMMddHHmmss"), "00"), KeyServiceNo = writeInfo.KeyServiceNo, TradeType = writeInfo.TradeType, TermCode = writeInfo.TermCode, TermTradeNo = writeInfo.TermTradeNo, CardTradeNo = writeInfo.CardTradeNo, Tac = writeInfo.Tac, OBUID = null, OBUNO = null, CardNo = cardInfo.CardNo, CashMoney = writeInfo.CashMoney, Balance = writeInfo.Balance, TradeDevice = 1, VehPicture = null, VehPictureLen = 0, SquadDate = DateTime.Today.ToString("yyyyMMdd"), ShiftID = DateTime.Today.ToString("yyMMdd"), ExTime = IsExit ? DateTime.Now.ToString("yyyyMMddHHmmss") : null, ExAreaNo = IsExit ? AreaNo : null, ExGateNo = IsExit ? GateNo : null, ExLaneNo = IsExit ? LaneNo : null, ExOperatorNo = IsExit ? "ffff" : null, ExVehPlate = IsExit ? cardInfo.CardPlate : null, ExVehType = IsExit ? cardInfo.CardVehClass : "255", ExVehClass = IsExit ? cardInfo.CardVehUserType : "255", EnTime = IsExit ? cardInfo.PassTime : DateTime.Now.ToString("yyyyMMddHHmmss"), EnOperatorNo = IsExit ? cardInfo.OperatorNo : "000001", EnAreaNo = IsExit ? cardInfo.CardAreaNo : AreaNo, EnGateNo = IsExit ? cardInfo.CardGateNo : GateNo, EnLaneNo = IsExit ? cardInfo.CardLaneNo : LaneNo, EnVehPlate = IsExit ? cardInfo.VehPlate : cardInfo.CardPlate, EnVehType = IsExit ? cardInfo.VehType : cardInfo.CardVehClass, EnVehClass = IsExit ? cardInfo.VehClass : cardInfo.CardVehUserType, }; if (!string.IsNullOrEmpty(ret.ExGateNo) && ret.ExGateNo.Length > 2) { ret.ExGateNo = ret.ExGateNo.Substring(2); } if (!string.IsNullOrEmpty(ret.ExLaneNo) && ret.ExLaneNo.Length > 2) { ret.ExLaneNo = ret.ExLaneNo.Substring(2); } if (!string.IsNullOrEmpty(ret.EnGateNo) && ret.EnGateNo.Length > 2) { ret.EnGateNo = ret.EnGateNo.Substring(2); } if (!string.IsNullOrEmpty(ret.EnLaneNo) && ret.EnLaneNo.Length > 2) { ret.EnLaneNo = ret.EnLaneNo.Substring(2); } return(ret); }
/// <summary> /// 进行读卡扣款操作 /// </summary> /// <param name="money"></param> /// <returns></returns> public WriteCardResponse ReaderWrite(GetCardInfoResponse r, int money, bool isExit, out ETCPaymentList record) { int n = -1; record = null; WriteCardResponse ret = null; int plen = 3000; StringBuilder response = new StringBuilder(plen); var request = new { CardNo = r.CardNo, CashMoney = money.ToString(), CardAreaNo = AreaNo, CardGateNo = GateNo.PadLeft(4, '0'), CardLaneNo = LaneNo.PadLeft(4, '0'), PassTime = DateTime.Now.ToString("yyyyMMddHHmmss"), VehPlate = r.CardPlate, VehType = r.CardVehClass, VehClass = r.CardVehUserType, OutFlag = isExit ? "1" : "0", OperatorNo = "ffff", LittleGateNo = r.LittleGateNo, LittleLaneNo = r.LittleLaneNo, LittlePassTime = r.LittlePassTime, LittleCashMoney = r.LittleCashMoney, LittleTime = r.LittleTime, OfferType = r.OfferType, OfferTime = r.OfferTime, BackUp = r.BackUp == null ? string.Empty : r.BackUp, //不能传NULL CheckCode = r.CheckCode, }; n = ETCInterop.ReaderWrite(int.Parse(LaneNo), JsonConvert.SerializeObject(request), response, ref plen); if (n != 0) { return new WriteCardResponse() { ErrorCode = n } } ; ret = JsonConvert.DeserializeObject <WriteCardResponse>(response.ToString()); ret.Content = response.ToString(); if (ret.ErrorCode == 0) { ret.CashMoney = money; //这两个属性返回串中没有,人为加上去,后面有用! ret.Balance = r.Balance - money; record = CreateRecord(r, ret, isExit); } return(ret); }
public void ProcessRequest(HttpContext context) { try { GetCardInfoRequest parm = new GetCardInfoRequest(); using (StreamReader sr = new StreamReader(context.Request.InputStream)) { String data = sr.ReadToEnd(); parm = new JavaScriptSerializer().Deserialize <GetCardInfoRequest>(data); } GetCardInfoResponse ap = new GetCardInfoResponse(); using (DLSMEntities db = new DLSMEntities()) { db.Database.Connection.Open(); using (var dbContextTransaction = db.Database.BeginTransaction()) { try { var result = db.sp_ApiGetCardInfo(parm.WH_ID, parm.staffId, parm.cardEIN).ToList(); if (result.Count() > 0) { db.SaveChanges(); dbContextTransaction.Commit(); ap.addrNo = result[0].addrNo; ap.ampDesc = result[0].ampDesc; ap.ampDescEng = result[0].ampDescEng; ap.birthDateStr = result[0].birthDateStr; ap.birthFlag = result[0].birthFlag; ap.distDesc = result[0].distDesc; ap.distDescEng = result[0].distDescEng; ap.docNo = result[0].docNo; ap.docType = result[0].docType; ap.reqMasRef = result[0].reqMasRef; ap.expDateStr = result[0].expDateStr; ap.fname = result[0].fname; ap.fnameEng = result[0].fnameEng; ap.issDateStr = result[0].issDateStr; ap.issOffLocCode = result[0].issOffLocCode; ap.lane = result[0].lane; ap.lname = result[0].lname; ap.lnameEng = result[0].lnameEng; ap.locFullDesc = result[0].locFullDesc; ap.natDesc = result[0].natDesc; ap.offLocDesc = result[0].offLocDesc; ap.offLocEngDesc = result[0].offLocEngDesc; ap.offRegDesc = result[0].offRegDesc; ap.offRegEngDesc = result[0].offRegEngDesc; ap.pcNo = result[0].pcNo; ap.pltCode = result[0].pltCode; ap.pltDesc = result[0].pltDesc; ap.pltEngDesc = result[0].pltEngDesc; ap.pltNo = result[0].pltNo; ap.pltPrnDesc = result[0].pltPrnDesc; ap.prevExpDateStr = result[0].prevExpDateStr; ap.prevIssDateStr = result[0].prevIssDateStr; ap.prevOffLocDesc = result[0].prevOffLocDesc; ap.prevOffRegDesc = result[0].prevOffRegDesc; ap.prevOffRegEngDesc = result[0].prevOffRegEngDesc; ap.prevPltDesc = result[0].prevPltDesc; ap.prevPltNo = result[0].prevPltNo; ap.prvCode = result[0].prvCode; ap.prvDesc = result[0].prvDesc; ap.prvDescEng = result[0].prvDescEng; ap.rcpNo = result[0].rcpNo; ap.reqDateStr = result[0].reqDateStr; ap.reqNo = result[0].reqNo; ap.reqTrDesc = result[0].reqTrDesc; ap.sex = result[0].sex; ap.soi = result[0].soi; ap.street = result[0].street; ap.titleAbrev = result[0].titleAbrev; ap.titleDesc = result[0].titleDesc; ap.titleEngAbrev = result[0].titleEngAbrev; ap.villageNo = result[0].villageNo; ap.zipCode = result[0].zipCode; ap.alienFlag = result[0].alienFlag; ap.ccFlag = result[0].ccFlag; ap.DCICode = result[0].DCICode; ap.conditionDesc = result[0].conditionDesc; ap.organDonateFlag = result[0].organDonateFlag; ap.TRSFlag = result[0].TRSFlag; ap.firstIssueDateStr = result[0].firstIssueDateStr; ap.pltDescShort = result[0].pltDescShort; ap.pltNo1 = result[0].pltNo1; ap.pltNo2 = result[0].pltNo2; ap.prevPltDescShort = result[0].prevPltDescShort; ap.prevPltNo1 = result[0].prevPltNo1; ap.prevPltNo2 = result[0].prevPltNo2; ap.pltNoEng = result[0].pltNoEng; ap.workstationId = result[0].workstationId; ap.productType = result[0].productType; ap.CardEIN = result[0].CardEIN; ap.qrCode = result[0].qrCode; ap.cardStatus = result[0].cardStatus; // 1: ดี , 2: เสีย, 3: ไม่พิมพ์ ap.startPrintDttmStr = result[0].startPrintDttmStr; ap.finishPrintDttmStr = result[0].finishPrintDttmStr; ap.person_image = result[0].PartData; ap.message = "OK"; ap.resultCode = "1"; } else { dbContextTransaction.Rollback(); ap.resultCode = "0"; ap.message = "not found"; } } catch (Exception ex) { dbContextTransaction.Rollback(); ap.resultCode = "0"; ap.message = ex.InnerException == null ? (ex.Message == null ? "Error: GetCardInfo catch 2" : ex.Message) : ex.InnerException.Message + " StackTrace:" + ex.StackTrace; } } } string json = new JavaScriptSerializer().Serialize(ap); context.Response.ContentType = "text/javascript"; context.Response.Write(json); } catch (Exception ex) { GetCardInfoResponse ap = new GetCardInfoResponse(); ap.resultCode = "0"; ap.message = ex.InnerException == null ? (ex.Message == null ? "Error: GetCardInfo catch 1" : ex.Message) : ex.InnerException.Message + " StackTrace:" + ex.StackTrace; string json = new JavaScriptSerializer().Serialize(ap); context.Response.ContentType = "text/javascript"; context.Response.Write(json); } }
private WriteCardResponse CardReaderWriteCard(GetCardInfoResponse r, int money, out ETCPaymentRecord record) { int n = -1; record = null; WriteCardResponse ret = null; StringBuilder response = new StringBuilder(3000); if (UseInGD) { var request = new { UserName = UserName, PassWord = Password, ProvinceNo = ProvinceNo, CityNo = CityNo, AreaNo = AreaNo, GateNo = GateNo, LaneNo = LaneNo, CardNo = r.CardNo, CashMoney = money.ToString(), CardAreaNo = AreaNo, CardGateNo = GateNo.PadLeft(4, '0'), CardLaneNo = LaneNo.PadLeft(4, '0'), PassTime = DateTime.Now.ToString("yyyyMMddHHmmss"), VehPlate = r.CardPlate, VehType = r.CardVehClass, VehClass = r.CardVehUserType, OutFlag = IsExit ? "1" : "0", OperatorNo = "ffff", LittleGateNo = r.LittleGateNo, LittleLaneNo = r.LittleLaneNo, LittlePassTime = r.LittlePassTime, LittleCashMoney = r.LittleCashMoney, LittleTime = r.LittleTime, OfferType = r.OfferType, OfferTime = r.OfferTime, BackUp = r.BackUp == null ? string.Empty : r.BackUp, //不能传NULL CheckCode = r.CheckCode, ReaderID = EcReaderID }; n = ETCInterop.CardReaderWriteCard_GD(int.Parse(LaneNo), JsonConvert.SerializeObject(request), response); if (n != 0) { return new WriteCardResponse() { ErrorCode = n } } ; ret = JsonConvert.DeserializeObject <WriteCardResponse>(response.ToString()); ret.Content = response.ToString(); } else { var request = new { UserName = UserName, PassWord = Password, ProvinceNo = ProvinceNo, CityNo = CityNo, AreaNo = AreaNo, GateNo = GateNo, LaneNo = LaneNo, CardNo = r.CardNo, CashMoney = money, CardAreaNo = AreaNo, CardGateNo = GateNo.PadLeft(4, '0'), CardLaneNo = LaneNo.PadLeft(4, '0'), PassTime = DateTime.Now.ToString("yyyyMMddHHmmss"), VehPlate = r.CardPlate, VehType = r.CardVehClass, VehClass = r.CardVehUserType, OutFlag = IsExit ? "1" : "0", OperatorNo = "ffff", ReaderID = EcReaderID }; n = ETCInterop.CardReaderWriteCard(int.Parse(LaneNo), JsonConvert.SerializeObject(request), response); if (n != 0) { return new WriteCardResponse() { ErrorCode = n } } ; ret = JsonConvert.DeserializeObject <WriteCardResponse>(response.ToString()); ret.Content = response.ToString(); } if (ret.ErrorCode == -2320) //半条记录的情况,需要验证 { response = new StringBuilder(1000); var request = new { UserName = UserName, ProvinceNo = ProvinceNo, CityNo = CityNo, AreaNo = AreaNo, GateNo = GateNo, LaneNo = LaneNo, CardNo = r.CardNo, RelyServiceNo = ret.KeyServiceNo, ReaderID = EcReaderID }; n = ETCInterop.CardReaderTransActionProve(int.Parse(LaneNo), JsonConvert.SerializeObject(request), response); if (n != 0) { return new WriteCardResponse { ErrorCode = n } } ; ret = JsonConvert.DeserializeObject <WriteCardResponse>(response.ToString()); ret.Content = response.ToString(); } if (ret.ErrorCode == 0) { ret.CashMoney = money; //这两个属性返回串中没有,人为加上去,后面有用! ret.Balance = r.Balance - money; record = CreateRecord(r, ret); } return(ret); }