Общее описание функционирования схемы обслуживания клиентов

 
 

Оборудование и используемое ПО

Конфигурация считывателей:

Два бесконтактных считывателя карт IronLogic Z-2 USB либо IronLogic Matrix III RD-ALL

Используемое ПО:

1.      ПО «Абонемент» версии 1.128;

2.      TcpCardReader;

3.      TcpCardReaderGH (вместо службы gkHost);

4.      GkHostConnect (для контроля присутствия);

5.      InfoPlazma (информирование о входе/выходе, вместо турникета).

 

У кассира установлены: ПО «Абонемент», модуль «Инфоплазма» и 2 бесконтактных считывателя карт.

 

Возможный вариант автоматизации аквапарка без использования турникетов

Возможны две схемы обслуживания клиентов:

Разовое посещение одним человеком:

1.      Кассир продает абонемент в программе через функционал «Быстрая продажа»;

2.      Кассир прилепляет браслет клиенту с помощью первого считывателя (см. Рис.1);

3.      Прикладывает данный браслет ко второму считывающему устройству для старта мероприятия (отметка о проходе). О том, что началась тарификация, кассиру сигнализирует модуль «Инфоплазма» (загорается зеленый цвет). «Инфоплазма» выглядит как маленькое окно, которое запускается на том же рабочем месте, что и абонемент (см. Рис.2);

При выходе/доплате клиента - кассир прикладывает браслет ко второму считывателю;

4.      Два варианта событий:

а) Клиент не превысил время, штраф за превышение не начислен. Информация о том, что клиенту доступен выход, сигнализирует «Инфоплазма» (загорается зеленый цвет). Клиент выходит. Ресурс закрывается. Идентификатор открепляется. Обслуживание завершается. (см. Рис.2);

б) Клиент превысил время нахождения в аквапарке. Информация о том, что клиенту не доступен выход, сигнализирует также «Инфоплазма» (загорается красный цвет) (См. Рис.3). Кассир находит клиента в ПО «Абонемент» (прикладывает его карту к считывателю №1), на вкладке «Быстрая продажа» он приостанавливает тарификацию и оплачивает долг клиента. Отмечает выход клиента прикладывая карту к считывателю №2. О том, что клиенту доступен выход, сигнализирует модуль «Инфоплазма» (загорается зеленый цвет). Клиент выходит. Ресурс закрывается. Идентификатор открепляется. Обслуживание завершается.

                           

Рис.2                                                                                                                                                                       Рис.3

 

Разовое посещение группой людей:

1. Кассир выбирает в быстрой продаже столько абонементов, сколько пришло людей;

2. Прежде чем оплатить кассир в быстрой продаже нажимает галочку «трансфер абонементов на плательщика»;

3. Кассир прикрепляет браслеты клиентам при помощи считывающего устройства №1. Кассир прикрепляет столько браслетов, сколько абонементов в чеке;

Далее обслуживание производится по аналогии с вариантом обслуживания: «Разовое посещение одним человеком».

 

Для реализации такой схемы потребуется следующее:

Тип

Наименование

Расходы

   

Кол-во

Цена

Итого

ПО

Модуль управления турникетов

1

15 000 *

15 000

ПО

Плазма монитор

3

15 000 *

45 000

Обор-е

Считыватель

6

5 200 *

31 200

Работы

Работы по подключению

3

5 000 *

15 000

Работы

Доработка шаблона плазмы

1

5 000 *

5 000

       

111 200

 

" * " - Стоймость актуальна на 01.06.2017г.

 

Конфигурация параметров в модулях ПО "Абонемент"

Ссылка с рабочей сборкой Аквапарка:  ftp://ftpint.ucs.ru/Abonement/Samples/Aquapark with module Infoflazma.7z

Абонемент (Abonementmanager.exe)

1) Ключевые параметры в [abonementmanager.ini]:
[database]
  dbname=127.0.0.1/3080:D:\_IBDATA\FITNESS_FANT.FDB
  dbuser = ucs
  DBPassword = oQKH8n0BFUE=

[TCPCardReader]
  PORT=7760
  HOST=127.0.0.1
; Если используется TCPCardReader для чтения com-портом, то установите UseTCPCardReader=1
  UseTCPCardReader=1

2) Содержание [decodecards.ini]:
[general]
usemask=1
TrackResultLog=

[cards]
  CardPrefix   =
  StaffCardPrefix        = y
  RegularCardPrefix = z
  PDSCardPrefix   = x
  FirstSignEquallyAsLetterA = 0

[cards.Card]
  CardDecodeType = mask
  mask=dddddddddddddd
  bitmask=$7FFFFFFF
  code=2

[cards.RegularCard]
code=22

[cards.StaffCard]
code=21

[cards.PDSCard]
code=24

TcpCardReader (tcpcardreader.exe)

1) Ключевые параметры в [tcpcardreader.ini]:
[application]
AutoStart = 1
AutoHide = 1
[TCP]
PORT=7760
IP=0.0.0.0
[READER1]
COMPORT=6
COMPORTPARAMS=baud=9600 data=8 parity=N stop=1
Prefix=;
Postfix=?

;Использовать decodecards.dll
useDecodeCards=1
StartTermChars=M
FinishTermChars=?#13;#10;#0;
 
2) Ключевые параметры в [decodecards.ini]:
[general]
usemask=1

[mask]
  card_EM= arine[*
  card_MI= ifare[*

[cards]
  CardPrefix   = 05015005

[cards.cardREPLACECARDNO]
  ExcludedPrefix=
  code=2
  CardDecodeType = REPLACECARDNO
  NewCardNo = 5678956

[cards.ARRAYOFBYTES]
  CardDecodeType = MASK
  mask=*cccc*
  bitmask=$7FFFFFFF
  MaskType=ARRAYOFBYTES
  code=2

[cards.Card2]
ExcludedPrefix=778=12345678=
code=2
mask=hhhhhhhh*
bitmask=$7FFFFFFF

[cards.Card]
ExcludedPrefix=05015005
code=2
CardDecodeType = MASK
mask=ddd
bitmask=$FFFFFFFF

DecodeTypeEx = 0

[cards.card_EM]
ExcludedPrefix=arine[
code=2
CardDecodeType = LAST9

[cards.card_MI]
ExcludedPrefix=ifare[
code=2
CardDecodeType = MASK
mask=hhhhhhhh*

[cards.RegularCard]
code=22

[cards.StaffCard]
code=21

[cards.PDSCard]
code=24

TcpCardReaderGH (tcpcardreader.exe)

1) Ключевые параметры в [tcpcardreader.ini]:
[application]
AutoStart = 1
AutoHide = 1
[TCP]
PORT=7766
IP=0.0.0.0
[READER1]
COMPORT=1
COMPORTPARAMS=baud=9600 data=8 parity=N stop=1
Prefix=> 2058 CARD 0
Postfix=
useDecodeCards=1
StartTermChars=M
FinishTermChars=?#13;#10;#0;

[TCPCARDREADER]
Prefix=#59;
Postfix=#63;
useDecodeCards=1
StartTermChars=;
FinishTermChars=?#13;#10;#0;

2) Содержание [decodecards.ini]:
[general]
usemask=1
TrackResultLog=
[mask]
  card_EM= arine[*
  card_MI= ifare[*
  card = 05015005*
  card2= 778=12345678=*
  cardfile=file://cards.txt
[cards]
  CardPrefix   = 05015005
  CardPrefix   = 750=
  CardPrefix   = 778=999999999=
  CardPrefix   = 778=123456789=
  StaffCardPrefix        =  778=87121234=
  StaffCardPrefix        = 778=201050001
  RegularCardPrefix = 778=444444444=
  PDSCardPrefix   = 811q
[cards.cardREPLACECARDNO]
  ExcludedPrefix=
  code=2
  CardDecodeType = REPLACECARDNO
  NewCardNo = 5678956
[cards.ARRAYOFBYTES]
  CardDecodeType = MASK
  mask=*cccc*
  bitmask=$7FFFFFFF
  MaskType=ARRAYOFBYTES
  code=2
[cards.Card2]
ExcludedPrefix=778=12345678=
code=2
mask=hhhhhhhh*
bitmask=$7FFFFFFF
[cards.Card]
ExcludedPrefix=05015005
code=2
CardDecodeType = MASK
mask=ddd
bitmask=$FFFFFFFF

[cards.card_EM]
ExcludedPrefix=arine[
code=2
CardDecodeType = LAST9
[cards.card_MI]
ExcludedPrefix=ifare[
code=2
CardDecodeType = MASK
mask=hhhhhhhh*
[cards.RegularCard]
code=22
[cards.StaffCard]
code=21
[cards.PDSCard]
code=24

Модуль GKHostConnect (gkhostconnect.exe)

1) Содержание [decodecards.ini]:
[general]
usemask=1
TrackResultLog=
[mask]
  card_all = *
[cards.card_all]
code=2
CardDecodeType = MASK
mask=ddddddddddd

[cards]
  CardPrefix   = 05015005
  CardPrefix   = 750=
  CardPrefix   = 778=999999999=
  CardPrefix   = 778=123456789=
  StaffCardPrefix        =  778=87121234=
  StaffCardPrefix        = 778=201050001
  RegularCardPrefix = 778=444444444=
  PDSCardPrefix   = 811q

[cards.cardREPLACECARDNO]
  ExcludedPrefix=
  code=2
  CardDecodeType = REPLACECARDNO
  NewCardNo = 5678956

[cards.ARRAYOFBYTES]
  CardDecodeType = MASK
  mask=*cccc*
  bitmask=$7FFFFFFF
  MaskType=ARRAYOFBYTES
  code=2

[cards.Card2]
ExcludedPrefix=778=12345678=
code=2
mask=hhhhhhhh*
bitmask=$7FFFFFFF

[cards.Card]
ExcludedPrefix=05015005
code=2
CardDecodeType = MASK
mask=ddd
bitmask=$FFFFFFFF

DecodeTypeEx = 0

[cards.RegularCard]
code=22

[cards.StaffCard]
code=21

[cards.PDSCard]
code=24
 
 
2) Содержание [sheltergkhost.ini]:
[tourniquet_0]
number=Аква
device=32
relay=88
direction=0
guesttype=0
identtype=0
IgnoreLastSymbolAtBarCode=0
devicetype=0
entranceState=41
exitState=42
BothDirectionState=43
CmdForAccessDenied=00
CheckDirect=1
ProhibitExitIfMinusBalance=1
ProhibitExitIfPositiveBalance=0
ProhibitExitIfProkatExist=0
ProhibitExitIfIssuedCompleteExist=0
DeactivateCardByExit=1
ActivateCardForShkaff=0
Immediately_to_finish_event=0
RESOLVEDDELAYBETWEENENTRANCE=0
TIMEOUTBETWEENENTRANCEANDEXIT=0
Grouppass=0
GenEventWhenAccessIsAllowed=1
AbonCodesForDeactivateCardByExit=
AbonCodesForNotDeactivateCardByExit=
VipCodesNotForDeactivateCard=
Duration_of_cooling_of_a_sun_deck=0
WaitDuration=0
ProhibitExitIfNoCardRead=1
DisableTraceIntermediateGuestbalance=0
CloseResourcesWhenEntrance=
CloseResourcesWhenExit=
allaccesscards=
IPCamURL=
IPCamLogin=
IPCamPassword=
VipCodesWhenExit=
VipCodesWhenEnter=
ProhibitVipCodesWhenEnter=
ProhibitVipCodesWhenExit=
SearchDiaryForInfoTerminal=0
SolaryProtocolVersion=0
WelcomeStr=Поднесите        браслет
ToBlockWhenAccessDenied=1
DefaultPKCodeForEmptyCard=
RequiryDiaryStaffWhenEntering=0
UsePrinterAfterEntrance=0
UsePrinterAfterExit=0
AnotherCardOwnerCanNotCreateEvent=0
AccessDeniedForAnotherCardOwner=0
ProhibitExitIfNotLastVisit=0
ProhibitExitIfLastVisit=0
AfterEventReportName=
UseChildOffset=1
CheckBalanceClosedResourcesWhenEntrance=0
AbonCodesForCloseResourcesWhenEntrance=
AbonCodesForCloseResourcesWhenExit=
AbonCodesWhenExit=
ProhibitAbonCodesWhenExit=
NeedCheckAccessBySQL=0
SQLFORCHECKACCESS=
SQLFORPASS=
CanAutoActivateAbonement=0
ExtraCheckAccessForExitBySQL=
AttendanteTimeOutAfterExit=0
3) Содержание [gkhostconnect.ini]:
[AppService]
;Имя сервиса
DisplayName = UCS Служба GKHOSTConnect
;Внутреннее имя сервиса (одно слово. Только латинские символы и цифры. Начинается с буквы)
ServiceName = UCSGKHOSTConnect
Description = Служба-интерфейс контроля доступа UCSGKHOSTConnect

[AppService.Dependencies]

[Application]
AutoHide=0

[log]
name=.\log\gkhostconnect.log
level=30
debuglevel=30
ByMonthes=1
ByDays=1
BYHOURS=1

[LOCK.SERVER]
  TCPHost = 127.0.0.1
  TCPPort = 1111

[general]
  Program           = UCS Shelter
  EnterpriseTitle   = Фитнесс-центр
  EnterPriseAddress = Москва
  EnterprisePhone  =  777-77-77

need_reload_all_dict=0

[database]
   dbname=127.0.0.1/3080:D:\_IBDATA\FITNESS_FANT_128.FDB
;dbname=aqua/3080:D:\_UCS\_FITNESS\IBDATA\FITNESS_TEST.FDB 
dbuser = ucs
dbcharset = WIN1251
DBPassword = oQKH8n0BFUE=

[devices]
CheckTurnDirect=0
TurniquetTimeOut=10
ToProcessAllCharsInCard=1
NoProcessedCardsNo=CF

[gkhost]
host=127.0.0.1
port=7766
local=0
CanSendData=1

[child]
CategCode=checkin,дет,
cmdOffset=12
DeactivateCardByExit=1
AbonCode=

[solary]
delay=0

[lockcontrol]
dllname=C:\Projects\DELPHI7\GKHOSTCONNECT\GKHOSTCONNECT2\mitucs.dll

[welcome]
delay=10
text=Поднесите        браслет

[tcpserver]
port=5560
ip=0.0.0.0
enabled=0

[udpserver]
ip=0.0.0.0
port=57145
enabled=0

[messages]
ProhibitMinusBalance = - у Вас долг
ProhibitPositiveBalance = - У Вас положительный баланс
[locker_parser]
  Mask = ********LL
         ABCDEF1201 
  Names = Names = &Locker=L
[Описание параметров Card_parser]
  Names = &Locker=L
  &Locker=L  - признак открытого (0) или закрытого (1) шкафчика

[FRF]
NotUseDisplay2Text=0
[Localization]
CurrentLanguage=default

ИнфоПлазма (Monitor.exe)

1) Содержание [MonitorSettings.xml]:
<Monitor>
        <Forms>  
                <Form left="0" top="0" Width="100" Height="50" Caption="Инфо" ID="1" BorderStyle="0" WindowState="0">
                        <ZOrder>-1</ZOrder>
                        <ShowPanel>0</ShowPanel>
                        <Periodicity>1</Periodicity>
                        <SQLText>
select first 1 IIF(getnamedparamdef(paramstr,'AccessGranted','0')=1,'lightgreen','red') cl
from access_control_log
where action_type='card' and idroom=1
and   1/24/60/60>d2dbl('now')-regdate
order by regdate desc
                        </SQLText>
                        <XSLT>plazma.xsl</XSLT>
                        <HTML>cache\plazma.html</HTML>
                        <HIDECURSOR>0</HIDECURSOR>
                        <FormID>1</FormID>
<FORM_FOLDER>cache\Photo</FORM_FOLDER>
                </Form>                
        </Forms>
</Monitor>
2) Содержание [plazma.xml]:
<?xml version="1.0" encoding="WINDOWS-1251" ?>
<xsl:stylesheet 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://user.com/namespace"
  version="2.0"
>
<xsl:template match="/">
<header>
  <META http-equiv="Content-Type" CONTENT="text/html; charset=WINDOWS-1251" />
</header>
<xsl:for-each select="RecordSet/Record">
<body > 
<xsl:attribute name="BGCOLOR">              
                <xsl:value-of select="CL"/>
            </xsl:attribute>
</body>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>