Utilice escenarios en los que los miembros de la administración de enumeraciones de Java tengan una relación de lista vinculada

escenas a utilizar:

En el desarrollo, existe la necesidad de verificar los datos de importación del usuario. Es necesario verificar si la fase en servicio de una persona se completó incorrectamente

Requisitos de verificación

Verificación del formulario de personal: El contenido completado en la etapa de servicio debe definirse de antemano en la etapa de servicio.

Verificación de otras tablas: 1. De acuerdo con la asociación del número de trabajo, debe ser consistente con la etapa en servicio de la tabla de personal.

                      2. Si hay una fecha de promoción en la tabla de empleados, y hay datos detallados diarios en la tabla de importación, los datos posteriores a la fecha de promoción deben ser consistentes con la siguiente etapa de la etapa en servicio definida en la tabla de empleados. .

Etapa en servicio: período de formación, período práctico, pasantía 1, pasantía 2, formal

Lógica de procesamiento:

1. Definir la clase de enumeración en servicio

public enum Phase { 
    PXQ ("período de formación"), 
    SCQ ("período práctico"), 
    SX1 ("pasantía 1"), 
    SX2 ("pasantía 2"), 
    ZSQ ("formal"); 
    fase estática privada [] vals = values ​​(); 
    / ** 
     * Obtiene la fase previa en servicio 
     * @return 
     * / 
    public Phase previous () { 
        return vals [(this.ordinal () - 1)% vals.length]; 
    } 
    / ** 
     * Get la siguiente Una fase en servicio 
     * @return 
     * / 
    public Phase next () { 
        if (this.ordinal () == vals.length-1) { 
            return vals [this.ordinal ()]; 
        } 
        return vals [(this .ordinal () + 1)% vals.length]; 
    }
    private String desc; // descripción china 
            if (fase. toString () .equals (v_phase)) { 
                fase de retorno; 
            }
    / ** 
     * Estructura privada para evitar llamadas externas 
     * @param desc 
     * / 
    private Phase (String desc) { 
        this.desc = desc; 
    } 
    / ** 
     * Override 
     * @return 
     * / 
    @Override 
    public String toString () { 
        return desc ; 
    } 

    / ** 
     * Obtener la fase en servicio 
     * @param v_phase 
     * @return 
     * / 
    public static Phase getPhase (String v_phase) { 
        for (Phase phase: vals) {
        } 
        return null; 
    } 
}

2. Uso de verificación de datos

2.1 Verificación de la mesa de personal

if (sheetName.equals ( "personal data-HR" )) { // la tabla de personal data-HR solo verifica la fase en servicio
    // obtiene la fase en servicio y verifica si (titleMap.get ( "fase en servicio " )! = null ) { Cell cell = row.getCell (titleMap.get ( " Fase en servicio " ), Row . MissingCellPolicy . RETURN_BLANK_AS_NULL ); if ( cell ! = null ) { String v_phase = cell .getStringCellValue (). trim (); if (v_phase.equals ( "Período oficial" )) { // Compatible con período oficial y formal v_phase = "Oficial" ;
    
        
        
            
            
                
            }
            Phase fase = Phase . GetPhase (v_phase);
            si ( fase == null ) {
                messageInfoList.add (sheetName + "La primera de la tabla" + j + "La columna [etapa en el trabajo] es incorrecta, por favor complete en la etapa correcta en el trabajo " );
            }
        }
    }
}

2.2 Otra verificación de la tabla

Aquí la parte adhesiva del código, la lógica es que si el campo de fecha probablemente va a hablar con la promoción del oficial, está presente la tabla de alineación, la fecha es menor que la vida útil de la etapa de comparación directa del servicio, es mayor que la promoción por fecha. Relación de fase .next () para la siguiente etapa.

si ( peopleCheckVO .getV_regular_date () =! nula && titleMap.get ( "日期" ) =! nula ) {
    celular = row.getCell (titleMap.get ( "日期" ), Fila . MissingCellPolicy . RETURN_BLANK_AS_NULL );
    if (celda! = nulo ) { tiempo
        largo final = celda.getDateCellValue (). getTime (); si ( tiempo > = peopleCheckVO .getV_regular_date ()) { fase Fase = Fase . getPhase ( peopleCheckVO
        
            .getV_phase ());
            if ( fase ! = null ) {
                String v_phase_rel = fase .next (). toString ();
                if (! v_phase.equals ( v_phase_rel )) {
                    messageInfoList.add (sheetName + "El primero de la hoja" + j + "Hay un problema en la fila [en servicio Fase] columna porque entra en conflicto con los datos de la tabla de datos del personal de recursos humanos favor modificarlo" );
                }
            }
        } demás {
            si (v_phase.equals (! peopleCheckVO .getV_phase ())) {
                messageInfoList.add (sheetName + "La fila " + j + "de la tabla tiene un problema con la columna [Etapa en servicio] porque entra en conflicto con los datos de la tabla de recursos humanos de datos de personal, modifique eso " );
            }
        }
    }
} Demás {
    si (! V_phase.equals ( peopleCheckVO .getV_phase ())) {
        messageInfoList.add (SHEETNAME + "El primer" + j + "fila de la tabla [En el puesto de trabajo escenario] columna tiene un problema porque está relacionado con la tabla de recursos humanos de datos de personal Conflictos de datos, modifique " );
    }
}

para resumir:

El uso de la clase de enumeración facilita enormemente nuestro mantenimiento de la lista de cadenas, haciendo que nuestro código sea más robusto y más propicio para la expansión.

Supongo que te gusta

Origin blog.csdn.net/wangpei930228/article/details/108848201
Recomendado
Clasificación