Beispiel #1
0
        private ETCPaymentRecord CreateRecord(GetOBUInfoResponse obuInfo, 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         = obuInfo.OBUID,
                OBUNO         = obuInfo.OBUNO,
                CardNo        = obuInfo.CardNo,
                CashMoney     = writeInfo.CashMoney,
                Balance       = writeInfo.Balance,
                TradeDevice   = 0,
                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 ? obuInfo.CardPlate : null,
                ExVehType     = IsExit ? obuInfo.CardVehClass : "255",
                ExVehClass    = IsExit ? obuInfo.CardVehUserType : "255",
                EnTime        = IsExit ? obuInfo.PassTime : DateTime.Now.ToString("yyyyMMddHHmmss"),
                EnOperatorNo  = IsExit ? obuInfo.OperatorNo : "ffff",
                EnAreaNo      = IsExit ? obuInfo.CardAreaNo : AreaNo,
                EnGateNo      = IsExit ? obuInfo.CardGateNo : GateNo,
                EnLaneNo      = IsExit ? obuInfo.CardLaneNo : LaneNo,
                EnVehPlate    = IsExit ? obuInfo.VehPlate : obuInfo.CardPlate,
                EnVehType     = IsExit ? obuInfo.VehType : obuInfo.CardVehClass,
                EnVehClass    = IsExit ? obuInfo.VehClass : obuInfo.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);
        }
Beispiel #2
0
        /// <summary>
        /// 进行天线扣款操作
        /// </summary>
        /// <param name="money"></param>
        /// <returns></returns>
        public WriteCardResponse RSUWrite(GetOBUInfoResponse 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
            {
                OBUID           = r.OBUID,
                OBUNO           = r.OBUNO,
                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.RSUWrite(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);
        }
Beispiel #3
0
        private WriteCardResponse RSUWriteCard(GetOBUInfoResponse 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,
                    OBUID           = r.OBUID,
                    OBUNO           = r.OBUNO,
                    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,
                    RSUID           = EcRSUID
                };

                n = ETCInterop.RSUWriteCard_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,
                    OBUID      = r.OBUID,
                    OBUNO      = r.OBUNO,
                    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",
                    RSUID      = EcRSUID
                };
                n = ETCInterop.RSUWriteCard(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 == -1328)             //半条记录的情况,需要验证
            {
                response = new StringBuilder(1000); //重新创建一个,用来接收消息
                var request = new
                {
                    UserName      = UserName,
                    ProvinceNo    = ProvinceNo,
                    CityNo        = CityNo,
                    AreaNo        = AreaNo,
                    GateNo        = GateNo,
                    LaneNo        = LaneNo,
                    OBUID         = r.OBUID,
                    OBUNO         = r.OBUNO,
                    CardNo        = r.CardNo,
                    RelyServiceNo = ret.KeyServiceNo,
                    RSUID         = EcRSUID
                };
                n = ETCInterop.RSUTransActionProve(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);
        }