Входные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
BEGINDATE  | 
    DATE  | 
    
  | 
  
ENDDATE  | 
    DATE  | 
    
  | 
  
OPERATIONID  | 
    INTEGER  | 
    
  | 
  
Выходные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
CONNUMBER  | 
    INTEGER  | 
    
  | 
  
INVENTORYID  | 
    INTEGER  | 
    
  | 
  
INVOICEID  | 
    INTEGER  | 
    
  | 
  
REGDATE  | 
    DATE  | 
    
  | 
  
CARNUMBER  | 
    VARCHAR(31)  | 
    
  | 
  
TRAILERNUMBER  | 
    VARCHAR(31)  | 
    
  | 
  
CROPFULLNAME  | 
    VARCHAR(100)  | 
    
  | 
  
INVOICENUMBER  | 
    VARCHAR(30)  | 
    
  | 
  
CHECKPOINTINTIME  | 
    TIMESTAMP  | 
    
  | 
  
CHECKPOINTOUTTIME  | 
    TIMESTAMP  | 
    
  | 
  
SAMPLERINTIME  | 
    TIMESTAMP  | 
    
  | 
  
PREANALYSISTIME  | 
    TIMESTAMP  | 
    
  | 
  
SILAGEINNAME  | 
    VARCHAR(30)  | 
    
  | 
  
GROSSTIME  | 
    TIMESTAMP  | 
    
  | 
  
LOADCONFIRMTIME  | 
    TIMESTAMP  | 
    
  | 
  
SILAGEOUTNAME  | 
    VARCHAR(30)  | 
    
  | 
  
TARETIME  | 
    TIMESTAMP  | 
    
  | 
  
SAMPLEROUTTIME  | 
    TIMESTAMP  | 
    
  | 
  
CARSTATE  | 
    INTEGER  | 
    
  | 
  
TRAILERSTATE  | 
    INTEGER  | 
    
  | 
  
STORAGEID  | 
    INTEGER  | 
    
  | 
  
CHECKPOINTSESSION  | 
    INTEGER  | 
    
  | 
  
SAMPLERSESSION  | 
    INTEGER  | 
    
  | 
  
WEIGHTNUMBER  | 
    INTEGER  | 
    
  | 
  
WEIGHTUSERID  | 
    INTEGER  | 
    
  | 
  
WEIGHTSESSION  | 
    INTEGER  | 
    
  | 
  
DISPATCHINGTIME  | 
    TIMESTAMP  | 
    
  | 
  
Описание
(Нет описания для процедуры TIMING)
Определение
CREATE PROCEDURE TIMING(
    BEGINDATE DATE,
    ENDDATE DATE,
    OPERATIONID INTEGER = 1)
RETURNS (
    CONNUMBER INTEGER,
    INVENTORYID INTEGER,
    INVOICEID INTEGER,
    REGDATE DATE,
    CARNUMBER VARCHAR(31),
    TRAILERNUMBER VARCHAR(31),
    CROPFULLNAME VARCHAR(100),
    INVOICENUMBER VARCHAR(30),
    CHECKPOINTINTIME TIMESTAMP,
    CHECKPOINTOUTTIME TIMESTAMP,
    SAMPLERINTIME TIMESTAMP,
    PREANALYSISTIME TIMESTAMP,
    SILAGEINNAME VARCHAR(30),
    GROSSTIME TIMESTAMP,
    LOADCONFIRMTIME TIMESTAMP,
    SILAGEOUTNAME VARCHAR(30),
    TARETIME TIMESTAMP,
    SAMPLEROUTTIME TIMESTAMP,
    CARSTATE INTEGER,
    TRAILERSTATE INTEGER,
    STORAGEID INTEGER,
    CHECKPOINTSESSION INTEGER,
    SAMPLERSESSION INTEGER,
    WEIGHTNUMBER INTEGER,
    WEIGHTUSERID INTEGER,
    WEIGHTSESSION INTEGER,
    DISPATCHINGTIME TIMESTAMP)
AS
declare variable STARTIME time;
declare variable MOVEENDTIME time;
declare variable BEGINTIME timestamp;
declare variable ENDTIME timestamp;
declare variable TABLEOPERATIONID integer;
begin
  select min(SESSIONS.STARTIME), max(SESSIONS.MOVEENDTIME)
    from SESSIONS
  into :STARTIME, :MOVEENDTIME;
  BEGINTIME = :BEGINDATE + :STARTIME;
  ENDTIME = :ENDDATE + 1 + :MOVEENDTIME;
  CONNUMBER = 0;
  for
    select IT.INVOICEID, IT.REGDATE, IT.STORAGEID, ITTRANSPORT.TRANSPORTNUMBER,
        QUALITY_CROPFULLNAME_BYID.CROPFULLNAME, INVOICES.INVOICENUMBER,
        ITTRANSPORT.CHECKPOINTINTIME, ITTRANSPORT.CHECKPOINTOUTTIME,
        ITTRANSPORT.SAMPLERINDATE + ITTRANSPORT.SAMPLERINTIME SAMPLERINTIME,
        ITTRANSPORT.PREANALYSISTIME, ITTRANSPORT.WEIGHTSESSION,
        case
          when (IT.STATE = -3) then
            'возврат'
        end SILAGEINNAME,
        IT.GROSSTIME, IT.LOADCONFIRMTIME,
        case
          when ((IT.STATE = 0) and (coalesce(IT.LOADCONFIRMTIME,IT.TARETIME) is not null)) then
            SILAGE.NAME
        end SILAGEOUTNAME,
        IT.TARETIME,
        ITTRANSPORT.SAMPLEROUTDATE + ITTRANSPORT.SAMPLEROUTTIME SAMPLEROUTTIME,
        IT.STATE, IT.INVENTORYID, IT.WEIGHTNUMBER, IT.WEIGHTUSERID,
        ITTRANSPORT.CHECKPOINTSESSION, ITTRANSPORT.SAMPLERSESSION, ITTRANSPORT.DISPATCHINGTIME
      from ITTRANSPORT
        left join IT on (IT.INVENTORYID = ITTRANSPORT.INVENTORYID)
        left join INVOICES on (INVOICES.INVOICEID = IT.INVOICEID)
        left join SILAGE on (SILAGE.SILAGEID = IT.SILAGEID)
        left join QUALITY_CROPFULLNAME_BYID(IT.SAMPLERQUALITYID, 1) on (0=0)
      where (((ITTRANSPORT.CHECKPOINTINTIME between :BEGINTIME and :ENDTIME)
              and ((IT.TARETIME is null) or (IT.TARETIME > :ENDTIME)))
             or (((IT.TARETIME between :BEGINTIME and :ENDTIME) and (IT.TARETIME is not null))
                 and (IT.STATE = 0))
             or ((ITTRANSPORT.PREANALYSISTIME between :BEGINTIME and :ENDTIME)
                 and (IT.STATE = -3))
            )
          and (IT.OPERATIONID = :OPERATIONID) and (ITTRANSPORT.TRANSPORTTYPEID = 0)
          and (IT.PARENTID <= 0) and (IT.STATE in (-3,0))
    order by ITTRANSPORT.CHECKPOINTINTIME
    into :INVOICEID, :REGDATE, :STORAGEID, :CARNUMBER, :CROPFULLNAME, :INVOICENUMBER,
        :CHECKPOINTINTIME, :CHECKPOINTOUTTIME, :SAMPLERINTIME, :PREANALYSISTIME,
        :WEIGHTSESSION, :SILAGEINNAME, :GROSSTIME, :LOADCONFIRMTIME, :SILAGEOUTNAME,
        :TARETIME, :SAMPLEROUTTIME, :CARSTATE, :INVENTORYID, :WEIGHTNUMBER,
        :WEIGHTUSERID, :CHECKPOINTSESSION, :SAMPLERSESSION, :DISPATCHINGTIME
  do begin
    if (:CARSTATE = 0) then
      select first 1 ILT$TABLEOPERATION.TABLEOPERATIONID, SILAGE.NAME
        from ILT$TABLEOPERATION
          left join ILT$FIELDINTEGER on (ILT$FIELDINTEGER.TABLEOPERATIONID = ILT$TABLEOPERATION.TABLEOPERATIONID)
          left join SILAGE on (SILAGE.SILAGEID = ILT$FIELDINTEGER.FIELDVALUE)
        where (ILT$TABLEOPERATION.RECORDID = :INVENTORYID)
          and (ILT$FIELDINTEGER.FIELDID = 31)
      into :TABLEOPERATIONID, :SILAGEINNAME;
    TRAILERNUMBER = null;
    TRAILERSTATE = null;
    select ITTRANSPORT.TRANSPORTNUMBER, IT.STATE
      from IT
        left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
      where (IT.INVOICEID = :INVOICEID)
        and (ITTRANSPORT.TRANSPORTTYPEID = 1) and (IT.STATE <> -1)
    into :TRAILERNUMBER, :TRAILERSTATE;
    CONNUMBER = CONNUMBER + 1;
    suspend;
  end
end
         
         
         
       |