/** * Desinstala una unidad documental de la ubicación que ocupa en el depósito físico * * @param idUdoc Identificador de unidad documental */ public void desinstalarUnidadDocumental(String idUdoc) { // Auditoria LoggingEvent logEvent = getLogginEvent(ArchivoActions.FONDOS_MODULE_BAJA_UDOCENUI); DataLoggingEvent logData = logEvent.getDataLoggingEvent(ArchivoObjects.OBJECT_UDOC, idUdoc); UnidadDocumentalVO udoc = getUnidadDocumental(idUdoc); Locale locale = getServiceClient().getLocale(); logData.addDetalle(locale, ArchivoDetails.SELECCION_COD_UDOC, udoc.getCodigo()); logData.addDetalle(locale, ArchivoDetails.SELECCION_COD_UDOC, udoc.getNumExp()); checkPermission(FondosSecurityManager.BAJAUDOC_ENUI_ACTION); iniciarTransaccion(); _udocDepositoDBEntity.deleteUdoc(idUdoc); commit(); }
private void eliminarUnidadDocumental(UnidadDocumentalVO udoc, Integer motivo) throws Exception { // Abrimos la transaccion iniciarTransaccion(); // // TODO Incorporar la udoc al histórico // HistoricoUDOCVO historicoUDOC = new HistoricoUDOCVO(); // historicoUDOC.setCodRefUdoc(udoc.getCodReferencia()); // historicoUDOC.setIdEliminacion(null); // Error: NOT NULL // historicoUDOC.setIdUDOC(udoc.getId()); // historicoUDOC.setSignaturaUdoc(udoc.getCodigo()); // historicoUDOC.setTituloUdoc(udoc.getTitulo()); // historicoUDOC.setNumExpUdoc(udoc.getNumExp()); // getGestionEliminacionBI().crearHistoricoUDOC( historicoUDOC ); // Eliminar la descripción if (udoc.tieneDescripcion()) getGestionDescripcionBI().deleteFicha(udoc.getId(), TipoFicha.FICHA_ELEMENTO_CF); // Eliminar los documentos electrónicos GestionDocumentosElectronicosBI serviceDocumentos = getGestionDocumentosElectronicosBI(); serviceDocumentos.deleteDocumentos(udoc.getId(), TipoObjeto.ELEMENTO_CF); // Eliminamos las referencias a documentos vitales getGestionDocumentosVitalesBI() .eliminaVinculosExpediente(udoc.getNumExp(), udoc.getCodSistProductor()); // Eliminar las tareas de captura relacionadas serviceDocumentos.eliminarTareas( udoc.getId(), ElementoCuadroClasificacion.TIPO_UNIDAD_DOCUMENTAL); // Desinstalar la unidad documental List partesUdoc = getUdocsEnUI(udoc.getId()); CollectionUtils.transform( partesUdoc, new Transformer() { public Object transform(Object obj) { return ((UDocEnUiDepositoVO) obj).getIduinstalacion(); } }); desinstalarUnidadDocumental(udoc.getId()); // Eliminar la unidad documental y el elemento del cuadro eliminarUdocBasico(udoc.getId()); // Comprobar las unidades de instalación distintas // y si son vacías las eliminamos. int numUnidadesInstalacion = 0; // int volumenEliminado = 0; double volumenEliminado = 0; GestorEstructuraDepositoBI serviceEstructura = getGestorEstructuraDepositoBI(); for (Iterator itUnidades = partesUdoc.iterator(); itUnidades.hasNext(); ) { String idUnidadInstalacion = (String) itUnidades.next(); List udocsEnUI = getUdocsEnUnidadInstalacion(idUnidadInstalacion); if (CollectionUtils.isEmpty(udocsEnUI)) { UInsDepositoVO unidadInstalacion = serviceEstructura.getUinsEnDeposito(idUnidadInstalacion); FormatoHuecoVO formato = serviceEstructura.getFormatoHueco(unidadInstalacion.getIdformato()); // volumenEliminado += formato.getLongitud().intValue(); if (formato != null) { if (formato.getLongitud() == null || formato.getLongitud().doubleValue() == Double.MIN_VALUE) volumenEliminado += serviceEstructura.getLongitudHuecosIrregularesXIdUInstalacion(idUnidadInstalacion); else volumenEliminado += formato.getLongitud().doubleValue(); } if (unidadInstalacion == null) { unidadInstalacion = new UInsDepositoVO(); unidadInstalacion.setId(idUnidadInstalacion); } // Obtener el idArchivo HuecoVO huecoVO = serviceEstructura.getHuecoUInstalacion(idUnidadInstalacion); String idArchivo = null; if (huecoVO != null) { DepositoVO deposito = serviceEstructura.getUbicacion(huecoVO.getIddeposito()); if (deposito != null) idArchivo = deposito.getIdArchivo(); } serviceEstructura.deleteUInstDeposito(idArchivo, unidadInstalacion, motivo); serviceEstructura.liberaUnidadInstalacion(idUnidadInstalacion); numUnidadesInstalacion++; } } // Actualizar los datos de la serie GestionSeriesBI serieBI = getGestionSeriesBI(); serieBI.updateVolumenSerieNoTransaccional(udoc.getIdSerie()); serieBI.updateContenidoSerieNoTransaccional(udoc.getIdSerie()); // Cerramos la transaccion commit(); }