📄 thread_yxxx_view.pas
字号:
begin //1.0
if number[j]=fieldbyname('lseq').asinteger then
begin//1.1
count[j]:=count[j]+1;
break;
end;//1.1
//next;
end; //1.0
next;
end;//1.0.0
for i:=1 to l_com do
begin // 1.2
if count[i]<n then
begin//找到漏点记录
ldbs:=true;
//lost_point:=number[i]
with dm_yxxx_view.q_choose_point do
begin // 1.3
//close;
//open;
first;
Locate('linename;lseq',vararrayOf([linename1,number[i]]),[loCaseInsensitive]);
lost_node:=fieldbyname('node').asstring;
lost_name:=fieldbyname('name').asstring;
lost_nodeplace:=fieldbyname('nodeplace').asstring;
lost_lseq:=fieldbyname('lseq').asinteger;
end; // 1.3
with dm_yxxx_view.q_yxxx_fl do
begin //写入漏点记录
//close;
//open;
append;
edit;
fieldbyname('pencode').asstring:=pen1;
fieldbyname('linename').asstring:=linename1;
fieldbyname('shifts').asstring:=shifts1;
fieldbyname('code').asstring:=code1;
fieldbyname('pdate').asdatetime:=date1;
fieldbyname('xxbs').asstring:='1';
fieldbyname('case').asstring:='该点漏检('+inttostr(n-count[i])+')';
fieldbyname('node').asstring:=lost_node;
fieldbyname('nodeplace').asstring:=lost_nodeplace;
fieldbyname('lseq').asinteger:=lost_lseq;
fieldbyname('name').asstring:=lost_name;
list_ld.Add('-'+inttostr(lost_lseq)+'-');
post;
end; //写入漏点记录
end; //找到漏点记录
end; // 1.2
end; //检查漏点记录
first;
l_cf_curs:=1;
l_cf_ifcon:=true;
l_cf_endrec:=0;
l_cf_da:=fieldbyname('pdate').asdatetime;
l_cf_ti:=fieldbyname('ptime').asdatetime;
lxbs:=false;
wzbs:=true;
ld_first:=0 ;
l_cf_lseq:=fieldbyname('lseq').asinteger;
L_fi_lseq:=l_cf_lseq;
if l_cf_lseq<>1 then
begin //没起始点,乱顺
lxbs:=true;
l_cf_da:=fieldbyname('pdate').asdatetime;
l_cf_ti:=fieldbyname('ptime').asdatetime;
lost_node:=fieldbyname('node').asstring;
_pencode:=fieldbyname('pencode').asstring;
_pstatu:=fieldbyname('pstatu').asstring;
save_ldjl(pen1,'3',linename1,shifts1,code1,lost_node,_pencode,_pstatu,date1,l_cf_ti);
ld_first:=recno;
end
else
begin
l_cf_da:=fieldbyname('pdate').asdatetime;
l_cf_ti:=fieldbyname('ptime').asdatetime;
bookmark1:=getbookmark;
end;
next;
while not eof do
begin //2.1
l_cf_lseq:=fieldbyname('lseq').asinteger;
if (wzbs)and (l_cf_lseq-l_fi_lseq=1) then // 后点于前点差1 ,按照正常顺序巡更
wzbs:=true
else
wzbs:=false;
if l_cf_lseq=l_com then
begin
if wzbs then
begin
//写入完整纪录
L_CF_endt:=fieldbyname('ptime').asdatetime;
//写入完整信息
with dm_yxxx_view.q_yxxx_fl do
begin//3.0
//close;
//open;
append;
edit;
fieldbyname('pencode').asstring:=pen1;
fieldbyname('pdate').asdatetime:=date1;
fieldbyname('linename').asstring:=linename1;
fieldbyname('shifts').asstring:=shifts1;
fieldbyname('code').asstring:=code1;
fieldbyname('xxbs').asstring:='2';
fieldbyname('ptime').asdatetime:=l_cf_ti;
fieldbyname('endtime').asdatetime:=l_cf_endt;
fieldbyname('name').asstring:=dm_yxxx_view.t_yxxx_view.fieldbyname('workername').asstring;
post;
end; //3.0
if roundtime(l_cf_ti,l_cf_endt)>_chkcycl+_dgpcxx then
//周期过长
begin
with dm_yxxx_view.q_yxxx_fl do
begin
//close;
//open;
append;
edit;
fieldbyname('pencode').asstring:=pen1;
fieldbyname('xxbs').asstring:='4';
fieldbyname('pdate').asdatetime:=date1;
//fieldbyname('ptime').asdatetime:=l_cf_ti;
fieldbyname('linename').asstring:=linename1;
fieldbyname('shifts').asstring:=shifts1;
fieldbyname('code').asstring:=code1;
fieldbyname('case').asstring:='周期過長';
fieldbyname('conifo').asstring:=timetostr(l_cf_ti)+'---'+timetostr(l_cf_endt);
post;
end;
end;
if roundtime(l_cf_ti,l_cf_endt)<_chkcycl-_dgpcsx then
begin//周期过短
with dm_yxxx_view.q_yxxx_fl do
begin
//close;
//open;
append;
edit;
fieldbyname('pencode').asstring:=pen1;
fieldbyname('xxbs').asstring:='4';
fieldbyname('pdate').asdatetime:=date1;
//fieldbyname('ptime').asdatetime:=l_cf_ti;
fieldbyname('linename').asstring:=linename1;
fieldbyname('shifts').asstring:=shifts1;
fieldbyname('code').asstring:=code1;
fieldbyname('case').asstring:='周期過短';
fieldbyname('conifo').asstring:=timetostr(l_cf_ti)+'---'+timetostr(l_cf_endt);
post;
end;
end;
//写入完整信息
bookmark3:=getbookmark;
//检查时间异常信息
gotobookmark(bookmark1);//跳到第一点
l_ci_lseq:=1;
l_ci_t1:=fieldbyname('ptime').asdatetime;
l_ci_d1:=fieldbyname('pdate').asdatetime;
//if l_ci_t1>fieldbyname('firstp').asdatetime+
next;
while l_ci_lseq<l_com do
begin //4.2
l_ci_lseq:=l_ci_lseq+1;
l_ci_t2:=fieldbyname('ptime').asdatetime;
l_ci_d2:=fieldbyname('pdate').asdatetime;
l_ci_time:=decdatetime(l_ci_d2,l_ci_t2,l_ci_d1,l_ci_t1);
l_ci_ntime:=fieldbyname('ntime').asinteger;
_xx:=fieldbyname('dgpcxx').asinteger;
_sx:=fieldbyname('dgpcsx').asinteger;
if decdatetime(l_ci_d2,l_ci_t2,l_ci_d1,l_ci_t1)>(l_ci_ntime+_xx) then
begin//(fieldbyname('ntime').asinteger+fieldbyname('dgpcxx').asinteger) then //大于到干偏差下限为时间过长
//写入时间异常记录 -时间过长
with dm_yxxx_view.q_yxxx_fl do
begin
//close;
//open;
append;
edit;
fieldbyname('pencode').asstring:=pen1;
fieldbyname('xxbs').asstring:='4';
fieldbyname('pdate').asdatetime:=l_ci_d2;
fieldbyname('ptime').asdatetime:=l_ci_t2;
fieldbyname('linename').asstring:=linename1;
fieldbyname('shifts').asstring:=shifts1;
fieldbyname('code').asstring:=code1;
fieldbyname('case').asstring:='(第'+inttostr(l_ci_lseq-1)+'到'+inttostr(l_ci_lseq)+'点) 时间过长';
fieldbyname('conifo').asstring:=timetostr(l_ci_t1)+'---'+timetostr(l_ci_t2);
post;
end;
end
else
//写入时间异常记录-时间过长
if decdatetime(l_ci_d2,l_ci_t2,l_ci_d1,l_ci_t1)<(l_ci_ntime-_sx) then
begin //fieldbyname('ntime').asinteger-fieldbyname('dgpcsx').asinteger then //小于到岗时间偏差上限为时间过断
// 写入时间异常记录 -时间过断
with dm_yxxx_view.q_yxxx_fl do
begin
//close;
//open;
append;
edit;
fieldbyname('pencode').asstring:=pen1;
fieldbyname('xxbs').asstring:='4';
fieldbyname('pdate').asdatetime:=l_ci_d2;
fieldbyname('ptime').asdatetime:=l_ci_t2;
fieldbyname('linename').asstring:=linename1;
fieldbyname('shifts').asstring:=shifts1;
fieldbyname('code').asstring:=code1;
fieldbyname('case').asstring:='(第'+inttostr(l_ci_lseq-1)+'到'+inttostr(l_ci_lseq)+'点) 时间过短';
fieldbyname('conifo').asstring:=timetostr(l_ci_t1)+'---'+timetostr(l_ci_t2);
post;
end;
end;
// 写入时间异常记录 -时间过断
l_ci_t1:=fieldbyname('ptime').asdatetime;
l_ci_d1:=fieldbyname('pdate').asdatetime;
next;
end; //4.2
gotobookmark(bookmark3);
freebookmark(bookmark3);
end;
end
else
begin
if l_cf_lseq=1 then
begin //开始新一次的巡更
lxbs:=false;
wzbs:=true;
l_cf_da:=fieldbyname('pdate').asdatetime;
l_cf_ti:=fieldbyname('ptime').asdatetime;
bookmark1:=getbookmark;
end
else //检查是否乱序或是完整信息
begin
if L_fi_lseq>=l_cf_lseq then //后点次序号小于前点,乱序
begin //g_0.0
lxbs:=true;
Prior;
if recno<>ld_first then
begin
save_ldjl(pen1,'3',linename1,shifts1,code1,lost_node,_pencode,_pstatu,date1,l_cf_ti);
end;
next;
save_ldjl(pen1,'3',linename1,shifts1,code1,lost_node,_pencode,_pstatu,date1,l_cf_ti);
ld_first:=recno;
end //g_0.0
end;
end;// 查找乱序纪录
L_fi_lseq:=l_cf_lseq;
next;
end; //2.1
end;// 0.1检查记录
finally
list_ld.Free ;
end;
end;
function thread_yxxx.roundtime(time1,time2:tdatetime):integer;
begin //time2 下班时间 time1 上班时间
if time2>time1 then
result:=round(1440*(frac(time2)-frac(time1)))
else
if time2<time1 then
result:= 1440-round(1440*(frac(time1)-frac(time2)))
else if time2=time1 then
result:=1440 ;
end;
function thread_yxxx.ttom(time1:tdatetime):Integer;
begin
result:=round(1440*(frac(time1)-strtotime('00:00:00')));
end;
function thread_yxxx.dectime(time1,time2:tdatetime):integer;
begin
result:=round(1440*(frac(time1)-frac(time2)));
end;
function thread_yxxx.decdatetime(date1,time1,date2,time2:tdatetime):integer;
begin
result:=round((int(date1)-int(date2))*1440+(frac(time1)-frac(time2))*1440);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -