⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thread_yxxx_view.pas

📁 delphi6.0电子寻更源程序,用来计算保安有无查抄
💻 PAS
📖 第 1 页 / 共 3 页
字号:
                   fieldbyname('workercode').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('workercode').asstring;
                   fieldbyname('workername').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('workername').asstring;
                   fieldbyname('nodename').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('name').asstring;
                   fieldbyname('nodeplace').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('nodeplace').asstring;
                   fieldbyname('shifts').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('shifts').asstring;
                   fieldbyname('pstatu').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('pstatu').asstring;
                   fieldbyname('pdate').asdatetime:=dm_yxxx_view.q_ysxx.fieldbyname('pdate').asdatetime;
                   fieldbyname('ptime').asdatetime:=dm_yxxx_view.q_ysxx.fieldbyname('ptime').asdatetime;
                   fieldbyname('firstp').asdatetime:=dm_yxxx_view.q_ysxx.fieldbyname('firstp').asdatetime;
                   fieldbyname('lastp').asdatetime:=dm_yxxx_view.q_ysxx.fieldbyname('lastp').asdatetime;
                   fieldbyname('lseq').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('lseq').asinteger;
                   fieldbyname('ntime').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('ntime').asinteger;
                   fieldbyname('chkcycl').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('chkcycl').asinteger;
                   fieldbyname('dgpcsx').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('dgpcsx').asinteger;
                   fieldbyname('dgpcxx').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('dgpcxx').asinteger;
                   fieldbyname('times').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('times').asinteger;
                   post;
                   end;
                 next;
               end;//建立临时表
              end;// 0.01
           end;//生成有效信息  临时
          WITH DM_yxxx_view.t_yxxx_view do
          begin  //从临时表中  删除上班时间不合格两点连续的记录
          if  not  IsEmpty  then
           begin   //0.3
         check_times:=fieldbyname('times').asinteger;
         l_begintime:=fieldbyname('firstp').asdatetime;
         l_endtime:=fieldbyname('lastp').asdatetime;
         _dgpcxx:=fieldbyname('dgpcxx').asinteger;
         _dgpcsx:=fieldbyname('dgpcsx').asinteger;
         //_ntime:=fieldbyname('ntime').asinteger;
         _chkcycl:=fieldbyname('chkcycl').asinteger;
         L_tX:=dectime(l_endtime,l_begintime);
         //while not eof do
          //begin
          IF (L_TX=0) OR ((L_TX/60)=24)	then //上班时间与下半时进相等
  	    begin //0.0
            IF L_com<3  THEN     //小于三个点
              BEGIN
              FIRST;
              WHILE NOT EOF DO
                BEGIN
              	L_DATE:=FIELDBYNAME('PDATE').AsDATETIME;
                L_TIME:=FIELDBYNAME('PTIME').ASDATETIME;
                if   (decdatetime(l_date,l_time,_pdate,l_begintime)<(0-_dgpcsx))or(decdatetime(l_date,l_time,_pdate,l_begintime)>1440) then
                  begin
          	  delete;
                  end;
                  //else
                  next;
                END;
              end
              ELSE
               begin //大于三个点
               first;
               WHILE	NOT EOF DO
  	         BEGIN
    	         L_DATE:=FIELDBYNAME('PDATE').AsDATETIME;
                 L_TIME:=FIELDBYNAME('PTIME').ASDATETIME;
       	         if (decdatetime(l_date,l_time,_pdate,l_begintime)<(0-_dgpcsx))or (decdatetime(l_date,l_time,_pdate,l_begintime)>1440)	then
         	   begin
                   delete;
	           end;
                   //else
                 next;
                 END;
               last;
               WHILE not  bof	do
                  begin
        	  l_lseq:=fieldbyname('lseq').AsInteger;
	          IF (L_LSEQ<(L_COM/2)) then
                    BEGIN
          	    DELETE;
                     IF BOF   THEN	break
                    end
                    else
                    break;
                  end;
                first;
	      	WHILE not eof	do
                 begin
                 l_lseq:=fieldbyname('lseq').AsInteger;
        	 if l_LSEQ>(L_COM/2) then
                   begin
          	   DELETE;
                   IF EOF	then
                    break;
                   end
                   else
                   break;
                 end;
               end;
            end  //0.0
            ELSE
             begin  //0.1 上班时间与下班时间不等
     	      IF   l_begintime<l_endtime then
                begin  //上班时间小于下班时间
      	        first;
      	        while	not	eof	do
                  begin
    	   	  L_DATE:=FIELDBYNAME('PDATE').AsDATETIME;
                  L_TIME:=FIELDBYNAME('PTIME').ASDATETIME;
                  if   (decdatetime(l_date,l_time,_pdate,l_begintime)<(0-_dgpcsx))or (decdatetime(l_date,l_time,_pdate,l_endtime)>0)  then
                    begin
                    delete;
                    end
                    else
                    next;
                  end;
                  end
                  ELSE
                  begin//上半时间大于下班时间
      	           first;
                   while	not	eof	do
                     begin
     	   	     L_DATE:=FIELDBYNAME('PDATE').AsDATETIME;
                     L_TIME:=FIELDBYNAME('PTIME').ASDATETIME;
                     if(decdatetime(l_date,l_time,_pdate,l_begintime)<(0-_dgpcsx))or (decdatetime(l_date,l_time,_Pdate+1,l_endtime)>0)	then
                       begin
                       delete;
                       end
                       else
                       next;
                     end;
                   end;
                end; //0.1
             // open;
              FIRST;
              deletesamerec;//删除两点连续现象
              //showmessage(inttostr(recordcount));
                end;//0.3
            end;// 从临时表 删除上班时间不合格两点连续的记录
              with dm_yxxx_view.BatchMove1 do
                begin //从临时信息表导入到有效信息表中。
                 execute;
                //showmessage(inttostr(DM_yxxx_view.t_yxxx_view.recordcount));
                end;
           checkrecord(_pdate,l_pencode,_code,_linename,_shifts);
       next;
       end; //查找人员线路班次
     end;//0.02
     dm_yxxx_view.q_pen.Next;
     end;//按棒号分类
end;   //选择一天的巡更情况
procedure thread_yxxx.save_ldjl(pen1,lx,linename1,shifts1,code1,lost_node,_pencode,_pstatu:string;date1,l_cf_ti:tdatetime);
begin
with dm_yxxx_view.t_yxxx_view do
begin
///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;
end;
lx:='3';
                    with dm_yxxx_view.q_yxxx_fl do
                       begin // 记录乱序信息 2.7
                       //close;
                       //open;
                       append;
                       edit;
                       fieldbyname('pencode').asstring:=pen1;
                       fieldbyname('xxbs').asstring:='3';
                       fieldbyname('linename').asstring:=linename1;
                       fieldbyname('shifts').asstring:=shifts1;
                       fieldbyname('pdate').asdatetime:=date1;
                       fieldbyname('code').asstring:=code1;
                       fieldbyname('ptime').asdatetime:=l_cf_ti;
                       fieldbyname('node').asstring:=lost_node;
                       fieldbyname('pencode').asstring:=_pencode;
                       fieldbyname('pstatu').asstring:=_pstatu;
                       post;
                       end;  //  记录漏点信息2.7
end;
procedure thread_yxxx.checkrecord(date1:tdatetime;pen1,code1,linename1,shifts1:string);//检查有效记录
var i:integer;
ldbs:boolean; //漏点标示
j,lost_lseq:integer;          //漏点记录
lost_node,lost_nodeplace,lost_name:string;//漏点记录
number,count:array[1..100] of integer;  //漏点信息
l_cf_curs,l_cf_firsttrec,l_cf_endrec,l_cf_lseq,L_fi_lseq:integer;//乱序信息
l_cf_date,l_cf_da,l_cf_time,l_cf_ti,l_cf_endt,l_cf_brkbt,l_cf_brket:tdatetime;
l_cf_ifcon:boolean;
_pencode,_pstatu:string;
bookmark1,bookmark2,bookmark3:tbookmark;//bmk_ld,bmk_first:tbookmark;//乱序信息
{判断乱序方法:首先判断是否有起始点,如果存在(新的一次巡更开始),检查后一点次序号
是否比前一点次序号小,如果是表示乱序,否则不乱序}
lxbs:boolean;
WZBS:BOOLEAN;//完整巡更纪录
l_ci_lseq:integer; //时间异常
L_ci_t1,l_ci_d1 ,l_ci_t2,l_ci_d2:tdatetime;
l_ci_ntime,_sx,_xx:integer;
l_ci_time:integer;    //时间异常
list_ld:tstringlist;   //漏列表
ld_first:integer;
begin
try  //创建
list_ld:=tstringlist.Create;
list_ld.Clear;
with dm_yxxx_view.q_choose_point do
  begin    //选择该线路的点数
  close;
  sql.Clear ;
  sql.Add('select * from point where linename='''+linename1+''' order by lseq ');
  //parambyname('linename').asstring:=linename1;
  open;
  l_com:=recordcount;
  first ;
   if l_com>0 then
     begin //记录点数
        for i:=1 to l_com do
         begin
         number[i]:=fieldbyname('lseq').asinteger;
         count[i]:=0;
         next;
         end;
       end; // 记录点数
end;   //   选择该线路的点数
{with dm_yxxx_view.q_choose_shifts do
begin //选择班次,根据周期,确定循环次数
    close;
    parambyname('linename').asstring:=linename1;
    parambyname('shifts').asstring:=shifts1;
    open;
    l_begintime:=fieldbyname('firstp').asdatetime;
    l_endtime:= fieldbyname('lastp').asdatetime;
   _chkcycl:=fieldbyname('chkcycl').asinteger;
    n:=(_chkcycl)div(roundtime(l_begintime,l_endtime));
    end;  //选择班次,根据周期,确定循环次数  }
 with dm_yxxx_view.t_yxxx_view do
 begin// 0.1检查记录
 //indexfieldnames:=fieldbyname('ptime').asstring;
if recordcount=0 then
                begin    //写入漏检记录(该点没有巡逻);
                with dm_yxxx_view.q_ysxx do
                   begin
                   close;
                   sql.Clear ;
                   sql.Add('select * from yxxx_fl where (xxbs=''1'') and (code='''+code1+''') and (linename='''+linename1+''') and (shifts='''+shifts1+''')') ;
                   sql.add('and(pdate =:_pdate )');
                   ParamByName('_pdate').asdatetime:=date1;
                   open;
                   end;
                if dm_yxxx_view.q_ysxx.RecordCount=0 then
                begin
                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:='沒有巡邏';

                  post;
                  end; //
                  ldbs:=true;
                  exit;
                end;
                end// 写入漏检记录(该点没有巡逻);
                else
                begin//检查漏点记录
                 first;
                 ldbs:=false;
                 //if list_ld<>nil then
                 //dm_yxxx_view.q_choose_point.Close;
                 //dm_yxxx_view.q_choose_point.open;
                   while not eof do
                   begin  //1.0.0
                   l_begintime:=fieldbyname('firstp').asdatetime;
                   l_endtime:= fieldbyname('lastp').asdatetime;
                   _chkcycl:=fieldbyname('chkcycl').asinteger;
                   n:=check_times;//巡建次数
                   //n:=(roundtime(l_begintime,l_endtime))div(_chkcycl);
                    for j:=1 to l_com do

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -