|
int CObserverLaneDB::InsertTollSplitWasteBook()
% F! E' g: V3 |8 J5 ^{
8 [1 t% ] j3 g4 N v* O _ConnectionPtr pLocalConnectPtr;! g2 Q: j9 {# s' i9 R
_RecordsetPtr pRstPtrTollRate;
' Q) f, |7 [1 S% c7 _! x' I: \ _RecordsetPtr pRstPtrSplitWastebook;1 C% L/ T' f# f' u. ?6 E
8 J/ i; ]/ U" _! | Z3 ` char pcSQL[300];, W2 y ]6 _1 w E$ R- @& D6 G* H
sprintf(pcSQL,"Select * from TBL_TOLL_RATE where Entry_Station_ID = %ld and Flag_Station1 = %ld and Flag_Station2 = %ld and Exit_Station_ID = %ld and Vehicle_Class = %ld and Vehicle_Case = %ld ",* V1 _& s. M* {0 `: J+ ]7 @+ l
g_ModelEntryInfo.m_PassCard.nEntryStationID,+ @5 X3 {9 Y/ i7 k: ^+ y
g_ModelEntryInfo.m_PassCard.nFlagStation1,
3 h2 B+ R& T2 L% N% q g_ModelEntryInfo.m_PassCard.nFlagStation2,
5 A0 l0 Q7 h2 R+ | g_ModelNodeInfo.m_nStationID,
/ Y3 g2 @. R- S" R$ S8 A k' k g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass,9 r g4 ~6 R! g, U* o2 Y5 S4 M
g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase i4 P( n- W1 e" ]& I
);
7 n, U( Z2 K, ?% b0 u! P( O7 H3 E6 H8 }0 i/ T5 Y+ ]) W" y
try
/ p" c, a F. y* p {
1 B. |: x, D; w pLocalConnectPtr.CreateInstance(__uuidof(Connection));
8 `2 v+ O! E: r pLocalConnectPtr->Open(m_pcConnection,"","",adConnectUnspecified);
. e* Y6 b6 R- T* Q, x
+ d, c' g: o1 z4 r2 c( _0 i pRstPtrTollRate.CreateInstance(__uuidof(Recordset));
. W1 s# r n0 j- `. P* ?: M" {, D pRstPtrTollRate->Open(pcSQL,
0 P# u" ~0 H7 D) U& h8 ^! `& y/ j! d pLocalConnectPtr.GetInterfacePtr(),7 @* A9 O; h W( J, y& V
adOpenStatic,7 Q& w S2 K& {2 k: U% @) r
adLockPessimistic,8 f. n7 G4 E9 n; q
adCmdText);2 x& v3 A- d3 A3 v! q j" K N# ?
pRstPtrSplitWastebook.CreateInstance(__uuidof(Recordset));
# R$ E" q1 V, b2 x pRstPtrSplitWastebook->Open(_variant_t("TBL_SPLIT_WASTEBOOK_CURRENT"),7 r& `/ d4 _4 B* V% t0 N
pLocalConnectPtr.GetInterfacePtr(),
1 h6 W$ p0 _( f* ?+ ~ adOpenUnspecified,
/ W2 v* ~( B s" x1 w7 b adLockPessimistic,# v( ?$ n7 P2 u* P
adCmdTable);
2 N# l- k, G: Q' B: S/ _5 z6 v9 Q$ \9 k
pRstPtrTollRate->MoveFirst();$ B4 v, `) ?9 U
for(int i = 0;i<pRstPtrTollRate->RecordCount;i++)6 ` _6 K) ^8 u, h$ Q
{
6 ^( y! W, q% W* R- U pRstPtrSplitWastebook->AddNew();
" w! S( N2 \2 I% G+ E( u. M pRstPtrSplitWastebook->Fields->Item["NET_ID"]->Value= _variant_t((long)g_ModelNodeInfo.m_nNetID);
5 p" x& o, \6 R6 N9 _ , [3 D2 I" g2 O2 q
pRstPtrSplitWastebook->Fields->Item["STATION_ID"]->Value=_variant_t((long)g_ModelNodeInfo.m_nStationID);
0 S% ]$ K6 J5 \: B : ^1 c* `3 q+ a% v" Z
pRstPtrSplitWastebook->Fields->Item["NODE_ID"]->Value=_variant_t((long)g_ModelNodeInfo.m_nNodeID);. T, k4 x4 T8 @+ m1 m X
* a' i3 E) G7 r3 @. B( B; R3 Y
pRstPtrSplitWastebook->Fields->Item["WASTE_NO"]->Value=_variant_t((long)m_nTableTollWasteNO);
5 G" |1 v3 ^, Z3 o6 }1 J/ ?. j
9 L, [8 `: N; D- H( D4 w, J3 c COleDateTime CreationTime((time_t)g_ModelTollInfo.m_TollWasteBook.m_nCreationTime);
% @6 W6 f& j! Y/ V! [# F pRstPtrSplitWastebook->Fields->Item["SPLIT_TIME"]->Value=(DATE)CreationTime;
3 C1 a# o" Q5 m( L7 ^ : ]1 y% ~8 s) E6 H% @6 n* n2 s; Y
pRstPtrSplitWastebook->Fields->Item["WORK_DATE"]->Value=(DATE)g_ModelOperatorInfo.m_oletmWorkDate;
, K% C2 o2 S- c a) j* I
9 F7 L& d, W \9 r' e0 P pRstPtrSplitWastebook->Fields->Item["SPLIT_NUMBER"]->Value=pRstPtrTollRate->Fields->Item["SPLIT_NUMBER"]->Value;7 J8 [( E o' n/ k! a2 F
! ?# w4 ^6 W& S7 @/ }+ g/ M2 S$ D8 c2 S
pRstPtrSplitWastebook->Fields->Item["SPLIT_SEQUENCE"]->Value=pRstPtrTollRate->Fields->Item["SPLIT_SEQUENCE"]->Value;1 D v9 n. c9 V9 K) C# t
, u) v+ i9 F& e) I pRstPtrSplitWastebook->Fields->Item["OUT_OWNER_ID"]->Value=_variant_t((long)g_ModelNodeInfo.m_nOwnerID);
1 t: x! [. i! t2 J5 V8 r! ]" U / _% B$ T e ?5 q( K5 x2 g. T
pRstPtrSplitWastebook->Fields->Item["OWNER_ID"]->Value=pRstPtrTollRate->Fields->Item["OWNER_ID"]->Value;( R/ m/ Z! b/ H
: n+ A ^+ m% p7 A
float fTollReceivable = g_ModelTollInfo.m_TollWasteBook.m_fTollReceivable;5 z4 T, k; E1 p& I4 T% w
float fOwnerToll = pRstPtrTollRate->Fields->Item["OWNER_TOLL"]->Value;
% X+ m3 Y9 K _- u' q- } float fTollMoney = pRstPtrTollRate->Fields->Item["Toll_Money"]->Value;
, [# _5 |; ] Y0 V/ U2 N' b pRstPtrSplitWastebook->Fields->Item["OWNER_TOLL"]->Value= fTollReceivable * fOwnerToll / fTollMoney;
# a5 X* |! X# R6 R 1 U5 r, s, m6 v7 M6 F
pRstPtrSplitWastebook->Update();
" s! V% d) k+ R) I ]4 B8 x S+ K
( z1 q5 p: ^# `. G m_nTableSplitTollWasteNOCount++;
+ G8 x# g0 U/ x P! w; _) Y! | pRstPtrTollRate->MoveNext();4 e1 i [7 u1 H, q
} 8 d4 H( s" v- y, L
pRstPtrSplitWastebook->Close();
- T2 j: G o1 f& L y pRstPtrTollRate->Close();
a5 x X( Q6 }3 i$ T pLocalConnectPtr->Close();
% f4 n, b0 }$ [5 ?8 G/ R m_nStatus = DB_OK;
3 _! {! V1 a Z- n8 J/ C# n9 x O, U& C return(m_nStatus); + _2 D0 [! t( r: ^ c
}6 Y0 W7 l' P3 R3 f
catch(_com_error e)( y ]* w# M) y/ w6 _" l- [
{, \9 Y$ D5 u5 C- l+ M" z6 M
g_ModelPrompt.strPrompt.Format("Êý¾Ý¿â²Ù×÷´íÎó£º%s£¬%s\nÇëÓëϵͳ¹ÜÀíÔ±ÁªÏµ£¡",e.ErrorMessage(),e.Description());
4 B) o8 o& R- [/ a g_ModelPrompt.Notify();
. l$ L2 q9 E2 z0 M' F! D m_nStatus = DB_ERROR;
4 }4 W9 S9 g! t, S4 Q: ? return(m_nStatus); . \. ?$ |/ ]3 w* A0 j* Y* I% Z
}2 z( Y" {4 m2 u$ i: i
}
2 J7 M8 i# I; |9 s% Z4 ]" c
. E [* F- T7 ~, w7 A# R) X9 d/ Q. l# z& b. X8 v p
) ~1 h( S# @ @+ }( ^6 yfloat CObserverLaneDB::GetTollRate()
: f: z2 M8 _# M- u) @. x{
# S. g! H: r7 k+ X3 }* F @7 p; i! M7 b+ W3 f9 ~
_ConnectionPtr pLocalConnectPtr;; e2 f! `' c) a, d3 I" W2 F
_RecordsetPtr pRstPtrTollRate;
O D y2 F) J$ w6 ~. t5 T _RecordsetPtr pRstPtrOrganInfo;, s5 _4 w; B5 u4 z; `+ i9 L
3 O4 }( A6 r1 Q- b" L9 h6 ^
float fToll = -1;3 f9 e7 k3 }: Q) H
char pcSQL[300];- S* t" Z* I; R+ M. c
int nSplitCount = 0; l$ C& t& L7 `; Z6 v+ R: ~" g w
switch(g_ModelNodeInfo.m_nNodeType)
" `9 @8 E: o, C. [ i4 j; b {
) [9 ~9 X, J( {% v% e case NODE_TYPE_ENTRY:( x! d- A, y% H$ N5 M+ _2 O0 a
return(0);5 P; r! E5 y. n' [' I& l
break;6 ~$ K% N* j) w& \7 N0 ~
case NODE_TYPE_EXIT:* J" A6 c$ c% |* A: R; p) Z
case NODE_TYPE_MAIN_LANE:) M, j- Q& M1 o: b
switch(g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase); t0 o n6 ^: k) t8 W0 K3 h
{
* q# u" \* L. B7 J0 h9 B; Q1 M case VEHICLE_CASE_URGENT:
Z. w. Y P/ W1 S& o) W8 T. u, s case VEHICLE_CASE_ILLEGAL:
! {2 A$ p: w' f3 Q case VEHICLE_CASE_OFFDUTY_ILLEGAL:9 U {1 _. e, p: U9 `; h/ r8 C
case VEHICLE_CASE_MOTORCADE:- `. e& g1 M; o2 {0 T
case VEHICLE_CASE_COMMUTATION_TICKET:. } ~' Z5 q n# s" g- ~
case VEHICLE_CASE_ETC:6 y. M3 i8 k$ e! X
case VEHICLE_CASE_BAD_CARD:$ x6 T/ Q7 ]! s1 C9 {0 k H
case VEHICLE_CASE_NO_CARD:
& H% G( e4 y, Q: P* I& p+ i) ^ sprintf(pcSQL,"Select * from TBL_TOLL_RATE where Vehicle_Class = %ld and Vehicle_Case = %ld ",
) L+ C0 ]* i) c! X' s- b9 ? g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass,, o) Y! o+ D1 M
g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase);
' S8 W0 J2 Y! D1 s( a break;
, [! J, m- s! D5 A default:; H, \& j4 \, Q8 o
sprintf(pcSQL,"Select * from TBL_TOLL_RATE where Entry_Station_ID = %ld and Flag_Station1 = %ld and Flag_Station2 = %ld and Exit_Station_ID = %ld and Vehicle_Class = %ld and Vehicle_Case = %ld ",1 r! `" A, P1 ?5 s! P- N
g_ModelEntryInfo.m_PassCard.nEntryStationID,
+ c) C( q3 L4 ?! p8 y/ n! k g_ModelEntryInfo.m_PassCard.nFlagStation1,4 `/ G1 a0 _0 G0 V- w/ M
g_ModelEntryInfo.m_PassCard.nFlagStation2,( J+ X& ~1 n+ d" |/ M
g_ModelNodeInfo.m_nStationID,
: J" |/ D: Y; D: k3 W g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass,$ {8 O+ ~, B7 F/ D9 c7 }
g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase);$ {0 h5 y6 b6 \1 v- _
break;
4 ?3 g4 K8 I0 A: q: _6 v; ~* ` }
, `" G: X( E! \7 G' M
- k# N {, H8 e6 n try7 p( T% J8 {2 I4 P: R2 I7 i; a0 t
{- H5 v% Y* y4 G4 N" z- l+ u; ~# d
pLocalConnectPtr.CreateInstance(__uuidof(Connection));* A) a; B% y+ b5 N# {1 ~( j0 C) |. C
pLocalConnectPtr->Open(m_pcConnection,"","",adConnectUnspecified);
0 c4 q1 C9 E9 D2 F: U) g 9 a# g( i- E6 @
pRstPtrTollRate.CreateInstance(__uuidof(Recordset));# }% `$ Z+ k4 Q; e7 ?; Y
pRstPtrTollRate->Open(pcSQL,* X2 X/ N \ I- Q- E6 D$ ^+ \/ g
pLocalConnectPtr.GetInterfacePtr(),
* Q; h2 N7 ?4 t% \7 i7 y9 K. } adOpenStatic,
) W% b8 q- P+ B1 ? adLockPessimistic,, t, r1 `4 n1 \$ [) ^/ R
adCmdText);2 t, J+ y+ y% F6 C$ u7 x' I
if(pRstPtrTollRate->RecordCount > 0)) Y: v. H) Y2 `. S$ c8 c m
{
2 M$ M! ?. }$ Z* v- n7 g fToll = pRstPtrTollRate->Fields->Item["TOLL_MONEY"]->Value;1 F: B( \) f4 [2 x3 e; S
if(pRstPtrTollRate->RecordCount > 1 && pRstPtrTollRate->RecordCount < 5 )
2 N8 T4 i3 H" ?# ~ {
# Y4 _4 ^5 Y5 k: V9 h memset(g_ModelDeviceInfo.m_Printer.m_pcSplitInfo,0,sizeof(g_ModelDeviceInfo.m_Printer.m_pcSplitInfo));
: K* y( O: L) [; K! m pRstPtrTollRate->MoveFirst();
8 u" U( F6 ^8 x! z; e& k for(int i = 0;i<pRstPtrTollRate->RecordCount;i++)
/ ]. e+ b8 ^1 V: D/ z# P x6 U3 C {
8 Z' `0 w, m% W# J0 \ sprintf(pcSQL,"Select * from TBL_ORGANINFO where MAINOWNER_ID = %ld",(long)pRstPtrTollRate->Fields->Item["OWNER_ID"]->Value);
' {( l, _0 S8 X+ I) Q pRstPtrOrganInfo.CreateInstance(__uuidof(Recordset));
5 V4 }! {7 f; K) Q# x- N8 }6 L pRstPtrOrganInfo->Open(pcSQL,* C' L5 L& k+ c# b8 S/ E
pLocalConnectPtr.GetInterfacePtr(),
$ i) O7 N; X& I7 e9 Q' Z X$ S adOpenStatic,1 J+ T! b8 e! L' O$ u
adLockPessimistic,
W- g; D* ^; n6 m( N' D adCmdText);7 m! n$ t- z& ^) T
nSplitCount++;
% ~: v: L1 i+ x' C0 d5 J char pcBuf[10];
9 {! w' o( \* u* `! C if(0 == nSplitCount%3)3 a2 S/ A! `* u
{
: `* G& m0 k3 k7 F# O3 X" T1 c sprintf(pcBuf," : %.2f \n",(float)pRstPtrTollRate->Fields->Item["OWNER_TOLL"]->Value);" o! n9 z1 ~ C- H1 @
}else" E u% k2 x: Y1 V7 ]
{( Z, e. n0 o* I
sprintf(pcBuf," : %.2f ",(float)pRstPtrTollRate->Fields->Item["OWNER_TOLL"]->Value);
% J% @. ^% b- V b( f0 @1 y) B }) o) m3 b+ F9 {2 x4 f7 r c' ]+ z4 i
strncat(g_ModelDeviceInfo.m_Printer.m_pcSplitInfo,(LPCSTR)(_bstr_t)(pRstPtrOrganInfo->Fields->Item["ORGAN_NAME"]->Value),4);5 u; d3 Q5 \( e7 f" K
strcat(g_ModelDeviceInfo.m_Printer.m_pcSplitInfo,pcBuf);) p: f' ^* \2 J+ B' ?6 q3 @" D
pRstPtrOrganInfo->Close();- H S7 d% {6 S- `8 u1 y
pRstPtrTollRate->MoveNext();
, `5 F1 x5 O1 Y8 d# P1 L6 @ }
9 [8 t! q* J3 q8 k# b0 ` }
$ ]1 |' w: w7 e6 J/ j& o# P5 o
) N7 J# P/ C. `* { }else fToll = -1;; X/ p u/ K9 a
' V( y2 `# {; [" I1 b
pRstPtrTollRate->Close();# ?" {8 q0 t$ K1 T5 }$ ?' q k" Q
pLocalConnectPtr->Close();/ ~& V- w( ~# Z0 d" `- C4 \
m_nStatus = DB_OK;
0 O1 A& @ u. [ return(fToll);
0 L! [7 X& q! c; z" _. \9 @% `3 z }- g1 @' [4 Z# M5 B6 p
catch(_com_error e); m; G, w6 A. `$ |
{
+ S2 F8 {' w5 Q g_ModelPrompt.strPrompt.Format("Êý¾Ý¿â²Ù×÷´íÎó£º%s£¬%s\nÇëÓëϵͳ¹ÜÀíÔ±ÁªÏµ£¡",e.ErrorMessage(),e.Description());2 _8 f$ Q1 I$ b1 K3 i& ]3 e% O% m
g_ModelPrompt.Notify(); " r9 J7 s( _4 G6 W! f x
m_nStatus = DB_ERROR;
/ R3 B+ S5 {6 A s; k return(fToll); 1 |0 v# m5 i% t' Y, ^" e
}5 ?3 n/ b6 V( s, M' E( M
! a4 S4 R! Y" ]: ]1 V
break;: Z% K( F5 I# S3 }& }! Q9 i9 s
case NODE_TYPE_OPEN:
) W. V c- a* l: C7 \ sprintf(pcSQL,"Select * from TBL_TOLL_RATE where Vehicle_Class = %ld",7 P6 j* U4 `0 W3 q- k
g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass
& c2 i! Y% D. m8 `% N+ H );
8 a7 i$ h% J. R0 E* _; ?- L) z try4 c2 F! S0 x% f3 f+ j
{
9 h1 k; X- `& x0 r/ }% r- c pLocalConnectPtr.CreateInstance(__uuidof(Connection));( F' H' C! s! K7 L: o+ Q
pLocalConnectPtr->Open(m_pcConnection,"","",adConnectUnspecified);
+ @. A. X @% ^- s7 } 7 d+ i/ _" r# ]; f2 I! u
pRstPtrTollRate.CreateInstance(__uuidof(Recordset));% i7 s3 U/ \: A% a
pRstPtrTollRate->Open(pcSQL,) E8 @ ^, G" r
pLocalConnectPtr.GetInterfacePtr(),
+ L6 u X' m7 ]2 r adOpenStatic,
9 o& F( K d. }% Y8 n2 h8 o) ~ adLockPessimistic," s$ _; j3 `' z \4 M% A6 K2 F3 @
adCmdText);
/ O' Z: u: L! [1 W if(pRstPtrTollRate->RecordCount > 0)2 R5 _; r$ i% {, k
{/ Y- V1 g% j) Q* D, d$ r: }
fToll = pRstPtrTollRate->Fields->Item["TOLL_MONEY"]->Value;' {4 H# I' [1 d6 ?% f
}else fToll = -1;
- j5 h1 D" O3 o* @$ c3 g" N ' Z- \7 {' {& `4 `0 g! R3 u' G
pRstPtrTollRate->Close();7 v! p6 ]. C4 \( E* w) R/ B
pLocalConnectPtr->Close();
; J2 w1 `6 Y- |1 L+ n m_nStatus = DB_OK;" z9 P9 F! P3 K0 B3 D' L. V
return(fToll);1 z' `/ X' w3 p' k
}
9 Q; `2 v q4 [' y" ~ catch(_com_error e). R( i/ L% b6 P2 [1 v, ]8 {' v
{
( O ]1 X! H/ U5 M) c+ X: M- h% {/ R g_ModelPrompt.strPrompt.Format("Êý¾Ý¿â²Ù×÷´íÎó£º%s£¬%s\nÇëÓëϵͳ¹ÜÀíÔ±ÁªÏµ£¡",e.ErrorMessage(),e.Description());* j" U& v0 o' t/ n9 ?9 {
g_ModelPrompt.Notify();
2 r1 d4 T! |! X* _* V m_nStatus = DB_ERROR;1 U) f6 i& O' X; @% N* P7 c% P) O
return(fToll); 8 i! R2 d# X6 U# J/ Q0 N; D! P
}, h% ]( z. e! O7 r7 W7 @$ f; \ P
break;
4 t) D+ @" a/ s& g default:: t8 z+ e+ X2 z( o
m_nStatus = DB_ERROR;
, S' g) R1 d4 ?/ b break;# o) b" ~ O4 C
}
: J0 h' }& k, y return(fToll);
T) q S, }' d' ]4 z} |
|