private void SendCurWorkStationImages(object status)
 {
     try
     {
         while (true)
         {
             DataSet ds = null;
             if (imageData.Count > 0)
             {
                 lock (imageData)
                     ds = imageData.Dequeue();
                 if (null != ds && ds.Tables[0].Rows.Count > 0)
                 {
                     var tempImg    = EngineContext.Current.Resolve <ICR_INOUT_RECODE_IMG>();
                     var recordTemp = EngineContext.Current.Resolve <ICR_INOUT_RECODE>();
                     foreach (DataRow row in ds.Tables[0].Rows)
                     {
                         //bool isSendImg = CommHelper.SendImg(row["IMG_URL"].ToString(), row["CHANNEL_TYPE"].ToString(), row["VEHICLE_NO"].ToString());
                         bool isSendImg = true;//CommHelper.SendImg(row["IMG_URL"].ToString(), row["CHANNEL_TYPE"].ToString());
                         if (isSendImg)
                         {
                             Parking.Core.Model.CR_INOUT_RECODE_IMG model = new CR_INOUT_RECODE_IMG();
                             model.ID           = row["ID"].ToString();
                             model.DEV_ID       = row["DEV_ID"].ToString();
                             model.CHANNEL_TYPE = row["CHANNEL_TYPE"].ToString();
                             model.CHANNEL_CODE = row["CHANNEL_CODE"].ToString();
                             model.CREATE_TIME  = DateTime.Parse(row["CREATE_TIME"].ToString());
                             model.IMG_TYPE     = int.Parse(row["IMG_TYPE"].ToString());
                             model.IMG_URL      = row["IMG_URL"].ToString();
                             model.ISSEND       = 1;
                             model.RECODE_ID    = row["RECODE_ID"].ToString();
                             tempImg.Update(model);
                         }
                     }
                 }
             }
             Thread.Sleep(1000);
         }
     }
     catch (Exception ex)
     {
         LogHelper.Log.Error(ex.ToString());
     }
 }
Beispiel #2
0
 public override void Process(ProcessRecord recordInfo)
 {
     recordInfo.CheckPointResult = true;
     try
     {
         var    chargesLogBll = EngineContext.Current.Resolve <ICR_CHARGES_LOG>();
         var    temp          = EngineContext.Current.Resolve <ICR_INOUT_RECODE>();
         var    tempImg       = EngineContext.Current.Resolve <ICR_INOUT_RECODE_IMG>();
         string Enter         = base.getCurrChannel(recordInfo).Enter;
         if (string.IsNullOrEmpty(Enter))
         {
             if (recordInfo.authenticationType == enumAuthenticationType.SPECIAL_TYPE_VIP)
             {
                 //贵¨?宾à?卡?§,ê?直?à接¨?写??一°?条??完a¨o整?记?录?
                 recordInfo.INOUT_RECODE.ID                 = Guid.NewGuid().ToString("N");
                 recordInfo.INOUT_RECODE.RECODE_STATUS      = 1;
                 recordInfo.INOUT_RECODE.IN_TIME            = recordInfo.REPORTIMG_TIME;
                 recordInfo.INOUT_RECODE.IN_FIELD_CODE      = recordInfo.FIELD_CODE;
                 recordInfo.INOUT_RECODE.IN_PARTITION_CODE  = recordInfo.PARTITION_CODE;
                 recordInfo.INOUT_RECODE.IN_CHANNEL_CODE    = recordInfo.CHN_CODE;
                 recordInfo.INOUT_RECODE.IN_DEV_ID          = recordInfo.DEV_CODE;
                 recordInfo.INOUT_RECODE.IN_OPERATOR_ID     = recordInfo.OPERATOR_ID;
                 recordInfo.INOUT_RECODE.IN_PARK_TYPE       = recordInfo.PARK_TYPE;
                 recordInfo.INOUT_RECODE.OUT_TIME           = recordInfo.REPORTIMG_TIME;
                 recordInfo.INOUT_RECODE.OUT_FIELD_CODE     = recordInfo.FIELD_CODE;
                 recordInfo.INOUT_RECODE.OUT_PARTITION_CODE = recordInfo.PARTITION_CODE;
                 recordInfo.INOUT_RECODE.OUT_CHANNEL_CODE   = recordInfo.CHN_CODE;
                 recordInfo.INOUT_RECODE.OUT_DEV_ID         = recordInfo.DEV_CODE;
                 recordInfo.INOUT_RECODE.OUT_OPERATOR_ID    = recordInfo.OPERATOR_ID;
                 recordInfo.INOUT_RECODE.OUT_PARK_TYPE      = recordInfo.PARK_TYPE;
             }
             else
             {
                 //////////////////保à?ê存??订?单죤信?息?é//////////////////
                 {
                     decimal dueMoney    = 0;
                     decimal chargeMoney = 0;
                     decimal preMoney    = 0;
                     foreach (var order in recordInfo.ListOrder)
                     {
                         dueMoney    += order.DUE_MONEY;
                         chargeMoney += order.CHARGE_MONEY;
                         preMoney    += order.PER_MONEY;
                         recordInfo.INOUT_RECODE.PAY_PLATFORM = order.PAY_PLATFORM;
                     }
                     recordInfo.INOUT_RECODE.DUE_MONEY    = dueMoney;
                     recordInfo.INOUT_RECODE.CHARGE_MONEY = chargeMoney;
                     recordInfo.INOUT_RECODE.PRE_MONEY    = preMoney;
                     temp.Update(recordInfo.INOUT_RECODE);
                 }
                 if (recordInfo.INOUT_RECODE.DUE_MONEY > 0)
                 {
                     var     charges          = chargesLogBll.GetListByInTime(recordInfo.INOUT_RECODE.VEHICLE_NO, recordInfo.INOUT_RECODE.IN_TIME);
                     decimal totalDueMoney    = recordInfo.INOUT_RECODE.DUE_MONEY;
                     decimal totalChargeMoney = charges.Select(x => x.CHARGE_MONEY).Sum();
                     decimal totalPreMoney    = charges.Select(x => x.PRE_MONEY).Sum();
                     decimal totalAlreayPay   = totalChargeMoney + totalPreMoney;
                     if (totalDueMoney > totalAlreayPay)
                     {
                         //////////////////////保à?ê存??收o?费¤?流¢??水?///////////////////
                         CR_CHARGES_LOG chargesLog = new CR_CHARGES_LOG();
                         chargesLog.ID                 = recordInfo.chargeFlowing;
                         chargesLog.BEGIN_TIME         = recordInfo.INOUT_RECODE.IN_TIME;
                         chargesLog.CHARGE_USERID      = recordInfo.INOUT_RECODE.OUT_OPERATOR_ID;
                         chargesLog.CHARGES_EQ_ID      = recordInfo.INOUT_RECODE.IN_EQ_ID;
                         chargesLog.END_TIME           = recordInfo.INOUT_RECODE.OUT_TIME;
                         chargesLog.IN_CHANNEL_CODE    = recordInfo.INOUT_RECODE.IN_CHANNEL_CODE;
                         chargesLog.IN_FIELD_CODE      = recordInfo.INOUT_RECODE.IN_FIELD_CODE;
                         chargesLog.IN_PARTITION_CODE  = recordInfo.INOUT_RECODE.IN_PARTITION_CODE;
                         chargesLog.OUT_CHANNEL_CODE   = recordInfo.INOUT_RECODE.OUT_CHANNEL_CODE;
                         chargesLog.OUT_FIELD_CODE     = recordInfo.INOUT_RECODE.OUT_FIELD_CODE;
                         chargesLog.OUT_PARTITION_CODE = recordInfo.INOUT_RECODE.OUT_PARTITION_CODE;
                         chargesLog.CHARGE_TIME        = System.DateTime.Now;
                         chargesLog.PAY_TYPE           = totalAlreayPay > 0 ? 1 : 2;
                         chargesLog.PAY_PLATFORM       = 1;
                         chargesLog.OWNER_CODE         = recordInfo.OWNER_CODE;
                         chargesLog.SPACE_CODE         = recordInfo.SPACE_CODE;
                         chargesLog.REMARK             = "车位被占,当临时车处理";
                         TimeSpan tsTotal = recordInfo.INOUT_RECODE.OUT_TIME.Subtract(recordInfo.INOUT_RECODE.IN_TIME);
                         chargesLog.STOP_TIME                    = (int)Math.Round(tsTotal.TotalMinutes, 0);
                         chargesLog.UNIQUE_IDENTIFIER            = recordInfo.INOUT_RECODE.UNIQUE_IDENTIFIER;
                         chargesLog.TRAFFIC_PERMIT_TYPE_IDENTITY = recordInfo.CARD_TYPE == enumCardType.CAR_TYPE_TEMP ? "0" : recordInfo.CARD_TYPE == enumCardType.CAR_TYPE_MONTH ? "1" : "2";
                         chargesLog.VEHICLE_NO                   = recordInfo.INOUT_RECODE.VEHICLE_NO;
                         chargesLog.PRE_MONEY                    = recordInfo.INOUT_RECODE.PRE_MONEY;
                         chargesLog.CHARGE_MONEY                 = recordInfo.CurrNeedPay;
                         chargesLog.DUE_MONEY                    = recordInfo.INOUT_RECODE.PRE_MONEY + recordInfo.CurrNeedPay;
                         chargesLog.CHARGE_METHOD                = (int)recordInfo.PayMethod;
                         chargesLogBll.Add(chargesLog);
                     }
                     foreach (var charge in charges)
                     {
                         charge.OUT_CHANNEL_CODE   = recordInfo.INOUT_RECODE.OUT_CHANNEL_CODE;
                         charge.OUT_FIELD_CODE     = recordInfo.INOUT_RECODE.OUT_FIELD_CODE;
                         charge.OUT_PARTITION_CODE = recordInfo.INOUT_RECODE.OUT_PARTITION_CODE;
                         charge.OWNER_CODE         = string.IsNullOrEmpty(charge.OWNER_CODE) ? null : charge.OWNER_CODE;
                         chargesLogBll.Update(charge);
                     }
                 }
             }
             /////////////////转áa移°?出?场?数oy据Y/////////////////
             if (AddRecodeArchive(recordInfo))
             {
                 temp.Delete(recordInfo.INOUT_RECODE.ID);
             }
             ///////////////触?£¤发¤?é出?场?事o?件t//////////////////
             recordInfo.OPERATER_TYPE = enumOperaterType.OutSuccessed;
             ThreadMessageTransact.Instance.triggerEvent(recordInfo, false);
         }
         //保à?ê存??出?场?图a?片?
         CR_INOUT_RECODE_IMG modelOutImg = new CR_INOUT_RECODE_IMG();
         modelOutImg.ID           = Guid.NewGuid().ToString("N");
         modelOutImg.IMG_TYPE     = 0;
         modelOutImg.CHANNEL_CODE = recordInfo.CHN_CODE;
         modelOutImg.IMG_URL      = recordInfo.PicFullName;
         modelOutImg.RECODE_ID    = recordInfo.INOUT_RECODE.ID;
         modelOutImg.DEV_ID       = recordInfo.DEV_CODE;
         modelOutImg.CHANNEL_TYPE = recordInfo.CHANNEL_TYPE == enumChannelType.chn_in ? "I" : "E";
         modelOutImg.CREATE_TIME  = DateTime.Now;
         modelOutImg.ISSEND       = 0;
         tempImg.Add(modelOutImg);
         /////////////////////////////////显?示o?屏¨¢信?息?é///////////////////////////////
         if (recordInfo.CHANNEL_TYPE != enumChannelType.chn_in)
         {
             base.ShowLED(recordInfo);
         }
     }
     catch (Exception ex)
     {
         LogHelper.Log.Error(ex.Message);
         recordInfo.CheckPointResult = false;
     }
 }
 public override void Process(ProcessRecord recordInfo)
 {
     recordInfo.CheckPointResult = true;
     try
     {
         //保存入场记录
         var    temp            = EngineContext.Current.Resolve <ICR_INOUT_RECODE>();
         var    orderBll        = EngineContext.Current.Resolve <ICR_ORDER_RECORD_INFO>();
         var    orderDetailsBll = EngineContext.Current.Resolve <ICR_ORDER_RECORD_DETAILS>();
         string Enter           = base.getCurrChannel(recordInfo).Enter;
         string Leave           = base.getCurrChannel(recordInfo).Leave;
         if (string.IsNullOrEmpty(Leave))
         {
             recordInfo.INOUT_RECODE.CURR_PARTITION_CODE = Enter;
             //贵宾卡,直接写一条完整记录
             if (recordInfo.authenticationType == enumAuthenticationType.SPECIAL_TYPE_VIP)
             {
                 //贵宾卡
                 recordInfo.INOUT_RECODE.ID                 = Guid.NewGuid().ToString("N");
                 recordInfo.INOUT_RECODE.RECODE_STATUS      = 1;
                 recordInfo.INOUT_RECODE.IN_TIME            = recordInfo.REPORTIMG_TIME;
                 recordInfo.INOUT_RECODE.IN_FIELD_CODE      = recordInfo.FIELD_CODE;
                 recordInfo.INOUT_RECODE.IN_PARTITION_CODE  = recordInfo.PARTITION_CODE;
                 recordInfo.INOUT_RECODE.IN_CHANNEL_CODE    = recordInfo.CHN_CODE;
                 recordInfo.INOUT_RECODE.IN_DEV_ID          = recordInfo.DEV_CODE;
                 recordInfo.INOUT_RECODE.IN_OPERATOR_ID     = recordInfo.OPERATOR_ID;
                 recordInfo.INOUT_RECODE.IN_PARK_TYPE       = recordInfo.PARK_TYPE;
                 recordInfo.INOUT_RECODE.OUT_TIME           = recordInfo.REPORTIMG_TIME;
                 recordInfo.INOUT_RECODE.OUT_FIELD_CODE     = recordInfo.FIELD_CODE;
                 recordInfo.INOUT_RECODE.OUT_PARTITION_CODE = recordInfo.PARTITION_CODE;
                 recordInfo.INOUT_RECODE.OUT_CHANNEL_CODE   = recordInfo.CHN_CODE;
                 recordInfo.INOUT_RECODE.OUT_DEV_ID         = recordInfo.DEV_CODE;
                 recordInfo.INOUT_RECODE.OUT_OPERATOR_ID    = recordInfo.OPERATOR_ID;
                 recordInfo.INOUT_RECODE.OUT_PARK_TYPE      = recordInfo.PARK_TYPE;
                 /////////////////转移出场数据/////////////////
                 AddRecodeArchive(recordInfo);
             }
             else
             {
                 ///////////////保存入场记录//////////////////
                 recordInfo.CheckPointResult = temp.Add(recordInfo.INOUT_RECODE);
             }
         }
         //保存入场图片
         CR_INOUT_RECODE_IMG modelImg = new CR_INOUT_RECODE_IMG();
         var tempImg = EngineContext.Current.Resolve <ICR_INOUT_RECODE_IMG>();
         modelImg.ID           = Guid.NewGuid().ToString("N");
         modelImg.IMG_TYPE     = 0;
         modelImg.CHANNEL_CODE = recordInfo.CHN_CODE;
         modelImg.IMG_URL      = recordInfo.PicFullName;
         modelImg.RECODE_ID    = recordInfo.INOUT_RECODE.ID;
         modelImg.DEV_ID       = recordInfo.DEV_CODE;
         modelImg.VEHICLE_NO   = recordInfo.INOUT_RECODE.UNIQUE_IDENTIFIER;
         modelImg.CREATE_TIME  = DateTime.Now;
         modelImg.CHANNEL_TYPE = recordInfo.CHANNEL_TYPE == enumChannelType.chn_in ? "I" : "E";
         modelImg.ISSEND       = 0;
         tempImg.Add(modelImg);
     }
     catch (Exception ex)
     {
         LogHelper.Log.Error(ex.Message);
         recordInfo.CheckPointResult = false;
     }
 }