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

📄 thread_yxxx_view.pas

📁 delphi6.0电子寻更源程序,用来计算保安有无查抄
💻 PAS
📖 第 1 页 / 共 3 页
字号:
                    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 + -