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

Оборудование и используемое ПО
Конфигурация считывателей:
Два бесконтактных считывателя карт 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)
[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
[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)
[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;
[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)
[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;
[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)
[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
[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
[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)
<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><?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>