📄 main.~pas
字号:
SqlStr1:='insert into Dg_source_data with(rowlock)';
SqlStr2:='insert into Dg_now_data with(rowlock)';
SqlStr3:='insert into Dg_waiting_data with(rowlock)';
SqlStrValue:='(play_time,src_terminal_id,dest_terminal_id'+
' ,song_id,bless_id,star_id,send_name,Play_order,'+
' Sequence_ID,handle,msg_id_high,msg_id_low,source_addr) values('+
''''+play_str_time+''''+
','+''''+src_terminal_id+''''+
','+''''+dest_terminal_id+''''+
','+''''+song_id+''''+
','+''''+bless_id+''''+
','+''''+star_id+''''+
','+''''+send_name+''''+
','+''''+play_order+''''+
','+inttostr(Sequence_ID)+
','+inttostr(ReadSock.SocketHandle)+
','+''''+msg_id_high+''''+
','+''''+msg_id_low+''''+
','+''''+sp_flag+''''+')';
// ''''+',Password'+'''';
try
//db_main.StartTransaction ;
with Qry_source_data do
begin
Close;
SQL.Clear;
SQL.Add(SqlStr1+SqlStrValue);
ExecSQL;
end;
if (play_str_time='0000-00-00 00:00:00') or (play_str_time='') then
begin
with Qry_now_data do
begin
Close;
SQL.Clear;
SQL.Add(SqlStr2+SqlStrValue);
ExecSQL;
end;
end
else
begin
with Qry_waiting_data do
begin
Close;
SQL.Clear;
SQL.Add(SqlStr3+SqlStrValue);
ExecSQL;
end;
end;
//db_main.Commit;
except on e:exception do
begin
if LogRec.s_time='' then
begin
logrec.s_funcname:='CmppRead_SUBMIT';
logrec.s_oper :='CmppRead_SUBMIT数据库操作';
logrec.s_result :='失败';
logrec.s_errcode :='0';
logrec.s_err :=e.Message;
logrec.s_time :=FormatDateTime('yyyy-mm-dd hh:mm:ss',now);
WriteLog();
end;
//db_main.Rollback ;
end;
end;
//ISMG对SP发起的连接请求
try
int1 := SizeOf( TCMPP_HEAD_tag );
int2 := SizeOf( TCMPP_SUBMIT_RESP_tag );
int3 := int1 + int2;
FillChar( bInit.head, int1, 0 );
FillChar( bInit.body, int2, 0 );
DateTimeToString( timestr, 'MMDDHHMMSS', now );
bInit.head.Total_Length := htonl( int3 );
bInit.head.Command_ID := htonl(CMPP_SUBMIT_RESP);
bInit.head.Sequence_ID := Cmpp_Head.Sequence_ID ;
StrPCopy(bInit.body.Song_Name,CMPP_SUBMIT_tag.Song_Name);
//bInit.body.Msg_Id:=CMPP_SUBMIT_tag.Msg_Id ;
bInit.body.Msg_Id.LowPart :=Msg_Id.HighPart ;
bInit.body.Msg_Id.HighPart :=Msg_Id.LowPart ;
bInit.body.Result:=0;
if ReadSock.SendBuf( bInit, int3 ) <> int3 then
begin
memo1.Lines.Add( '发送点歌响应信息操作失败'+#13#10 );
exit;
end;
memo1.Lines.Add( '发送点歌响应信息成功 '+
'当前时间:'+datetimetostr(now)+
'msg_id_high:'+msg_id_high+
'msg_id_low:'+msg_id_low +
'SP代码:'+sp_flag+
'SOCKET句柄:'+inttostr(ReadSock.SocketHandle )+#13#10 );
except on e: exception do
begin
if LogRec.s_time='' then
begin
logrec.s_funcname:='CmppRead_SUBMIT';
logrec.s_oper :='CmppRead_SUBMIT数据发送';
logrec.s_result :='失败';
logrec.s_errcode :='0';
logrec.s_err :=e.Message;
logrec.s_time :=FormatDateTime('yyyy-mm-dd hh:mm:ss',now);
WriteLog();
end;
memo1.Lines.Add( '发送点歌响应信息操作失败,错误信息' + e.Message +#13#10);
end;
end; //try-except
end;
procedure TFrmMain.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
ReadBufSize: integer;
CMPP_HEAD_tag: tCMPP_HEAD_tag;
begin
try
FillChar( CMPP_HEAD_tag, sizeof( tCMPP_HEAD_tag ), 0 );
ReadBufSize := Socket.ReceiveBuf( CMPP_HEAD_tag, sizeof( tCMPP_HEAD_tag ) );
if ( ReadBufSize = 0 ) or ( ReadBufSize = -1 ) or ( ReadBufSize <> SizeOf( tCMPP_HEAD_tag ) ) then
exit;
CMPP_HEAD_tag.Command_Id := ntohl( CMPP_HEAD_tag.Command_Id );
if CMPP_HEAD_tag.Command_Id = CMPP_CONNECT then
CmppRead_CONNECT( Socket, CMPP_HEAD_tag );
// if CMPP_HEAD_tag.Command_Id = CMPP_CONNECT_RESP then
// CmppRead_CONNECT_RESP( Socket, CMPP_HEAD_tag );
if CMPP_HEAD_tag.Command_Id = CMPP_TERMINATE then //短信中心发起的断开连接操作
CmppRead_TERMINATE( Socket, CMPP_HEAD_tag );
if CMPP_HEAD_tag.Command_Id = CMPP_TERMINATE_RESP then
memo1.Lines.Add('断开与短信网关的连接'+#13#10);
if CMPP_HEAD_tag.Command_Id = CMPP_DELIVER_RESP then
CmppRead_DELIVER_RESP( Socket, CMPP_HEAD_tag );
if CMPP_HEAD_tag.Command_Id = CMPP_SUBMIT then
CmppRead_SUBMIT( Socket,CMPP_HEAD_tag );
if CMPP_HEAD_tag.Command_Id = CMPP_ACTIVE_TEST then
CmppRead_ACTIVE_TEST( Socket, CMPP_HEAD_tag );
if CMPP_HEAD_tag.Command_Id = CMPP_ACTIVE_TEST_RESP then
CmppRead_ACTIVE_RESP_TEST( Socket, CMPP_HEAD_tag );
if CMPP_HEAD_tag.Command_Id = CMPP_BROCKEN then
CmppRead_BROCKEN( Socket, CMPP_HEAD_tag );
except
end;
end;
procedure TFrmMain.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode := 0;
end;
procedure TFrmMain.Timer1Timer(Sender: TObject);
var
CMPP_DELIVER_tag:TCMPP_DELIVER_tag;
flow_id:integer;
Sequence_Id:integer;
Src_terminal_Id:string;
Dest_terminal_Id:string;
stat:string;
Submit_time:string;
Play_count:integer;
timestr:string;
handle:integer;
msg_id_high:string;
msg_id_low:string;
msg_id:Tulargeinteger;
sp_code:string;
begin
try
with Qry_ivr_tmp_data do
begin
Close;
SQL.Clear;
SQL.Add('delete from Dg_ivr_tmp_data with(rowlock) where isdel=1');
ExecSQL;
end;
except on e:exception do
begin
if LogRec.s_time='' then
begin
logrec.s_funcname:='Timer1Timer';
logrec.s_oper :='Timer1Timer数据库操作';
logrec.s_result :='失败';
logrec.s_errcode :='0';
logrec.s_err :=e.Message;
logrec.s_time :=FormatDateTime('yyyy-mm-dd hh:mm:ss',now);
WriteLog();
end;
memo1.Lines.Add('删除dg_ivr_tmp_data数据失败!'+#13#10);
end;
end;
try
with Qry_ivr_tmp_data do
begin
Close;
SQL.Clear;
SQL.Add('select * from Dg_ivr_tmp_data with(nolock) where isdel=0');
Open;
end;
except on e:exception do
memo1.Lines.Add('查询dg_ivr_tmp_data数据失败!'+#13#10);
end;
if Qry_ivr_tmp_data.IsEmpty then exit;
Qry_ivr_tmp_data.First;
while not Qry_ivr_tmp_data.Eof do
begin
flow_id:=0;
Sequence_Id:=0;
Src_terminal_Id:='';
Dest_terminal_Id:='';
stat:='';
Play_count:=0;
fillchar(CMPP_DELIVER_tag,sizeof(CMPP_DELIVER_tag),0);
flow_id:=Qry_ivr_tmp_data.fieldbyname('Flow_id').AsInteger ;
Sequence_Id:=Qry_ivr_tmp_data.fieldbyname('Sequence_Id').AsInteger;
Src_terminal_Id:=Qry_ivr_tmp_data.fieldbyname('Src_terminal_Id').AsString;
Dest_terminal_Id:=Qry_ivr_tmp_data.fieldbyname('Dest_terminal_Id').AsString;
stat:=Qry_ivr_tmp_data.fieldbyname('stat').AsString;
Play_count:=Qry_ivr_tmp_data.fieldbyname('Play_num').AsInteger;
handle:=Qry_ivr_tmp_data.fieldbyname('handle').AsInteger;
msg_id_high:=Qry_ivr_tmp_data.fieldbyname('msg_id_high').AsString ;
msg_id_low:=Qry_ivr_tmp_data.fieldbyname('msg_id_low').AsString ;
sp_code:=trim(Qry_ivr_tmp_data.fieldbyname('Source_addr').AsString) ;
StrPCopy(CMPP_DELIVER_tag.Src_terminal_Id, trim(Src_terminal_Id ));
StrPCopy(CMPP_DELIVER_tag.Dest_terminal_Id, trim(Dest_terminal_Id ));
StrPCopy(CMPP_DELIVER_tag.stat, trim(stat ));
CMPP_DELIVER_tag.Play_Count :=Play_Count;
DateTimeToString( timestr, 'YYMMDDHHMM', now );
StrPCopy(CMPP_DELIVER_tag.Submit_time , trim(timestr) );
// msg_id.LowPart := strtoint64(msg_id_low);
// msg_id.HighPart := strtoint64(msg_id_high);
msg_id.LowPart := strtoint64(msg_id_high);
msg_id.HighPart := strtoint64(msg_id_low);
CMPP_DELIVER_tag.Msg_Id :=msg_id;
//返回播放结果
bCmpp_DELIVER( TCustomWinSocket(ServerSocket1),sp_code,Sequence_Id,CMPP_DELIVER_tag,msg_id_high,msg_id_low,flow_id);
Qry_ivr_tmp_data.Next;
end;
end;
procedure TFrmMain.FormCreate(Sender: TObject);
var
AppIni: TIniFile;
server_name:string;
user_name:string;
database_name:string;
alias_name:string;
password:string;
i:integer;
begin
try
//formatDateTime('yyyy-mm-dd',now);
//SetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SDATE,'yyyy-mm-dd');
AppIni := TIniFile.Create('.\playsong.ini');
server_name := AppIni.ReadString('dbset', 'server_name', '');
user_name := AppIni.ReadString('dbset', 'user_name', '');
database_name := AppIni.ReadString('dbset', 'database_name', '');
password := AppIni.ReadString('dbset', 'password', '');
//difftime := strtoint(AppIni.ReadString('system', 'difftime', ''));
difftime := AppIni.ReadInteger('system', 'difftime', 40);
del_now_time := AppIni.ReadInteger('system', 'del_now_time', 3);
msg_gateway:=AppIni.ReadString('system', 'gateway_code', '');
AppIni.Free;
except on e:exception do
begin
if LogRec.s_time='' then
begin
logrec.s_funcname:='FormCreate';
logrec.s_oper :='ini文件操作';
logrec.s_result :='失败';
logrec.s_errcode :='0';
logrec.s_err :=e.Message;
logrec.s_time :=FormatDateTime('yyyy-mm-dd hh:mm:ss',now);
WriteLog();
end;
showmessage('ini文件操作失败!');
end;
end;
try
DB_main.Connected := False ;
DB_main.Params.Values['SERVER NAME'] := server_name ;//数据库服务器名称
DB_main.Params.Values['USER NAME'] := user_name ;//用户名称
DB_main.Params.Values['DATABASE NAME'] := database_name;//数据库名称
DB_main.Params.Values['PASSWORD'] := password ;//用户密码
DB_main.Connected:=True;
Timer1.Enabled := true;
T_waittonow.Enabled := true;
Timer_active_test.Enabled := true;
for i:=0 to MAXCON-1 do
begin
aryclient[i].CUsed := false; //连接数组当前位置已经占用
aryclient[i].IsLogin := false;
aryclient[i].CHandle :=0;
end;
except on e:exception do
begin
if LogRec.s_time='' then
begin
logrec.s_funcname:='FormCreate';
logrec.s_oper :='数据库连接操作';
logrec.s_result :='失败';
logrec.s_errcode :='0';
logrec.s_err :=e.Message;
logrec.s_time :=FormatDateTime('yyyy-mm-dd hh:mm:ss',now);
WriteLog();
end;
showmessage('数据库操作失败!');
end;
end;
binit.Click;
end;
procedure TFrmMain.T_waittonowTimer(Sender: TObject);
var
time1:Tdatetime;
Sqlstr:string;
begin
time1 :=now ;
with QWating do
begin
close;
SQl.Clear;
SqlStr:='';
SqlStr:='select * from dg_waiting_data with(nolock) ';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -