Пример #1
0
        public IHttpActionResult ChargeOpenGate(FreeOpenGateRequest model)
        {
            //考虑用异步的接口,然后实现返回拍照后的图片地址
            ResponseBaseCommon response = new ResponseBaseCommon()
            {
                IsSuccess      = true,
                MessageCode    = (int)ApiBaseErrorCode.API_SUCCESS,
                MessageContent = ApiBaseErrorCode.API_SUCCESS.ToString()
            };

            if (string.IsNullOrWhiteSpace(model.ParkingCode) ||
                string.IsNullOrWhiteSpace(model.DeviceIdentify) || //设备标识
                string.IsNullOrWhiteSpace(model.CarNo) ||
                string.IsNullOrWhiteSpace(model.TolloPerator))
            {
                response.IsSuccess      = false;
                response.MessageCode    = (int)ApiBaseErrorCode.API_PARAM_ERROR;
                response.MessageContent = "必要参数缺失,请检查";
                return(Ok(response));
            }

            FreeOpenGateModel content = new FreeOpenGateModel()
            {
                ParkingCode    = model.ParkingCode,
                DeviceIdentify = model.DeviceIdentify,
                CarNo          = model.CarNo,
                TolloPerator   = model.TolloPerator,
                Remark         = model.Remark
            };

            if (!_openGateReasonManager.ChargeOpenGate(content))
            {
                response.IsSuccess      = false;
                response.MessageCode    = (int)ApiBaseErrorCode.API_FAIL;
                response.MessageContent = ApiBaseErrorCode.API_FAIL.ToString();
            }
            return(Ok(response));;
        }
Пример #2
0
        /// <summary>
        /// 免费放行(人工免费=应缴费金额)
        /// </summary>
        /// <param name="parkingCode">车编</param>
        /// <param name="carNumber">车牌号</param>
        /// <param name="tolloperator">操作员</param>
        /// <param name="deviceIdentify">设备标识</param>
        /// <returns></returns>
        public bool FreeOpenGate(FreeOpenGateModel model)
        {
            bool falg = false;

            try
            {
                //判断 是否有入场数据
                VehicleInOutModel entryModel = _iVehicleInOutContext.GetEntryRecord(model.CarNo, model.ParkingCode);
                if (entryModel != null)
                {
                    //通过主平台api接口读取停车费用信息
                    RequestFujicaStandard requestFujica = new RequestFujicaStandard();
                    //请求方法
                    string servername = "Park/GetTempCarPaymentInfoByCarNo";
                    //请求参数
                    Dictionary <string, object> dicParam = new Dictionary <string, object>();
                    dicParam["ParkingCode"] = model.ParkingCode;
                    dicParam["CarNo"]       = model.CarNo;
                    falg = requestFujica.RequestInterfaceV2(servername, dicParam);
                    if (falg)
                    {
                        string fujicaResult = requestFujica.FujicaResult;
                        if (!string.IsNullOrEmpty(fujicaResult))
                        {
                            Dictionary <string, object> tempResultDic = m_serializer.Deserialize <Dictionary <string, object> >(fujicaResult);
                            if (tempResultDic["Result"] != null)
                            {
                                fujicaResult = Convert.ToString(tempResultDic["Result"]);

                                Dictionary <string, object> dicFujicaResult = null;
                                dicFujicaResult = m_serializer.Deserialize <Dictionary <string, object> >(fujicaResult);
                                #region  线下临时卡缴费 添加
                                Dictionary <string, object> dicParam2 = new Dictionary <string, object>();
                                string servername2 = "CalculationCost/OfflinePayV2"; //添加线下临时卡缴费
                                dicParam2["CarType"]       = dicFujicaResult["CarType"].ToString();
                                dicParam2["AdmissionDate"] = Convert.ToDateTime(dicFujicaResult["BeginTime"].ToString());
                                // 计费开始时间 (算费接口返回的 最后一次缴费时间(如果缴费时间>1970说明有过缴费,否则就是入场时间)
                                dicParam2["BillingStartTime"] = Convert.ToDateTime(Convert.ToDateTime(dicFujicaResult["FinalPaymentTime"].ToString()).Year > 1970 ? dicFujicaResult["FinalPaymentTime"].ToString() : dicFujicaResult["BeginTime"].ToString());
                                dicParam2["BillingDeadline"]  = Convert.ToDateTime(dicFujicaResult["ChargeableTime"].ToString());
                                dicParam2["TollOperator"]     = model.TolloPerator;
                                dicParam2["PayStyle"]         = PaymentTypeEnum.SP4G;                                          //支付类型:G4车场
                                dicParam2["OrderType"]        = OrderTypeEnum.ReadyMoney;                                      //订单类型:现金支付
                                dicParam2["FreeAdmission"]    = Convert.ToDecimal(dicFujicaResult["ActualAmount"].ToString()); //人工免费
                                dicParam2["CarNo"]            = model.CarNo;
                                dicParam2["ParkingCode"]      = model.ParkingCode;
                                dicParam2["LineRecordCode"]   = dicFujicaResult["LineRecordCode"].ToString();
                                dicParam2["Amount"]           = Convert.ToDecimal(dicFujicaResult["ParkingFee"].ToString());
                                dicParam2["AmountTime"]       = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                                dicParam2["CouponList"]       = m_serializer.Deserialize <List <CouponCalculateView> >(dicFujicaResult["CouponList"].ToString());
                                dicParam2["DealNo"]           = "4G"; //值给4G,和小乔确认过
                                dicParam2["Remarks"]          = model.Remark;
                                falg = requestFujica.RequestInterfaceV2(servername2, dicParam2);
                                #endregion
                                falg = OpenGateToCamera(new OpenGateModel()
                                {
                                    DeviceIdentify = model.DeviceIdentify, OpenType = OpenTypeEnum.Free, Operator = model.TolloPerator, Remark = model.Remark
                                }, model.ParkingCode);
                            }
                        }
                    }
                    return(falg);
                }
                else
                {
                    return(falg);
                }
            }
            catch (Exception ex)
            {
                m_logger.LogFatal(LoggerLogicEnum.Bussiness, "", model.ParkingCode, model.CarNo, "Fujica.com.cn.Business.ParkLot.CarInOutManager.FreeOpenGate", "免费开闸时发生异常", ex.ToString());
                return(false);
            }
        }
Пример #3
0
        /// <summary>
        /// 手动开闸--出口未识别到车牌(添加到异常记录报表)
        ///         --出口识别到车牌(如果是临时车则添加免费临停车缴费记录)
        ///         --入口开闸 未识别到车牌 (添加到异常记录报表)
        /// </summary>
        /// <param name="model">异常开闸记录</param>
        /// <returns></returns>
        public bool OpenGate(OpenGateRecordModel model)
        {
            bool result = false;

            try
            {
                if (model.EntranceType == 1) //出口
                {
                    /// 404-禁止无牌车   407-无压地感车辆  加到 "异常开闸记录"
                    if ((model.ErrorCode != "404") || (model.ErrorCode != "407")) //识别到车牌
                    {
                        if (model.CarType == "0" && model.ErrorCode != "13")      //如果是临时车(并且有入场记录)则添加临停车缴费记录
                        {
                            FreeOpenGateModel freemodel = new FreeOpenGateModel()
                            {
                                ParkingCode    = model.ParkingCode,
                                DeviceIdentify = model.DeviceIdentify,
                                TolloPerator   = model.OpenGateOperator,
                                CarNo          = model.CarNo,
                                Remark         = model.Remark
                            };
                            result = ChargeOpenGate(freemodel);
                        }
                        else
                        {
                            result = AddOpenGateRecord(model);

                            // if(result) //先执行扣费
                            //{
                            //if (model.CarType == "2" && model.ErrorCode != "13") //如果是储值车(并且有入场记录)
                            //{
                            //    ValueCardFeeModel valueCardFeeModel = new ValueCardFeeModel()
                            //    {
                            //        ParkingCode=model.ParkingCode,
                            //        CarNo=model.CarNo
                            //    };
                            //    _cardServiceManager.GetValueCardFeeInfoByCarNo(valueCardFeeModel);
                            //}
                            //  }
                            //在发送出场命令
                            result = OpenGateToCamera(new OpenGateModel()
                            {
                                DeviceIdentify = model.DeviceIdentify, OpenType = OpenTypeEnum.Manual, Operator = model.OpenGateOperator, Remark = model.Remark
                            }, model.ParkingCode);
                        }
                    }
                    else //出口未识别到车牌
                    {
                        // 添加到异常记录报表
                        result = AddOpenGateRecord(model);
                        if (result)
                        {
                            result = OpenGateToCamera(new OpenGateModel()
                            {
                                DeviceIdentify = model.DeviceIdentify, OpenType = OpenTypeEnum.Manual, Operator = model.OpenGateOperator, Remark = model.Remark
                            }, model.ParkingCode);
                        }
                    }
                }
                else
                {
                    if ((model.ErrorCode == "404") || (model.ErrorCode == "407")) //入口 未识别到车牌 (添加到异常记录报表)
                    {
                        // 添加到异常记录报表
                        result = AddOpenGateRecord(model);
                    }
                    result = OpenGateToCamera(new OpenGateModel()
                    {
                        DeviceIdentify = model.DeviceIdentify, OpenType = OpenTypeEnum.Manual, Operator = model.OpenGateOperator, Remark = model.Remark
                    }, model.ParkingCode);
                }
                return(result);
            }
            catch (Exception ex)
            {
                m_logger.LogFatal(LoggerLogicEnum.Bussiness, "", model.ParkingCode, model.CarNo, "Fujica.com.cn.Business.ParkLot.CarInOutManager.OpenGate", "手动开闸时发生异常", ex.ToString());
                return(false);
            }
        }