예제 #1
0
        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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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);
        }