List of usage examples for org.hibernate.criterion Restrictions in
public static Criterion in(String propertyName, Collection values)
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printOffene(java.sql.Date dStichtag, int iOptionStichtag, String belegNrVon, String belegNrBis, Integer kundeIId, Integer kostenstelleIId, Integer fertigungsgruppeIId, int iSortierung, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;//from w w w .ja v a 2 s. co m try { this.useCase = UC_OFFENE; this.index = -1; SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRLosReport.class); c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); Map<String, Object> mapParameter = new TreeMap<String, Object>(); if (kostenstelleIId != null) { KostenstelleDto kostenstelleDto = getSystemFac().kostenstelleFindByPrimaryKey(kostenstelleIId); mapParameter.put("P_KOSTENSTELLE", kostenstelleDto.formatKostenstellenbezeichnung()); c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_KOSTENSTELLE_I_ID, kostenstelleIId)); } boolean flrAuftragSchonVerwendet = false; if (kundeIId != null) { KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto); mapParameter.put("P_KUNDE", kundeDto.getPartnerDto().formatFixTitelName1Name2()); c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN); flrAuftragSchonVerwendet = true; c.add(Restrictions.eq("a." + AuftragFac.FLR_AUFTRAG_KUNDE_I_ID_AUFTRAGSADRESSE, kundeIId)); } if (fertigungsgruppeIId != null) { c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_FERTIGUNGSGRUPPE_I_ID, fertigungsgruppeIId)); } String[] stati = new String[4]; stati[0] = LocaleFac.STATUS_AUSGEGEBEN; stati[1] = LocaleFac.STATUS_IN_PRODUKTION; stati[2] = LocaleFac.STATUS_TEILERLEDIGT; stati[3] = LocaleFac.STATUS_ANGELEGT; c.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati)); if (dStichtag != null) { dStichtag = Helper.cutDate(dStichtag); // PJ 14420 mapParameter.put("P_STICHTAG", dStichtag); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(dStichtag.getTime()); cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 1); dStichtag = new java.sql.Date(cal.getTimeInMillis()); String datumsart = ""; if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_BEGINNDATUM) { c.add(Restrictions.lt(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, dStichtag)); datumsart = getTextRespectUISpr("lp.begintermin", theClientDto.getMandant(), theClientDto.getLocUi()); } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) { c.add(Restrictions.lt(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE, dStichtag)); datumsart = getTextRespectUISpr("lp.endetermin", theClientDto.getMandant(), theClientDto.getLocUi()); } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) { if (flrAuftragSchonVerwendet == false) { c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN); flrAuftragSchonVerwendet = true; c.add(Restrictions.lt("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN, dStichtag)); } datumsart = getTextRespectUISpr("bes.liefertermin", theClientDto.getMandant(), theClientDto.getLocUi()); } mapParameter.put("P_DATUMSART", datumsart); } LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant()); Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant()); String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert(); if (belegNrVon != null) { String sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, belegNrVon); c.add(Restrictions.ge(FertigungFac.FLR_LOS_C_NR, sVon)); mapParameter.put("P_LOSNRVON", sVon); } if (belegNrBis != null) { String sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, belegNrBis); c.add(Restrictions.le(FertigungFac.FLR_LOS_C_NR, sBis)); mapParameter.put("P_LOSNRBIS", sBis); } // Sortierung if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KOSTENSTELLE) { c.createCriteria(FertigungFac.FLR_LOSREPORT_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr")); mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KUNDE) { if (flrAuftragSchonVerwendet == false) { c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN); flrAuftragSchonVerwendet = true; } c.createAlias("a." + AuftragFac.FLR_AUFTRAG_FLRKUNDE, "k", CriteriaSpecification.LEFT_JOIN); c.createAlias("k." + KundeFac.FLR_PARTNER, "p", CriteriaSpecification.LEFT_JOIN); c.addOrder(Order.asc("p." + PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1)); c.addOrder(Order.asc("k.i_id")); mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KUNDEUNDGEWAEHLTERTERMIN) { if (flrAuftragSchonVerwendet == false) { c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN); flrAuftragSchonVerwendet = true; } c.createAlias("a." + AuftragFac.FLR_AUFTRAG_FLRKUNDE, "k", CriteriaSpecification.LEFT_JOIN); c.createAlias("k." + KundeFac.FLR_PARTNER, "p", CriteriaSpecification.LEFT_JOIN); c.addOrder(Order.asc("p." + PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1)); if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_BEGINNDATUM) { c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN)); } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) { c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE)); } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) { c.addOrder(Order.asc("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN)); } mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("fert.kundeundtermin", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_LIEFERTERMIN) { if (flrAuftragSchonVerwendet == false) { c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN); flrAuftragSchonVerwendet = true; } c.createAlias("a." + AuftragFac.FLR_AUFTRAG_FLRKUNDE, "k", CriteriaSpecification.LEFT_JOIN); c.createAlias("k." + KundeFac.FLR_PARTNER, "p", CriteriaSpecification.LEFT_JOIN); c.addOrder(Order.asc("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN)); c.addOrder(Order.asc("p." + PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1)); mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("fert.liefertermin", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_ARTIKEL) { c.createAlias(FertigungFac.FLR_LOS_FLRSTUECKLISTE, "s"); c.createAlias("s." + StuecklisteFac.FLR_STUECKLISTE_FLRARTIKEL, "art"); c.addOrder(Order.asc("art.c_nr")); mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_FERTIGUNGSGRUPPE) { c.createAlias(FertigungFac.FLR_LOSREPORT_FLRFERTIGUNGSGRUPPE, "f"); c.addOrder(Order.asc("f.c_bez")); mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("lp.fertigungsgruppe", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_BEGINN) { c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN)); mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("lp.beginn", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_ENDE) { c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE)); mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("lp.ende", theClientDto.getMandant(), theClientDto.getLocUi())); } else { mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("lp.losnr", theClientDto.getMandant(), theClientDto.getLocUi())); } // 2tes sortierkriterium immer Losnr if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_BEGINN || iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_ENDE || iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_LIEFERTERMIN || iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KUNDEUNDGEWAEHLTERTERMIN) { if (flrAuftragSchonVerwendet == false) { c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN); flrAuftragSchonVerwendet = true; } c.addOrder(Order.asc("a.c_nr")); } else { c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR)); } List<?> list = c.list(); data = new Object[list.size()][OFFENE_SPALTENANZAHL]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRLosReport los = (FLRLosReport) iter.next(); if (los.getFlrauftrag() != null) { Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id(); PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId, theClientDto); data[i][OFFENE_KUNDE] = partnerDto.formatFixTitelName1Name2(); data[i][OFFENE_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale(); } if (los.getFlrauftrag() != null) { data[i][OFFENE_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr(); data[i][OFFENE_PROJEKT] = los.getFlrauftrag().getC_bez(); data[i][OFFENE_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin(); } BigDecimal bdGeliefert = new BigDecimal(0); for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iter2.next(); bdGeliefert = bdGeliefert.add(item.getN_menge()); } data[i][OFFENE_GELIEFERT] = bdGeliefert; if (los.getFlrstueckliste() != null) { ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall( los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto); data[i][OFFENE_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); data[i][OFFENE_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez(); data[i][OFFENE_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel().getC_nr(); data[i][OFFENE_DETAILBEDARF] = getRahmenbedarfeFac() .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId()); // Offene Fehlmengen data[i][OFFENE_FEHLMENGE] = getFehlmengeFac() .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto); LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac() .lossollarbeitsplanFindByLosIId(los.getI_id()); BigDecimal bdFertigungszeit = new BigDecimal(0); for (int j = 0; lossollarbeitsplanDto.length > j; j++) { bdFertigungszeit = bdFertigungszeit.add(lossollarbeitsplanDto[j].getNGesamtzeit()); } data[i][OFFENE_FERTIGUNGSZEIT] = bdFertigungszeit; // Rahmenbestellt Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac() .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto); if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) { BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL); data[i][OFFENE_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt; } data[i][OFFENE_RESERVIERUNGEN] = getReservierungFac() .getAnzahlReservierungen(artikelDto.getIId(), theClientDto); data[i][OFFENE_RAHMENRESERVIERUNGEN] = getReservierungFac() .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto); } else { data[i][OFFENE_BEZEICHNUNG] = los.getC_projekt(); data[i][OFFENE_ZUSATZBEZEICHNUNG] = null; data[i][OFFENE_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi()); } GregorianCalendar gc = new GregorianCalendar(); gc.setTime(los.getT_produktionsbeginn()); data[i][OFFENE_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR)); data[i][OFFENE_LOSGROESSE] = los.getN_losgroesse(); data[i][OFFENE_LOSNUMMER] = los.getC_nr(); data[i][OFFENE_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez(); /** * @todo material PJ 4239 */ data[i][OFFENE_MATERIAL] = null; data[i][OFFENE_BEGINN] = los.getT_produktionsbeginn(); data[i][OFFENE_ENDE] = los.getT_produktionsende(); data[i][OFFENE_LOSSTATUS] = los.getStatus_c_nr(); // PJ 15009 String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = " + los.getI_id() + " AND flrfehlmenge.n_menge>0"; Session session2 = FLRSessionFactory.getFactory().openSession(); Query query = session2.createQuery(queryf); List<?> results = query.list(); data[i][OFFENE_LOSHATFEHLMENGE] = new Boolean(false); if (results.size() > 0) { BigDecimal bd = (BigDecimal) results.iterator().next(); if (bd != null && bd.doubleValue() > 0) { data[i][OFFENE_LOSHATFEHLMENGE] = new Boolean(true); } } session2.close(); } initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_OFFENE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } catch (Exception t) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER, t); } finally { closeSession(session); } }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printOffeneArbeitsgaenge(java.sql.Date dStichtag, int iOptionStichtag, String belegNrVon, String belegNrBis, Integer kundeIId, Integer kostenstelleIId, Integer fertigungsgruppeIId, Integer artikelgruppeIId, Integer maschineIId, boolean bSollstundenbetrachtung, TheClientDto theClientDto) {/*from w w w . j a va 2 s . c o m*/ Session session = null; try { this.useCase = UC_OFFENE_AG; this.index = -1; SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRLossollarbeitsplan.class); c.createAlias(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRLOS, "l", CriteriaSpecification.LEFT_JOIN); c.add(Restrictions.eq("l." + FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); c.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_B_FERTIG, Helper.boolean2Short(false))); Map<String, Object> mapParameter = new TreeMap<String, Object>(); mapParameter.put("P_SOLLSTUNDENBETRACHTUNG", new Boolean(bSollstundenbetrachtung)); if (artikelgruppeIId != null) { c.createAlias(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRARTIKEL, "artikel", CriteriaSpecification.LEFT_JOIN); c.createAlias("artikel." + ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE, "artikelgruppe", CriteriaSpecification.LEFT_JOIN); c.add(Restrictions.eq("artikelgruppe.i_id", artikelgruppeIId)); ArtgruDto artgruDto = getArtikelFac().artgruFindByPrimaryKey(artikelgruppeIId, theClientDto); mapParameter.put("P_ARTIKELGRUPPE", artgruDto.getBezeichnung()); } /* * if (kostenstelleIId != null) { KostenstelleDto kostenstelleDto = * getSystemFac() .kostenstelleFindByPrimaryKey(kostenstelleIId); * mapParameter.put("P_KOSTENSTELLE", * kostenstelleDto.formatKostenstellenbezeichnung()); * * c.add(Restrictions.eq("l." + * FertigungFac.FLR_LOSREPORT_KOSTENSTELLE_I_ID, kostenstelleIId)); * } */ boolean flrAuftragSchonVerwendet = false; if (kundeIId != null) { KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto); mapParameter.put("P_KUNDE", kundeDto.getPartnerDto().formatFixTitelName1Name2()); c.createAlias("l." + FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN); flrAuftragSchonVerwendet = true; c.add(Restrictions.eq("a." + AuftragFac.FLR_AUFTRAG_KUNDE_I_ID_AUFTRAGSADRESSE, kundeIId)); } String[] stati = new String[4]; stati[0] = LocaleFac.STATUS_AUSGEGEBEN; stati[1] = LocaleFac.STATUS_IN_PRODUKTION; stati[2] = LocaleFac.STATUS_TEILERLEDIGT; stati[3] = LocaleFac.STATUS_ANGELEGT; c.add(Restrictions.in("l." + FertigungFac.FLR_LOS_STATUS_C_NR, stati)); if (dStichtag != null) { dStichtag = Helper.cutDate(dStichtag); // PJ 14420 mapParameter.put("P_STICHTAG", dStichtag); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(dStichtag.getTime()); cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 1); dStichtag = new java.sql.Date(cal.getTimeInMillis()); String datumsart = ""; if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_BEGINNDATUM) { c.add(Restrictions.lt("l." + FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, dStichtag)); datumsart = getTextRespectUISpr("lp.begintermin", theClientDto.getMandant(), theClientDto.getLocUi()); } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) { c.add(Restrictions.lt("l." + FertigungFac.FLR_LOS_T_PRODUKTIONSENDE, dStichtag)); datumsart = getTextRespectUISpr("lp.endetermin", theClientDto.getMandant(), theClientDto.getLocUi()); } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) { if (flrAuftragSchonVerwendet == false) { c.createAlias("l." + FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN); flrAuftragSchonVerwendet = true; c.add(Restrictions.lt("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN, dStichtag)); } datumsart = getTextRespectUISpr("bes.liefertermin", theClientDto.getMandant(), theClientDto.getLocUi()); } mapParameter.put("P_DATUMSART", datumsart); } LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant()); Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant()); String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert(); if (belegNrVon != null) { String sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, belegNrVon); c.add(Restrictions.ge("l." + FertigungFac.FLR_LOS_C_NR, sVon)); mapParameter.put("P_LOSNRVON", sVon); } if (belegNrBis != null) { String sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, belegNrBis); c.add(Restrictions.le("l." + FertigungFac.FLR_LOS_C_NR, sBis)); mapParameter.put("P_LOSNRBIS", sBis); } if (maschineIId != null) { MaschineDto mDto = getZeiterfassungFac().maschineFindByPrimaryKey(maschineIId); c.add(Restrictions.eq("maschine_i_id", maschineIId)); mapParameter.put("P_MASCHINE", mDto.getBezeichnung()); } List<?> list = c.list(); data = new Object[list.size()][OFFENE_AG_SPALTENANZAHL]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRLossollarbeitsplan a = (FLRLossollarbeitsplan) iter.next(); FLRLos los = a.getFlrlos(); if (fertigungsgruppeIId != null && kostenstelleIId != null) { if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue() && los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) { i--; } else { // skip } } else if (fertigungsgruppeIId != null && kostenstelleIId == null) { if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue()) { i--; } else { // skip } } else if (fertigungsgruppeIId == null && kostenstelleIId != null) { if (los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) { i--; } else { // skip } } } if (fertigungsgruppeIId != null || kostenstelleIId != null) { data = new Object[i][OFFENE_AG_SPALTENANZAHL]; } i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRLossollarbeitsplan a = (FLRLossollarbeitsplan) iter.next(); FLRLos los = a.getFlrlos(); if (fertigungsgruppeIId != null && kostenstelleIId != null) { if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue() && los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) { i--; } else { data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer(); data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang(); data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr(); ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(), theClientDto); data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung(); if (Helper.short2boolean(a.getB_fertig())) { data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0); } else { data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit(); } if (bSollstundenbetrachtung == true) { data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges( LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null, theClientDto); } if (a.getFlrmaschine() != null) { data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez(); data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine() .getC_identifikationsnr(); data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine() .getC_inventarnummer(); } if (a.getFlrartikel().getFlrartikelgruppe() != null) { data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe() .getC_nr(); } else { data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = ""; } if (a.getI_maschinenversatztage() != null) { data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp( (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage()); } else { data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn(); } if (los.getFlrauftrag() != null) { Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id(); PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId, theClientDto); data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2(); data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale(); } if (los.getFlrauftrag() != null) { data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr(); data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez(); data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin(); } BigDecimal bdGeliefert = new BigDecimal(0); for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iter2.next(); bdGeliefert = bdGeliefert.add(item.getN_menge()); } data[i][OFFENE_AG_GELIEFERT] = bdGeliefert; if (los.getFlrstueckliste() != null) { ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall( los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto); data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez(); data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel().getC_nr(); data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac() .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId()); // Offene Fehlmengen data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac() .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto); LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac() .lossollarbeitsplanFindByLosIId(los.getI_id()); BigDecimal bdFertigungszeit = new BigDecimal(0); for (int j = 0; lossollarbeitsplanDto.length > j; j++) { bdFertigungszeit = bdFertigungszeit.add(lossollarbeitsplanDto[j].getNGesamtzeit()); } data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit; // Rahmenbestellt Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac() .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto); if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) { BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL); data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt; } data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac() .getAnzahlReservierungen(artikelDto.getIId(), theClientDto); data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac() .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto); } else { data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt(); data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null; data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi()); } GregorianCalendar gc = new GregorianCalendar(); gc.setTime(los.getT_produktionsbeginn()); data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR)); data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse(); data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr(); data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez(); /** * @todo material PJ 4239 */ data[i][OFFENE_AG_MATERIAL] = null; data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn(); data[i][OFFENE_AG_ENDE] = los.getT_produktionsende(); data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr(); // PJ 15009 String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = " + los.getI_id() + " AND flrfehlmenge.n_menge>0"; Session session2 = FLRSessionFactory.getFactory().openSession(); Query query = session2.createQuery(queryf); List<?> results = query.list(); data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false); if (results.size() > 0) { BigDecimal bd = (BigDecimal) results.iterator().next(); if (bd != null && bd.doubleValue() > 0) { data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true); } } session2.close(); } } else if (fertigungsgruppeIId != null || kostenstelleIId != null) { if (fertigungsgruppeIId != null) { if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue()) { i--; } else { data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer(); data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang(); data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr(); ArtikelDto aDto = getArtikelFac() .artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(), theClientDto); data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung(); if (Helper.short2boolean(a.getB_fertig())) { data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0); } else { data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit(); } if (bSollstundenbetrachtung == true) { data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges( LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null, theClientDto); } if (a.getFlrmaschine() != null) { data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez(); data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine() .getC_identifikationsnr(); data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine() .getC_inventarnummer(); } if (a.getFlrartikel().getFlrartikelgruppe() != null) { data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe() .getC_nr(); } else { data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = ""; } if (a.getI_maschinenversatztage() != null) { data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp( (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage()); } else { data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn(); } if (los.getFlrauftrag() != null) { Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id(); PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId, theClientDto); data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2(); data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale(); } if (los.getFlrauftrag() != null) { data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr(); data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez(); data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin(); } BigDecimal bdGeliefert = new BigDecimal(0); for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iter2.next(); bdGeliefert = bdGeliefert.add(item.getN_menge()); } data[i][OFFENE_AG_GELIEFERT] = bdGeliefert; if (los.getFlrstueckliste() != null) { ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall( los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto); data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez(); data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel() .getC_nr(); data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac() .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId()); // Offene Fehlmengen data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac() .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto); LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac() .lossollarbeitsplanFindByLosIId(los.getI_id()); BigDecimal bdFertigungszeit = new BigDecimal(0); for (int j = 0; lossollarbeitsplanDto.length > j; j++) { bdFertigungszeit = bdFertigungszeit .add(lossollarbeitsplanDto[j].getNGesamtzeit()); } data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit; // Rahmenbestellt Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac() .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto); if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) { BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL); data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt; } data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac() .getAnzahlReservierungen(artikelDto.getIId(), theClientDto); data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac() .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto); } else { data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt(); data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null; data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi()); } GregorianCalendar gc = new GregorianCalendar(); gc.setTime(los.getT_produktionsbeginn()); data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR)); data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse(); data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr(); data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez(); /** * @todo material PJ 4239 */ data[i][OFFENE_AG_MATERIAL] = null; data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn(); data[i][OFFENE_AG_ENDE] = los.getT_produktionsende(); data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr(); // PJ 15009 String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = " + los.getI_id() + " AND flrfehlmenge.n_menge>0"; Session session2 = FLRSessionFactory.getFactory().openSession(); Query query = session2.createQuery(queryf); List<?> results = query.list(); data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false); if (results.size() > 0) { BigDecimal bd = (BigDecimal) results.iterator().next(); if (bd != null && bd.doubleValue() > 0) { data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true); } } session2.close(); } } else if (kostenstelleIId != null) { if (los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) { i--; } else { data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer(); data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang(); data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr(); ArtikelDto aDto = getArtikelFac() .artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(), theClientDto); data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung(); if (Helper.short2boolean(a.getB_fertig())) { data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0); } else { data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit(); } if (bSollstundenbetrachtung == true) { data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges( LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null, theClientDto); } if (a.getFlrmaschine() != null) { data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez(); data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine() .getC_identifikationsnr(); data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine() .getC_inventarnummer(); } if (a.getFlrartikel().getFlrartikelgruppe() != null) { data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe() .getC_nr(); } else { data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = ""; } if (a.getI_maschinenversatztage() != null) { data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp( (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage()); } else { data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn(); } if (los.getFlrauftrag() != null) { Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id(); PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId, theClientDto); data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2(); data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale(); } if (los.getFlrauftrag() != null) { data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr(); data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez(); data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin(); } BigDecimal bdGeliefert = new BigDecimal(0); for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iter2.next(); bdGeliefert = bdGeliefert.add(item.getN_menge()); } data[i][OFFENE_AG_GELIEFERT] = bdGeliefert; if (los.getFlrstueckliste() != null) { ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall( los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto); data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez(); data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel() .getC_nr(); data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac() .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId()); // Offene Fehlmengen data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac() .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto); LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac() .lossollarbeitsplanFindByLosIId(los.getI_id()); BigDecimal bdFertigungszeit = new BigDecimal(0); for (int j = 0; lossollarbeitsplanDto.length > j; j++) { bdFertigungszeit = bdFertigungszeit .add(lossollarbeitsplanDto[j].getNGesamtzeit()); } data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit; // Rahmenbestellt Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac() .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto); if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) { BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL); data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt; } data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac() .getAnzahlReservierungen(artikelDto.getIId(), theClientDto); data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac() .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto); } else { data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt(); data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null; data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi()); } GregorianCalendar gc = new GregorianCalendar(); gc.setTime(los.getT_produktionsbeginn()); data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR)); data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse(); data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr(); data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez(); /** * @todo material PJ 4239 */ data[i][OFFENE_AG_MATERIAL] = null; data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn(); data[i][OFFENE_AG_ENDE] = los.getT_produktionsende(); data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr(); // PJ 15009 String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = " + los.getI_id() + " AND flrfehlmenge.n_menge>0"; Session session2 = FLRSessionFactory.getFactory().openSession(); Query query = session2.createQuery(queryf); List<?> results = query.list(); data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false); if (results.size() > 0) { BigDecimal bd = (BigDecimal) results.iterator().next(); if (bd != null && bd.doubleValue() > 0) { data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true); } } session2.close(); } } } else { data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer(); data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang(); data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr(); ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(), theClientDto); data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung(); if (Helper.short2boolean(a.getB_fertig())) { data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0); } else { data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit(); } if (bSollstundenbetrachtung == true) { data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges( LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null, theClientDto); } if (a.getFlrmaschine() != null) { data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez(); data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine() .getC_identifikationsnr(); data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine().getC_inventarnummer(); } if (a.getFlrartikel().getFlrartikelgruppe() != null) { data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe().getC_nr(); } else { data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = ""; } if (a.getI_maschinenversatztage() != null) { data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp( (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage()); } else { data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn(); } if (los.getFlrauftrag() != null) { Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id(); PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId, theClientDto); data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2(); data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale(); } if (los.getFlrauftrag() != null) { data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr(); data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez(); data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin(); } BigDecimal bdGeliefert = new BigDecimal(0); for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iter2.next(); bdGeliefert = bdGeliefert.add(item.getN_menge()); } data[i][OFFENE_AG_GELIEFERT] = bdGeliefert; if (los.getFlrstueckliste() != null) { ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall( los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto); data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez(); data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel().getC_nr(); data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac() .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId()); // Offene Fehlmengen data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac() .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto); LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac() .lossollarbeitsplanFindByLosIId(los.getI_id()); BigDecimal bdFertigungszeit = new BigDecimal(0); for (int j = 0; lossollarbeitsplanDto.length > j; j++) { bdFertigungszeit = bdFertigungszeit.add(lossollarbeitsplanDto[j].getNGesamtzeit()); } data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit; // Rahmenbestellt Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac() .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto); if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) { BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL); data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt; } data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac() .getAnzahlReservierungen(artikelDto.getIId(), theClientDto); data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac() .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto); } else { data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt(); data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null; data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi()); } GregorianCalendar gc = new GregorianCalendar(); gc.setTime(los.getT_produktionsbeginn()); data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR)); data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse(); data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr(); data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez(); /** * @todo material PJ 4239 */ data[i][OFFENE_AG_MATERIAL] = null; data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn(); data[i][OFFENE_AG_ENDE] = los.getT_produktionsende(); data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr(); // PJ 15009 String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = " + los.getI_id() + " AND flrfehlmenge.n_menge>0"; Session session2 = FLRSessionFactory.getFactory().openSession(); Query query = session2.createQuery(queryf); List<?> results = query.list(); data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false); if (results.size() > 0) { BigDecimal bd = (BigDecimal) results.iterator().next(); if (bd != null && bd.doubleValue() > 0) { data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true); } } session2.close(); } } // Sortieren nach Artikelgruppe + AG-Beginn for (int k = data.length - 1; k > 0; --k) { for (int j = 0; j < k; ++j) { Object[] a1 = (Object[]) data[j]; Object[] a2 = (Object[]) data[j + 1]; if (((String) a1[OFFENE_AG_AG_ARTIKELGRUPPPE]) .compareTo((String) a2[OFFENE_AG_AG_ARTIKELGRUPPPE]) > 0) { data[j] = a2; data[j + 1] = a1; } else if (((String) a1[OFFENE_AG_AG_ARTIKELGRUPPPE]) .compareTo((String) a2[OFFENE_AG_AG_ARTIKELGRUPPPE]) == 0) { java.util.Date k1 = (java.util.Date) a1[OFFENE_AG_AG_BEGINN]; java.util.Date k2 = (java.util.Date) a2[OFFENE_AG_AG_BEGINN]; if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) { k1 = (java.util.Date) a1[OFFENE_AG_ENDE]; k2 = (java.util.Date) a2[OFFENE_AG_ENDE]; } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) { k1 = (java.util.Date) a1[OFFENE_AG_LIEFERTERMIN]; if (k1 == null) { k1 = new Date(0); } k2 = (java.util.Date) a2[OFFENE_AG_LIEFERTERMIN]; if (k2 == null) { k2 = new Date(0); } } k1 = Helper.cutDate(k1); k2 = Helper.cutDate(k2); if (k1.after(k2)) { data[j] = a2; data[j + 1] = a1; } else if (k1.equals(k2)) { String l1 = (String) a1[OFFENE_AG_LOSNUMMER]; String l2 = (String) a1[OFFENE_AG_LOSNUMMER]; if (l1.compareTo(l2) > 0) { data[j] = a2; data[j + 1] = a1; } } } } } initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_OFFENE_AG, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } catch (Exception t) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER, t); } finally { closeSession(session); } }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printHalbfertigfabrikatsinventur(java.sql.Timestamp tsStichtag, int iSortierung, boolean bVerdichtet, Integer partnerIIdFertigungsort, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;// w ww. j av a 2 s . c o m try { Map<String, Object> mapParameter = new TreeMap<String, Object>(); if (tsStichtag != null) { mapParameter.put("P_STICHTAG", tsStichtag); Calendar c = Calendar.getInstance(); c.setTimeInMillis(tsStichtag.getTime()); c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 1); tsStichtag = new java.sql.Timestamp(c.getTimeInMillis()); tsStichtag = Helper.cutTimestamp(tsStichtag); } this.useCase = UC_HALBFERTIGFABRIKATSINVENTUR; this.index = -1; SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRLosReport.class); c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); // c.add(Restrictions.eq("i_id", 99579)); if (partnerIIdFertigungsort != null) { c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_PARTNER_I_ID_FERTIGUNGSORT, partnerIIdFertigungsort)); } if (tsStichtag == null) { c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_ERLEDIGT, FertigungFac.STATUS_ANGELEGT, FertigungFac.STATUS_GESTOPPT }))); } else { c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_GESTOPPT }))); c.add(Restrictions.or(Restrictions.gt(FertigungFac.FLR_LOS_T_ERLEDIGT, tsStichtag), Restrictions.isNull(FertigungFac.FLR_LOS_T_ERLEDIGT))); c.add(Restrictions.or(Restrictions.gt(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tsStichtag), Restrictions.isNull(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT))); c.add(Restrictions.le(FertigungFac.FLR_LOS_T_AUSGABE, tsStichtag)); } // Sortierung nach Losnummer c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR)); List<?> list = c.list(); ArrayList<Object[]> alDaten = new ArrayList<Object[]>(); int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRLosReport item = (FLRLosReport) iter.next(); Object[] zeile = new Object[17]; zeile[HF_LOSNUMMER] = item.getC_nr(); zeile[HF_LOSGROESSE] = item.getN_losgroesse(); if (item.getFlrstueckliste() != null) { zeile[HF_ARTIKELNUMMER] = item.getFlrstueckliste().getFlrartikel().getC_nr(); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall( item.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto); zeile[HF_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); ; } else { zeile[HF_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi()); zeile[HF_BEZEICHNUNG] = item.getC_projekt(); } LosablieferungDto[] losablieferungDtos = getFertigungFac() .losablieferungFindByLosIId(item.getI_id(), true, theClientDto); BigDecimal bdAbgeliefert = new BigDecimal(0.0000); for (int j = 0; j < losablieferungDtos.length; j++) { if (tsStichtag == null) { bdAbgeliefert = bdAbgeliefert.add(losablieferungDtos[j].getNMenge()); } else { if (tsStichtag.after(losablieferungDtos[j].getTAendern())) { bdAbgeliefert = bdAbgeliefert.add(losablieferungDtos[j].getNMenge()); } } } zeile[HF_ERLEDIGT] = bdAbgeliefert; // Nun eine Zeile pro Position // Ausgegebenes Material LossollmaterialDto[] sollmat = getFertigungFac().lossollmaterialFindByLosIId(item.getI_id()); for (int j = 0; j < sollmat.length; j++) { BigDecimal bdMenge = getFertigungFac().getAusgegebeneMenge(sollmat[j].getIId(), tsStichtag, theClientDto); zeile[HF_POSITION_AUSGEGEBEN] = bdMenge; // Einkaufspreis des ersten Lieferanten hinzufuegen ArtikellieferantDto dto = getArtikelFac().getArtikelEinkaufspreis(sollmat[j].getArtikelIId(), null, new BigDecimal(1), theClientDto.getSMandantenwaehrung(), new java.sql.Date(sollmat[j].getTAendern().getTime()), theClientDto); if (dto != null) { zeile[HF_POSITION_EKPREIS] = dto.getLief1Preis(); } // CK:2008-12-23 Wegen Beistellteilen ist die Verfaelschung // des Gestehungspreises falsch // es muss immer der Gestehungspreis zum ausgabezeitpunkt // verwendet werden. BigDecimal bdPreis = getFertigungFac().getAusgegebeneMengePreis(sollmat[j].getIId(), tsStichtag, theClientDto); zeile[HF_POSITION_PREIS] = bdPreis; BigDecimal sollsatzmenge = new BigDecimal(0); if (item.getN_losgroesse().doubleValue() != 0) { sollsatzmenge = sollmat[j].getNMenge().divide(item.getN_losgroesse(), BigDecimal.ROUND_HALF_EVEN); } BigDecimal theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert); if (theoretischabgeliefert.doubleValue() > bdMenge.doubleValue()) { theoretischabgeliefert = bdMenge; } zeile[HF_POSITION_ABGELIFERT] = theoretischabgeliefert; zeile[HF_POSITION_OFFEN] = bdMenge.subtract(theoretischabgeliefert); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(sollmat[j].getArtikelIId(), theClientDto); zeile[HF_POSITION_ARTIKELNUMMMER] = artikelDto.getCNr(); zeile[HF_POSITION_BEZEICHNUNG] = artikelDto.formatBezeichnung(); if (bVerdichtet) { if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_POSITION_ARTIKELNUMMMER] .equals(zeile[HF_POSITION_ARTIKELNUMMMER])) { bGefunden = true; zeileTemp[HF_LOSNUMMER] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_LOSNUMMER].equals(zeile[HF_LOSNUMMER])) { bGefunden = true; zeileTemp[HF_POSITION_ARTIKELNUMMMER] = ""; zeileTemp[HF_POSITION_BEZEICHNUNG] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } } else { alDaten.add(zeile); } zeile = new Object[17]; zeile[HF_LOSNUMMER] = item.getC_nr(); } // Verbrauchte Arbeitszeit LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac() .lossollarbeitsplanFindByLosIId(item.getI_id()); for (int j = 0; j < lossollarbeitsplanDto.length; j++) { AuftragzeitenDto[] zeiten = getZeiterfassungFac().getAllZeitenEinesBeleges( LocaleFac.BELEGART_LOS, item.getI_id(), null, null, null, tsStichtag, false, false, theClientDto); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey( lossollarbeitsplanDto[j].getArtikelIIdTaetigkeit(), theClientDto); zeile[HF_POSITION_ARTIKELNUMMMER] = artikelDto.getCNr(); zeile[HF_POSITION_BEZEICHNUNG] = artikelDto.formatBezeichnung(); BigDecimal bdArbeitszeitwert = new BigDecimal(0); BigDecimal bdIstZeit = new BigDecimal(0); for (int k = 0; k < zeiten.length; k++) { if (artikelDto.getIId().equals(zeiten[k].getArtikelIId())) { bdArbeitszeitwert = bdArbeitszeitwert.add(zeiten[k].getBdKosten()); bdIstZeit = bdIstZeit.add(new BigDecimal(zeiten[k].getDdDauer().doubleValue())); } } BigDecimal sollsatzmenge = new BigDecimal(0); if (item.getN_losgroesse().doubleValue() != 0) { sollsatzmenge = lossollarbeitsplanDto[j].getNGesamtzeit().divide(item.getN_losgroesse(), BigDecimal.ROUND_HALF_EVEN); } if (Helper.short2boolean(lossollarbeitsplanDto[j].getBNurmaschinenzeit())) { zeile[HF_POSITION_AUSGEGEBEN] = new BigDecimal(0); } else { zeile[HF_POSITION_AUSGEGEBEN] = lossollarbeitsplanDto[j].getNGesamtzeit(); } BigDecimal theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert); BigDecimal restist = bdIstZeit.subtract(theoretischabgeliefert); if (restist.doubleValue() <= 0) { restist = new BigDecimal(0); } if (theoretischabgeliefert.doubleValue() > bdIstZeit.doubleValue()) { theoretischabgeliefert = bdIstZeit; } zeile[HF_POSITION_ABGELIFERT] = theoretischabgeliefert; zeile[HF_POSITION_OFFEN] = restist; if (bdIstZeit.doubleValue() != 0) { zeile[HF_POSITION_PREIS] = bdArbeitszeitwert.divide(bdIstZeit, BigDecimal.ROUND_HALF_EVEN); } else { zeile[HF_POSITION_PREIS] = new BigDecimal(0); } AuftragzeitenDto[] maschinenzeiten = getZeiterfassungFac().getAllMaschinenzeitenEinesBeleges( item.getI_id(), lossollarbeitsplanDto[j].getIId(), null, tsStichtag, theClientDto); BigDecimal bdArbeitszeitwertMaschine = new BigDecimal(0); BigDecimal bdIstZeitMaschine = new BigDecimal(0); for (int k = 0; k < maschinenzeiten.length; k++) { bdArbeitszeitwertMaschine = bdArbeitszeitwertMaschine.add(maschinenzeiten[k].getBdKosten()); bdIstZeitMaschine = bdIstZeitMaschine .add(new BigDecimal(maschinenzeiten[k].getDdDauer().doubleValue())); } if (lossollarbeitsplanDto[j].getMaschineIId() == null) { zeile[HF_POSITION_AUSGEGEBEN_MASCHINE] = new BigDecimal(0); } else { zeile[HF_POSITION_AUSGEGEBEN_MASCHINE] = lossollarbeitsplanDto[j].getNGesamtzeit(); } theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert); BigDecimal restistMaschine = bdIstZeitMaschine.subtract(theoretischabgeliefert); if (restistMaschine.doubleValue() <= 0) { restistMaschine = new BigDecimal(0); } if (theoretischabgeliefert.doubleValue() > bdIstZeitMaschine.doubleValue()) { theoretischabgeliefert = bdIstZeitMaschine; } zeile[HF_POSITION_ABGELIFERT_MASCHINE] = theoretischabgeliefert; zeile[HF_POSITION_OFFEN_MASCHINE] = restistMaschine; if (bdIstZeitMaschine.doubleValue() != 0) { zeile[HF_POSITION_PREIS_MASCHINE] = bdArbeitszeitwertMaschine.divide(bdIstZeitMaschine, BigDecimal.ROUND_HALF_EVEN); } else { zeile[HF_POSITION_PREIS_MASCHINE] = new BigDecimal(0); } if (bVerdichtet) { if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_POSITION_ARTIKELNUMMMER] .equals(zeile[HF_POSITION_ARTIKELNUMMMER])) { bGefunden = true; zeileTemp[HF_LOSNUMMER] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_LOSNUMMER].equals(zeile[HF_LOSNUMMER])) { bGefunden = true; zeileTemp[HF_POSITION_ARTIKELNUMMMER] = ""; zeileTemp[HF_POSITION_BEZEICHNUNG] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } } else { alDaten.add(zeile); } zeile = new Object[17]; zeile[HF_LOSNUMMER] = item.getC_nr(); } } mapParameter.put(LPReport.P_WAEHRUNG, theClientDto.getSMandantenwaehrung()); mapParameter.put("P_VERDICHTET", new Boolean(bVerdichtet)); if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) { // Sortierng nach Losnr data = new Object[alDaten.size()][17]; data = (Object[][]) alDaten.toArray(data); initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_HALBFERTIGFABRIKATSINVENTUR, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) { // Sortieren nach Identnr for (int k = alDaten.size() - 1; k > 0; --k) { for (int j = 0; j < k; ++j) { Object[] a1 = (Object[]) alDaten.get(j); Object[] a2 = (Object[]) alDaten.get(j + 1); if (((String) a1[HF_POSITION_ARTIKELNUMMMER]) .compareTo((String) a2[HF_POSITION_ARTIKELNUMMMER]) > 0) { alDaten.set(j, a2); alDaten.set(j + 1, a1); } } } data = new Object[alDaten.size()][17]; data = (Object[][]) alDaten.toArray(data); initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_HALBFERTIGFABRIKATSINVENTUR_IDENT, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); } return getReportPrint(); } catch (RemoteException t) { throwEJBExceptionLPRespectOld(t); } finally { closeSession(session); } return getReportPrint(); }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
private Object[][] getDataAusgabeListe(Integer[] losIId, Integer iSortierung, boolean bVerdichtetNachIdent, boolean bVorrangigNachFarbcodeSortiert, Integer artikelklasseIId, TheClientDto theClientDto) { Session session = null;/*from ww w . ja v a2 s . co m*/ Object[][] dataLokal = null; try { SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRLossollmaterial.class); c.add(Restrictions.in(FertigungFac.FLR_LOSSOLLMATERIAL_LOS_I_ID, losIId)); if (artikelklasseIId != null) { c.createAlias("flrartikel", "a").createAlias("a.flrartikelklasse", "kl") .add(Restrictions.eq("kl.i_id", artikelklasseIId)); } List<?> list = c.list(); // positionen verdichten LinkedHashMap<Integer, ReportLosAusgabelisteDto> listVerdichtet = new LinkedHashMap<Integer, ReportLosAusgabelisteDto>(); for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLRLossollmaterial sollmat = (FLRLossollmaterial) iter.next(); LosistmaterialDto[] mat = getFertigungFac() .losistmaterialFindByLossollmaterialIId(sollmat.getI_id()); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(sollmat.getFlrartikel().getI_id(), theClientDto); LoslagerentnahmeDto[] laeger = getFertigungFac() .loslagerentnahmeFindByLosIId(sollmat.getLos_i_id()); BigDecimal lagerstand = new BigDecimal(0); if (Helper.short2boolean(artikelDto.getBLagerbewirtschaftet()) == true) { for (int i = 0; i < laeger.length; i++) { lagerstand = lagerstand.add(getLagerFac().getLagerstandOhneExc(artikelDto.getIId(), laeger[i].getLagerIId(), theClientDto)); } } BigDecimal inFertigung = getFertigungFac().getAnzahlInFertigung(artikelDto.getIId(), theClientDto); BigDecimal lagerstandSperrlager = getLagerFac() .getLagerstandAllerSperrlaegerEinesMandanten(artikelDto.getIId(), theClientDto); // Artikelkommentar Text und Bild Image imageKommentar = null; String sArtikelKommentar = ""; try { ArtikelkommentarDto[] aKommentarDto = getArtikelkommentarFac() .artikelkommentardruckFindByArtikelIIdBelegartCNr(artikelDto.getIId(), LocaleFac.BELEGART_LOS, theClientDto.getLocUiAsString(), theClientDto); // Artikelkommentar kann Text oder Bild sein if (aKommentarDto != null) { for (int k = 0; k < aKommentarDto.length; k++) { String cDatenformat = aKommentarDto[k].getDatenformatCNr().trim(); if (cDatenformat.indexOf(MediaFac.DATENFORMAT_MIMETYPEART_TEXT) != -1) { sArtikelKommentar += "\n" + aKommentarDto[k].getArtikelkommentarsprDto().getXKommentar(); } else if (cDatenformat.indexOf(MediaFac.DATENFORMAT_MIMETYPEART_IMAGE) != -1) { // es wird hoechstens 1 Bild pro Belegart // gedruckt imageKommentar = Helper .byteArrayToImage(aKommentarDto[k].getArtikelkommentarsprDto().getOMedia()); } } } } catch (RemoteException ex3) { throwEJBExceptionLPRespectOld(ex3); } if (mat.length == 0) { ReportLosAusgabelisteDto dto = new ReportLosAusgabelisteDto(); dto.setISchale(sollmat.getI_lfdnummer()); dto.setNAusgabe(new BigDecimal(0)); dto.setNMenge(sollmat.getN_menge()); dto.setNLagerstand(lagerstand); dto.setNLagerstandSperrlager(lagerstandSperrlager); dto.setNInFertigung(inFertigung); dto.setArtikelbild(imageKommentar); dto.setSKommentar(sArtikelKommentar); dto.setBNurZurInfo(Helper.short2Boolean(artikelDto.getbNurzurinfo())); if (artikelDto.getFarbcodeIId() != null) { dto.setSFarbcode( getArtikelFac().farbcodeFindByPrimaryKey(artikelDto.getFarbcodeIId()).getCNr()); } dto.setSBezeichnung(artikelDto.getArtikelsprDto().getCBez()); dto.setSZusatzBezeichnung(artikelDto.getArtikelsprDto().getCZbez()); dto.setSZusatzBezeichnung2(artikelDto.getArtikelsprDto().getCZbez2()); dto.setSEinheit(sollmat.getFlrartikel().getEinheit_c_nr()); // Material if (artikelDto.getMaterialIId() != null) { MaterialDto materialDto = getMaterialFac() .materialFindByPrimaryKey(artikelDto.getMaterialIId(), theClientDto); dto.setSMaterial(materialDto.getBezeichnung()); } // Staerke/Hoehe if (artikelDto.getGeometrieDto() != null) { if (artikelDto.getGeometrieDto().getFHoehe() != null) { dto.setDHoehe(artikelDto.getGeometrieDto().getFHoehe()); } if (artikelDto.getGeometrieDto().getFBreite() != null) { dto.setDBreite(artikelDto.getGeometrieDto().getFBreite()); } if (artikelDto.getGeometrieDto().getFTiefe() != null) { dto.setDTiefe(artikelDto.getGeometrieDto().getFTiefe()); } } dto.setSRevision(artikelDto.getCRevision()); dto.setSIndex(artikelDto.getCIndex()); // Verpackung if (artikelDto.getVerpackungDto() != null) { dto.setSBauform(artikelDto.getVerpackungDto().getCBauform()); dto.setSVerpackungsart(artikelDto.getVerpackungDto().getCVerpackungsart()); } // Gewicht dto.setDGewichtkg(artikelDto.getFGewichtkg()); // Montage Rasterstehend if (artikelDto.getMontageDto() != null && artikelDto.getMontageDto().getFRasterstehend() != null) { dto.setDRasterstehend(artikelDto.getMontageDto().getFRasterstehend().doubleValue()); } String sIdent; if (sollmat.getFlrartikel().getArtikelart_c_nr().equals(ArtikelFac.ARTIKELART_HANDARTIKEL)) { sIdent = ""; } else { sIdent = sollmat.getFlrartikel().getC_nr(); } dto.setSIdent(sIdent); if (sollmat.getFlrartikel().getFlrartikelklasse() != null) { dto.setSArtikelklasse(sollmat.getFlrartikel().getFlrartikelklasse().getC_nr()); } if (sollmat.getMontageart_i_id() != null) { MontageartDto montageartDto = getStuecklisteFac() .montageartFindByPrimaryKey(sollmat.getMontageart_i_id(), theClientDto); dto.setSMontageart(montageartDto.getCBez()); } LosDto losDto = getFertigungFac().losFindByPrimaryKey(sollmat.getLos_i_id()); LagerDto lagerDto = getLagerFac().lagerFindByPrimaryKey(losDto.getLagerIIdZiel()); dto.setSLager(lagerDto.getCNr()); String sLagerort = getLagerFac().getLagerplaezteEinesArtikels(sollmat.getFlrartikel().getI_id(), losDto.getLagerIIdZiel()); dto.setSLagerort(sLagerort); // offene Bestellmenge dto.setBdAnzahlBestellt(getArtikelbestelltFac().getAnzahlBestellt(artikelDto.getIId())); // Stuecklistepositionskommentar if (sollmat.getFlrlos().getStueckliste_i_id() != null) { try { StuecklistepositionDto[] stuecklistepositionDto = getStuecklisteFac() .stuecklistepositionFindByStuecklisteIIdArtikelIId( sollmat.getFlrlos().getStueckliste_i_id(), artikelDto.getIId(), theClientDto); StringBuffer sbKommentarStuecklistepos = new StringBuffer(); // wenn ein Artikel mehrfach vorkommt und ich ja // nicht entscheiden kann, an // welcher Stelle ich bin, alle Kommentar // aneinanderhaengen for (int k = 0; k < stuecklistepositionDto.length; k++) { sbKommentarStuecklistepos.append(stuecklistepositionDto[0].getCKommentar()); } if (sbKommentarStuecklistepos.length() > 0) { dto.setSKommentarStueckliste(sbKommentarStuecklistepos.toString()); } } catch (EJBExceptionLP e) { // ok } } // key ist -i_id, damit ich keine vorhandenen eintraege // ueberschreibe // verdichten nach ident Iterator<Integer> it = listVerdichtet.keySet().iterator(); boolean bGefunden = false; if (bVerdichtetNachIdent) { while (it.hasNext()) { Object key = it.next(); ReportLosAusgabelisteDto temp = (ReportLosAusgabelisteDto) listVerdichtet.get(key); if ((temp.getSLager() == null && lagerDto.getCNr() == null) || (temp.getSLager() != null && lagerDto.getCNr() != null)) { if ((temp.getSLager() == null && lagerDto.getCNr() == null) || (temp.getSLager().equals(lagerDto.getCNr()))) { if (temp.getSIdent().equals(sIdent) && !temp.getSIdent().equals("")) { bGefunden = true; dto.setNMenge(dto.getNMenge().add(temp.getNMenge())); dto.setNAusgabe(dto.getNAusgabe().add(temp.getNAusgabe())); listVerdichtet.put((Integer) key, dto); continue; } } } } } if (bGefunden == false) { listVerdichtet.put(new Integer(-sollmat.getI_id().intValue()), dto); } } else { for (int i = 0; i < mat.length; i++) { BigDecimal ausgabemenge = new BigDecimal(0); Integer lagerIId = null; if (Helper.short2boolean(mat[i].getBAbgang()) == true) { ausgabemenge = ausgabemenge.add(mat[i].getNMenge()); } else { ausgabemenge = ausgabemenge.add(mat[i].getNMenge().multiply(new BigDecimal(-1))); } lagerIId = mat[i].getLagerIId(); ReportLosAusgabelisteDto dto = new ReportLosAusgabelisteDto(); dto.setISchale(sollmat.getI_lfdnummer()); dto.setNAusgabe(ausgabemenge); dto.setArtikelbild(imageKommentar); dto.setSKommentar(sArtikelKommentar); dto.setNLagerstand(lagerstand); dto.setNLagerstandSperrlager(lagerstandSperrlager); dto.setNInFertigung(inFertigung); // Sollmenge zaehlt nur beim ersten eintrag if (i == 0) { dto.setNMenge(sollmat.getN_menge()); } else { dto.setNMenge(new BigDecimal(0)); } if (sollmat.getFlrartikel().getFlrartikelklasse() != null) { dto.setSArtikelklasse(sollmat.getFlrartikel().getFlrartikelklasse().getC_nr()); } else { dto.setSArtikelklasse(""); } if (artikelDto.getFarbcodeIId() != null) { dto.setSFarbcode( getArtikelFac().farbcodeFindByPrimaryKey(artikelDto.getFarbcodeIId()).getCNr()); } dto.setSBezeichnung(artikelDto.getArtikelsprDto().getCBez()); dto.setSZusatzBezeichnung(artikelDto.getArtikelsprDto().getCZbez()); dto.setSZusatzBezeichnung2(artikelDto.getArtikelsprDto().getCZbez2()); dto.setSEinheit(sollmat.getFlrartikel().getEinheit_c_nr()); dto.setBNurZurInfo(Helper.short2Boolean(artikelDto.getbNurzurinfo())); // Material if (artikelDto.getMaterialIId() != null) { MaterialDto materialDto = getMaterialFac() .materialFindByPrimaryKey(artikelDto.getMaterialIId(), theClientDto); dto.setSMaterial(materialDto.getBezeichnung()); } // Staerke/Hoehe if (artikelDto.getGeometrieDto() != null) { if (artikelDto.getGeometrieDto().getFHoehe() != null) { dto.setDHoehe(artikelDto.getGeometrieDto().getFHoehe()); } if (artikelDto.getGeometrieDto().getFBreite() != null) { dto.setDBreite(artikelDto.getGeometrieDto().getFBreite()); } if (artikelDto.getGeometrieDto().getFTiefe() != null) { dto.setDTiefe(artikelDto.getGeometrieDto().getFTiefe()); } } // Verpackung if (artikelDto.getVerpackungDto() != null) { dto.setSBauform(artikelDto.getVerpackungDto().getCBauform()); dto.setSVerpackungsart(artikelDto.getVerpackungDto().getCVerpackungsart()); } // Gewicht dto.setDGewichtkg(artikelDto.getFGewichtkg()); dto.setSRevision(artikelDto.getCRevision()); dto.setSIndex(artikelDto.getCIndex()); // Montage Rasterstehend if (artikelDto.getMontageDto() != null && artikelDto.getMontageDto().getFRasterstehend() != null) { dto.setDRasterstehend(artikelDto.getMontageDto().getFRasterstehend().doubleValue()); } if (Helper.short2boolean(artikelDto.getBSeriennrtragend()) || Helper.short2boolean(artikelDto.getBChargennrtragend())) { List<SeriennrChargennrMitMengeDto> snrChnrDtos = getLagerFac() .getAllSeriennrchargennrEinerBelegartposition(LocaleFac.BELEGART_LOS, mat[i].getIId()); if (snrChnrDtos != null) { String snrchnr = ""; for (int s = 0; s < snrChnrDtos.size(); s++) { SeriennrChargennrMitMengeDto snrChnrDto = snrChnrDtos.get(s); if (dto.getNAusgabe().doubleValue() < 0) { snrchnr += "-"; } snrchnr += Helper.formatZahl(snrChnrDto.getNMenge(), 4, theClientDto.getLocUi()) + " "; snrchnr += snrChnrDto.getCSeriennrChargennr() + "; "; } dto.setSSnrChnr(snrchnr); } } // offene Bestellmenge dto.setBdAnzahlBestellt(getArtikelbestelltFac().getAnzahlBestellt(artikelDto.getIId())); String sIdent; if (sollmat.getFlrartikel().getArtikelart_c_nr() .equals(ArtikelFac.ARTIKELART_HANDARTIKEL)) { sIdent = ""; } else { sIdent = sollmat.getFlrartikel().getC_nr(); } dto.setSIdent(sIdent); LagerDto lagerDto = getLagerFac().lagerFindByPrimaryKey(lagerIId); dto.setSLager(lagerDto.getCNr()); String sLagerort = getLagerFac() .getLagerplaezteEinesArtikels(sollmat.getFlrartikel().getI_id(), lagerDto.getIId()); dto.setSLagerort(sLagerort); if (sollmat.getMontageart_i_id() != null) { MontageartDto montageartDto = getStuecklisteFac() .montageartFindByPrimaryKey(sollmat.getMontageart_i_id(), theClientDto); dto.setSMontageart(montageartDto.getCBez()); } // Stuecklistepositionskommentar if (sollmat.getFlrlos().getStueckliste_i_id() != null) { try { StuecklistepositionDto[] stuecklistepositionDto = getStuecklisteFac() .stuecklistepositionFindByStuecklisteIIdArtikelIId( sollmat.getFlrlos().getStueckliste_i_id(), artikelDto.getIId(), theClientDto); StringBuffer sbKommentarStuecklistepos = new StringBuffer(); // wenn ein Artikel mehrfach vorkommt und ich ja // nicht entscheiden kann, an // welcher Stelle ich bin, alle Kommentar // aneinanderhaengen for (int k = 0; k < stuecklistepositionDto.length; k++) { sbKommentarStuecklistepos.append(stuecklistepositionDto[0].getCKommentar()); } if (sbKommentarStuecklistepos.length() > 0) { dto.setSKommentarStueckliste(sbKommentarStuecklistepos.toString()); } } catch (EJBExceptionLP e) { // ok } } // verdichten nach ident Iterator<Integer> it = listVerdichtet.keySet().iterator(); boolean bGefunden = false; if (bVerdichtetNachIdent) { while (it.hasNext()) { Object key = it.next(); ReportLosAusgabelisteDto temp = (ReportLosAusgabelisteDto) listVerdichtet.get(key); if ((temp.getSLager() == null && lagerDto.getCNr() == null) || (temp.getSLager() != null && lagerDto.getCNr() != null)) { if ((temp.getSLager() == null && lagerDto.getCNr() == null) || (temp.getSLager().equals(lagerDto.getCNr()))) { if (temp.getSIdent().equals(sIdent) && !temp.getSIdent().equals("")) { bGefunden = true; dto.setNMenge(dto.getNMenge().add(temp.getNMenge())); dto.setNAusgabe(dto.getNAusgabe().add(temp.getNAusgabe())); // PJ 14410 if (temp.getSSnrChnr() != null) { dto.setSSnrChnr(dto.getSSnrChnr() + (temp.getSSnrChnr())); } listVerdichtet.put((Integer) key, dto); continue; } } } } } if (bGefunden == false) { listVerdichtet.put(mat[i].getIId(), dto); } } } } // Sortieren, dazu brauch ich einen anderen container-typ LinkedList<ReportLosAusgabelisteDto> listVerdichtetUndSortiert = new LinkedList<ReportLosAusgabelisteDto>(); for (Iterator<Integer> iter = listVerdichtet.keySet().iterator(); iter.hasNext();) { listVerdichtetUndSortiert.add(listVerdichtet.get(iter.next())); } Collections.sort(listVerdichtetUndSortiert, new ComparatorAusgabeListe(iSortierung.intValue(), bVorrangigNachFarbcodeSortiert)); dataLokal = new Object[listVerdichtet.size()][AUSG_SPALTENANZAHL]; int i = 0; for (Iterator<ReportLosAusgabelisteDto> iter = listVerdichtetUndSortiert.iterator(); iter .hasNext(); i++) { ReportLosAusgabelisteDto item = (ReportLosAusgabelisteDto) iter.next(); dataLokal[i][AUSG_ARTIKELKLASSE] = item.getSArtikelklasse(); dataLokal[i][AUSG_NUR_ZUR_INFO] = item.getBNurZurInfo(); dataLokal[i][AUSG_AUSGABE] = item.getNAusgabe(); dataLokal[i][AUSG_BEZEICHNUNG] = item.getSBezeichnung(); dataLokal[i][AUSG_ZUSATZBEZEICHNUNG] = item.getSZusatzBezeichnung(); dataLokal[i][AUSG_ZUSATZBEZEICHNUNG2] = item.getSZusatzBezeichnung2(); dataLokal[i][AUSG_EINHEIT] = item.getSEinheit(); dataLokal[i][AUSG_IDENT] = item.getSIdent(); dataLokal[i][AUSG_LAGER] = item.getSLager(); dataLokal[i][AUSG_LAGERORT] = item.getSLagerort(); dataLokal[i][AUSG_MENGE] = item.getNMenge(); dataLokal[i][AUSG_MONTAGEART] = item.getSMontageart(); dataLokal[i][AUSG_SCHALE] = item.getISchale(); dataLokal[i][AUSG_SNRCHNR] = item.getSSnrChnr(); dataLokal[i][AUSG_ARTIKELBILD] = item.getArtikelbild(); dataLokal[i][AUSG_KOMMENTAR] = item.getSKommentar(); dataLokal[i][AUSG_LAGERSTAND] = item.getNLagerstand(); dataLokal[i][AUSG_LAGERSTAND_SPERRLAGER] = item.getNLagerstandSperrlager(); dataLokal[i][AUSG_REVISION] = item.getSRevision(); dataLokal[i][AUSG_INDEX] = item.getSIndex(); // CK: Farbcode einfuegen dataLokal[i][AUSG_FARBCODE] = item.getSFarbcode(); if (item.getDHoehe() != null && item.getDHoehe() != 0) { dataLokal[i][AUSG_HOEHE] = new Double(item.getDHoehe()); } if (item.getDBreite() != null && item.getDBreite() != 0) { dataLokal[i][AUSG_BREITE] = new Double(item.getDBreite()); } if (item.getDTiefe() != null && item.getDTiefe() != 0) { dataLokal[i][AUSG_TIEFE] = new Double(item.getDTiefe()); } dataLokal[i][AUSG_MATERIAL] = item.getSMaterial(); // Verpackung if (item.getSBauform() != null) { dataLokal[i][AUSG_BAUFORM] = item.getSBauform(); } if (item.getSVerpackungsart() != null) { dataLokal[i][AUSG_VERPACKUNGSART] = item.getSVerpackungsart(); } // Gewicht if (item.getDGewichtkg() != null && item.getDGewichtkg() != 0) { dataLokal[i][AUSG_GEWICHTKG] = item.getDGewichtkg(); } // Montage Rasterstehend if (item.getDRasterstehend() != null && item.getDRasterstehend() != 0) { dataLokal[i][AUSG_RASTERSTEHEND] = item.getDRasterstehend(); } dataLokal[i][AUSG_BESTELLT] = item.getBdAnzahlBestellt(); dataLokal[i][AUSG_IN_FERTIGUNG] = item.getNInFertigung(); dataLokal[i][AUSG_STUECKLISTE_KOMMENTAR] = item.getSKommentarStueckliste(); } } catch (Exception t) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER, t); } finally { closeSession(session); } return dataLokal; }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printLosstatistik(java.sql.Timestamp tVon, java.sql.Timestamp tBis, Integer losIId, Integer stuecklisteIId, Integer auftragIId, boolean bArbeitsplanSortiertNachAG, boolean bVerdichtet, java.sql.Timestamp tStichtag, TheClientDto theClientDto) { this.useCase = UC_LOSSTATISTIK; this.index = -1; SessionFactory factory = FLRSessionFactory.getFactory(); Session session = factory.openSession(); PersonalDto[] personalDtos = null;/*w w w .ja va2 s .c om*/ MaschineDto[] maschineDtos = null; try { personalDtos = getPersonalFac().personalFindByMandantCNr(theClientDto.getMandant(), true); maschineDtos = getZeiterfassungFac().maschineFindByMandantCNr(theClientDto.getMandant()); } catch (RemoteException ex1) { throwEJBExceptionLPRespectOld(ex1); } Map<String, Object> mapParameter = new TreeMap<String, Object>(); Criteria c = session.createCriteria(FLRLosReport.class); c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, new String[] { LocaleFac.STATUS_ANGELEGT, LocaleFac.STATUS_STORNIERT }))); if (stuecklisteIId != null) { c.add(Restrictions.eq(FertigungFac.FLR_LOS_STUECKLISTE_I_ID, stuecklisteIId)); StuecklisteDto stuecklisteDto = getStuecklisteFac().stuecklisteFindByPrimaryKey(stuecklisteIId, theClientDto); mapParameter.put("P_STUECKLISTE", stuecklisteDto.getArtikelDto().formatArtikelbezeichnung()); } if (losIId != null) { c.add(Restrictions.eq("i_id", losIId)); } if (auftragIId != null) { c.createAlias("flrauftrag", "a").add(Restrictions.eq("a.i_id", auftragIId)); try { AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(auftragIId); KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto); mapParameter.put("P_AUFTRAG", auftragDto.getCNr()); mapParameter.put("P_AUFTRAGPROJEKT", auftragDto.getCBezProjektbezeichnung()); mapParameter.put("P_AUFTRAGKUNDE", kundeDto.getPartnerDto().formatAnrede()); mapParameter.put("P_BEARBEITER", getPersonalFac().getPersonRpt(auftragDto.getPersonalIIdAnlegen(), theClientDto)); if (auftragDto.getPersonalIIdVertreter() != null) { mapParameter.put("P_VERTRETER", getPersonalFac().getPersonRpt(auftragDto.getPersonalIIdVertreter(), theClientDto)); } } catch (RemoteException ex2) { throwEJBExceptionLPRespectOld(ex2); } } if (tStichtag != null) { mapParameter.put("P_STICHTAG", tStichtag);// new // Timestamp(tStichtag.getTime())); tStichtag = Helper.cutTimestamp(new Timestamp(tStichtag.getTime() + 24 * 3600000)); } if (losIId == null && auftragIId == null) { if (tVon != null) { c.add(Restrictions.or(Restrictions.ge(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tVon), Restrictions.ge(FertigungFac.FLR_LOS_T_ERLEDIGT, tVon))); mapParameter.put("P_VON", tVon); } if (tBis != null) { c.add(Restrictions.or(Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tBis), Restrictions.lt(FertigungFac.FLR_LOS_T_ERLEDIGT, tBis))); mapParameter.put("P_BIS", new Timestamp(tBis.getTime() - 3600000)); } if (tStichtag != null) { c.add(Restrictions.or(Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_ANLEGEN, tStichtag), Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_ANLEGEN, tStichtag))); c.add(Restrictions.or(Restrictions.ge(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tStichtag), Restrictions.ge(FertigungFac.FLR_LOS_T_ERLEDIGT, tStichtag))); } } c.addOrder(Order.asc("c_nr")); List<?> results = c.list(); ArrayList<LosStatistikDto> al = new ArrayList<LosStatistikDto>(); Iterator<?> resultListIterator = results.iterator(); while (resultListIterator.hasNext()) { FLRLosReport los = (FLRLosReport) resultListIterator.next(); try { LosDto losDto = getFertigungFac().losFindByPrimaryKey(los.getI_id()); BigDecimal abgeliefert = new BigDecimal(0); for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iter2.next(); abgeliefert = abgeliefert.add(item.getN_menge()); } // VKpreis BigDecimal vkPreis = null; if (los.getFlrauftragposition() != null) { vkPreis = los.getFlrauftragposition() .getN_nettogesamtpreisplusversteckteraufschlagminusrabatte(); } else { if (los.getFlrstueckliste() != null) { Integer kundeIId = null; if (los.getFlrauftrag() != null) { kundeIId = los.getFlrauftrag().getFlrkunde().getI_id(); } if (kundeIId == null && los.getFlrkunde() != null) { kundeIId = los.getFlrkunde().getI_id(); } if (kundeIId != null) { KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto); MwstsatzDto mwstsatzDtoAktuell = getMandantFac() .mwstsatzFindByMwstsatzbezIIdAktuellster(kundeDto.getMwstsatzbezIId(), theClientDto); VkpreisfindungDto vkpreisfindungDto = getVkPreisfindungFac().verkaufspreisfindung( los.getFlrstueckliste().getArtikel_i_id(), kundeIId, losDto.getNLosgroesse(), losDto.getTProduktionsende(), kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(), mwstsatzDtoAktuell.getIId(), theClientDto.getSMandantenwaehrung(), theClientDto); VerkaufspreisDto kundenVKPreisDto = Helper.getVkpreisBerechnet(vkpreisfindungDto); if (kundenVKPreisDto != null) { vkPreis = kundenVKPreisDto.nettopreis; } } else { VkPreisfindungEinzelverkaufspreisDto vkpreisDto = getVkPreisfindungFac() .getArtikeleinzelverkaufspreis(los.getFlrstueckliste().getArtikel_i_id(), null, theClientDto.getSMandantenwaehrung(), theClientDto); if (vkpreisDto != null && vkpreisDto.getNVerkaufspreisbasis() != null) { vkPreis = vkpreisDto.getNVerkaufspreisbasis(); } } } } // Zuerst Material Session session2 = factory.openSession(); Criteria cSoll = session.createCriteria(FLRLossollmaterial.class); cSoll.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLMATERIAL_LOS_I_ID, los.getI_id())); cSoll.createAlias("flrartikel", "a"); cSoll.addOrder(Order.asc("a.c_nr")); List<?> resultsSoll = cSoll.list(); Iterator<?> resultListIteratorSoll = resultsSoll.iterator(); while (resultListIteratorSoll.hasNext()) { FLRLossollmaterial sollmat = (FLRLossollmaterial) resultListIteratorSoll.next(); if (bVerdichtet == false && sollmat.getIstmaterialset().size() > 0) { int i = 0; for (Iterator<?> iter = sollmat.getIstmaterialset().iterator(); iter.hasNext();) { FLRLosistmaterial item = (FLRLosistmaterial) iter.next(); LosStatistikDto losStatistikDto = new LosStatistikDto(losDto); losStatistikDto.setArtikelnummer(sollmat.getFlrartikel().getC_nr()); ArtikelDto artikelDto = getArtikelFac() .artikelFindByPrimaryKeySmall(sollmat.getFlrartikel().getI_id(), theClientDto); losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung()); Timestamp tsBuchungszeit = null; List<SeriennrChargennrMitMengeDto> snrDtos = getLagerFac() .getAllSeriennrchargennrEinerBelegartposition(LocaleFac.BELEGART_LOS, item.getI_id()); for (int k = 0; k < snrDtos.size(); k++) { LagerbewegungDto bewDto = getLagerFac().getLetzteintrag(LocaleFac.BELEGART_LOS, item.getI_id(), snrDtos.get(k).getCSeriennrChargennr()); tsBuchungszeit = bewDto.getTBuchungszeit(); break; } losStatistikDto.setBuchungszeit(tsBuchungszeit); if (i == 0) { losStatistikDto.setSollmenge(sollmat.getN_menge()); losStatistikDto.setSollpreis(sollmat.getN_sollpreis()); } else { losStatistikDto.setSollmenge(new BigDecimal(0)); losStatistikDto.setSollpreis(new BigDecimal(0)); } losStatistikDto.setBMaterial(true); losStatistikDto.setIstpreis(getFertigungFac() .getAusgegebeneMengePreis(sollmat.getI_id(), null, theClientDto)); losStatistikDto.setAbgelieferteMenge(abgeliefert); losStatistikDto.setVkpreisStueckliste(vkPreis); BigDecimal istmenge = new BigDecimal(0); if (Helper.short2boolean(item.getB_abgang()) == true) { istmenge = istmenge.add(item.getN_menge()); } else { istmenge = istmenge.subtract(item.getN_menge()); } losStatistikDto.setIstmenge(istmenge); if (tStichtag == null) { al.add(losStatistikDto); i++; } else { if (tsBuchungszeit == null) { al.add(losStatistikDto); i++; } else { if (tsBuchungszeit.before(tStichtag)) { al.add(losStatistikDto); i++; } } } } } else { LosStatistikDto losStatistikDto = new LosStatistikDto(losDto); losStatistikDto.setArtikelnummer(sollmat.getFlrartikel().getC_nr()); ArtikelDto artikelDto = getArtikelFac() .artikelFindByPrimaryKeySmall(sollmat.getFlrartikel().getI_id(), theClientDto); losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung()); losStatistikDto.setSollmenge(sollmat.getN_menge()); losStatistikDto.setSollpreis(sollmat.getN_sollpreis()); losStatistikDto.setBMaterial(true); losStatistikDto.setIstpreis( getFertigungFac().getAusgegebeneMengePreis(sollmat.getI_id(), null, theClientDto)); losStatistikDto.setAbgelieferteMenge(abgeliefert); losStatistikDto.setVkpreisStueckliste(vkPreis); BigDecimal istmenge = new BigDecimal(0); for (Iterator<?> iter = sollmat.getIstmaterialset().iterator(); iter.hasNext();) { FLRLosistmaterial item = (FLRLosistmaterial) iter.next(); if (tStichtag != null) { Timestamp tsBuchungszeit = null; List<SeriennrChargennrMitMengeDto> snrDtos = getLagerFac() .getAllSeriennrchargennrEinerBelegartposition(LocaleFac.BELEGART_LOS, item.getI_id()); for (int k = 0; k < snrDtos.size(); k++) { LagerbewegungDto bewDto = getLagerFac().getLetzteintrag(LocaleFac.BELEGART_LOS, item.getI_id(), snrDtos.get(k).getCSeriennrChargennr()); tsBuchungszeit = bewDto.getTBuchungszeit(); break; } if (tsBuchungszeit.after(tStichtag)) { continue; } } if (Helper.short2boolean(item.getB_abgang()) == true) { istmenge = istmenge.add(item.getN_menge()); } else { istmenge = istmenge.subtract(item.getN_menge()); } } losStatistikDto.setIstmenge(istmenge); al.add(losStatistikDto); } } session2.close(); LossollarbeitsplanDto[] lossollarbeitsplanDtos = getFertigungFac() .lossollarbeitsplanFindByLosIId(los.getI_id()); // PJ14351 Nach AG sortieren if (bArbeitsplanSortiertNachAG == true) { // Nach Fertigungsgruppe sortieren for (int k = lossollarbeitsplanDtos.length - 1; k > 0; --k) { for (int j = 0; j < k; ++j) { Integer a1 = lossollarbeitsplanDtos[j].getIArbeitsgangnummer(); Integer a2 = lossollarbeitsplanDtos[j + 1].getIArbeitsgangnummer(); if (a1.intValue() > a2.intValue()) { LossollarbeitsplanDto temp = lossollarbeitsplanDtos[j]; lossollarbeitsplanDtos[j] = lossollarbeitsplanDtos[j + 1]; lossollarbeitsplanDtos[j + 1] = temp; } } } } ArrayList<LosStatistikDto> hmSoll = new ArrayList<LosStatistikDto>(); // Zuerst Maschinenzeiten for (int i = 0; i < lossollarbeitsplanDtos.length; i++) { if (lossollarbeitsplanDtos[i].getMaschineIId() != null) { Integer artikelIId = lossollarbeitsplanDtos[i].getArtikelIIdTaetigkeit(); BigDecimal sollzeit = lossollarbeitsplanDtos[i].getNGesamtzeit(); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId, theClientDto); // Schon vorhanden? boolean bGefunden = false; for (int j = 0; j < hmSoll.size(); j++) { LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j); if (losStatistikDto.getArtikelnummer().equals(artikelDto.getCNr())) { if (lossollarbeitsplanDtos[i].getMaschineIId() .equals(losStatistikDto.getMaschineIId())) { losStatistikDto.setSollmenge(losStatistikDto.getSollmenge().add(sollzeit)); bGefunden = true; hmSoll.set(j, losStatistikDto); } } } if (!bGefunden) { LosStatistikDto losStatistikMaschineDto = new LosStatistikDto(losDto); losStatistikMaschineDto.setArtikelnummer(artikelDto.getCNr()); losStatistikMaschineDto.setArtikelbezeichnung(artikelDto.formatBezeichnung()); losStatistikMaschineDto.setSollmenge(sollzeit); losStatistikMaschineDto.setBMaterial(false); losStatistikMaschineDto.setBIstPerson(false); losStatistikMaschineDto.setAbgelieferteMenge(abgeliefert); losStatistikMaschineDto.setVkpreisStueckliste(vkPreis); losStatistikMaschineDto.setSollpreis(getZeiterfassungFac() .getMaschinenKostenZumZeitpunkt(lossollarbeitsplanDtos[i].getMaschineIId(), Helper.cutTimestamp(new Timestamp(System.currentTimeMillis())))); MaschineDto maschineDto = getZeiterfassungFac() .maschineFindByPrimaryKey(lossollarbeitsplanDtos[i].getMaschineIId()); String maschinenname = "M:"; if (maschineDto.getCIdentifikationsnr() != null) { maschinenname += maschineDto.getCIdentifikationsnr() + " "; } maschinenname += maschineDto.getCBez(); losStatistikMaschineDto.setPersonMaschine(maschinenname); losStatistikMaschineDto.setMaschineIId(maschineDto.getIId()); hmSoll.add(losStatistikMaschineDto); } } } // Dann Personalzeiten for (int i = 0; i < lossollarbeitsplanDtos.length; i++) { if (!Helper.short2boolean(lossollarbeitsplanDtos[i].getBNurmaschinenzeit())) { Integer artikelIId = lossollarbeitsplanDtos[i].getArtikelIIdTaetigkeit(); BigDecimal sollzeit = lossollarbeitsplanDtos[i].getNGesamtzeit(); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId, theClientDto); // Schon vorhanden? boolean bGefunden = false; for (int j = 0; j < hmSoll.size(); j++) { LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j); if (losStatistikDto.getArtikelnummer().equals(artikelDto.getCNr())) { if (losStatistikDto.getMaschineIId() == null) { losStatistikDto.setSollmenge(losStatistikDto.getSollmenge().add(sollzeit)); hmSoll.set(j, losStatistikDto); bGefunden = true; } } } if (!bGefunden) { LosStatistikDto losStatistikDto = new LosStatistikDto(losDto); losStatistikDto.setArtikelnummer(artikelDto.getCNr()); losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung()); losStatistikDto.setSollmenge(sollzeit); losStatistikDto.setBMaterial(false); losStatistikDto.setBIstPerson(true); losStatistikDto.setAbgelieferteMenge(abgeliefert); losStatistikDto.setVkpreisStueckliste(vkPreis); ArtikellieferantDto artikellieferantDto = getArtikelFac().getArtikelEinkaufspreis( artikelDto.getIId(), new BigDecimal(1), theClientDto.getSMandantenwaehrung(), theClientDto); if (artikellieferantDto != null && artikellieferantDto.getLief1Preis() != null) { losStatistikDto.setSollpreis(artikellieferantDto.getLief1Preis()); } else { losStatistikDto.setSollpreis(new BigDecimal(0)); } hmSoll.add(losStatistikDto); } } } // Dann Zeiten AuftragzeitenDto[] maschinenzeitenDtos = getZeiterfassungFac() .getAllMaschinenzeitenEinesBeleges(los.getI_id(), null, null, tStichtag, theClientDto); AuftragzeitenDto[] personalzeitenDtos = getZeiterfassungFac().getAllZeitenEinesBeleges( LocaleFac.BELEGART_LOS, los.getI_id(), null, null, null, tStichtag, true, false, theClientDto); for (int i = 0; i < personalzeitenDtos.length; i++) { boolean bGefunden = false; for (int j = 0; j < hmSoll.size(); j++) { LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j); if (losStatistikDto.getMaschineIId() == null) { if (losStatistikDto.getArtikelnummer().equals(personalzeitenDtos[i].getSArtikelcnr())) { bGefunden = true; } } } if (bGefunden == false) { LosStatistikDto losStatistikDto = new LosStatistikDto(losDto); losStatistikDto.setArtikelnummer(personalzeitenDtos[i].getSArtikelcnr()); losStatistikDto.setArtikelbezeichnung(personalzeitenDtos[i].getSArtikelbezeichnung()); losStatistikDto.setSollmenge(new BigDecimal(0)); losStatistikDto.setSollpreis(new BigDecimal(0)); losStatistikDto.setAbgelieferteMenge(abgeliefert); losStatistikDto.setVkpreisStueckliste(vkPreis); hmSoll.add(losStatistikDto); } } for (int i = 0; i < maschinenzeitenDtos.length; i++) { boolean bGefunden = false; if (tStichtag != null && maschinenzeitenDtos[i].getTsEnde() != null && tStichtag.before(maschinenzeitenDtos[i].getTsEnde())) { continue; } for (int j = 0; j < hmSoll.size(); j++) { LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j); if (losStatistikDto.getMaschineIId() != null && losStatistikDto.getMaschineIId() .equals(maschinenzeitenDtos[i].getIPersonalMaschinenId())) { if (losStatistikDto.getArtikelnummer() .equals(maschinenzeitenDtos[i].getSArtikelcnr())) { bGefunden = true; } } } if (bGefunden == false) { LosStatistikDto losStatistikDto = new LosStatistikDto(losDto); losStatistikDto.setArtikelnummer(maschinenzeitenDtos[i].getSArtikelcnr()); losStatistikDto.setArtikelbezeichnung(maschinenzeitenDtos[i].getSArtikelbezeichnung()); losStatistikDto.setMaschineIId(maschinenzeitenDtos[i].getIPersonalMaschinenId()); losStatistikDto.setSollmenge(new BigDecimal(0)); losStatistikDto.setSollpreis(new BigDecimal(0)); losStatistikDto.setAbgelieferteMenge(abgeliefert); losStatistikDto.setVkpreisStueckliste(vkPreis); hmSoll.add(losStatistikDto); } } for (int k = 0; k < hmSoll.size(); k++) { LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(k); losStatistikDto.setAbgelieferteMenge(abgeliefert); int iPos = al.size(); al.add(losStatistikDto); // Personen if (losStatistikDto.getMaschineIId() == null) { for (int i = 0; i < personalDtos.length; i++) { PersonalDto personalDto = personalDtos[i]; BigDecimal bdgesamtzeit = new BigDecimal(0); BigDecimal bdgesamtkosten = new BigDecimal(0); String person = ""; for (int j = 0; j < personalzeitenDtos.length; j++) { AuftragzeitenDto azDto = personalzeitenDtos[j]; if (azDto != null) { if (personalDto.getIId().equals(azDto.getIPersonalMaschinenId()) && azDto.getSArtikelcnr().equals(losStatistikDto.getArtikelnummer())) { bdgesamtzeit = bdgesamtzeit.add(new BigDecimal(azDto.getDdDauer())); bdgesamtkosten = bdgesamtkosten.add(azDto.getBdKosten()); person = azDto.getSPersonalMaschinenname(); personalzeitenDtos[j] = null; } } } if (bdgesamtzeit.doubleValue() != 0 || bdgesamtkosten.doubleValue() != 0) { LosStatistikDto losStatistikPersonDto = new LosStatistikDto(losDto); losStatistikPersonDto.setPersonMaschine(person); losStatistikPersonDto.setBMaterial(false); losStatistikPersonDto.setAbgelieferteMenge(abgeliefert); losStatistikPersonDto.setVkpreisStueckliste(vkPreis); losStatistikPersonDto.setIstmenge(bdgesamtzeit); if (bdgesamtzeit.doubleValue() != 0) { losStatistikPersonDto.setIstpreis( bdgesamtkosten.divide(bdgesamtzeit, 4, BigDecimal.ROUND_HALF_EVEN)); } else { losStatistikPersonDto.setIstpreis(new BigDecimal(0)); } al.add(losStatistikPersonDto); } } } // Maschinen if (losStatistikDto.getMaschineIId() != null) { for (int i = 0; i < maschineDtos.length; i++) { MaschineDto maschineDto = maschineDtos[i]; BigDecimal bdgesamtzeit = new BigDecimal(0); BigDecimal bdgesamtkosten = new BigDecimal(0); for (int j = 0; j < maschinenzeitenDtos.length; j++) { if (tStichtag != null && maschinenzeitenDtos[j].getTsEnde() != null && tStichtag.before(maschinenzeitenDtos[j].getTsEnde())) { continue; } AuftragzeitenDto azDto = maschinenzeitenDtos[j]; if (maschineDto.getIId().equals(azDto.getIPersonalMaschinenId()) && azDto.getSArtikelcnr().equals(losStatistikDto.getArtikelnummer())) { if (losStatistikDto.getMaschineIId().equals(azDto.getIPersonalMaschinenId())) { bdgesamtzeit = bdgesamtzeit.add(new BigDecimal(azDto.getDdDauer())); bdgesamtkosten = bdgesamtkosten.add(azDto.getBdKosten()); } } } if (bdgesamtzeit.doubleValue() != 0 || bdgesamtkosten.doubleValue() != 0) { BigDecimal kosten = bdgesamtkosten.divide(bdgesamtzeit, 4, BigDecimal.ROUND_HALF_EVEN); if (losStatistikDto.getIstmenge() != null) { losStatistikDto.setIstmenge(losStatistikDto.getIstmenge().add(bdgesamtzeit)); } else { losStatistikDto.setIstmenge(bdgesamtzeit); } if (losStatistikDto.getIstpreis() != null) { losStatistikDto.setIstpreis(losStatistikDto.getIstpreis().add(kosten)); } else { losStatistikDto.setIstpreis(kosten); } al.set(iPos, losStatistikDto); } } } } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } } session.close(); data = new Object[al.size()][23]; for (int i = 0; i < al.size(); i++) { LosStatistikDto losStatistikDto = (LosStatistikDto) al.get(i); data[i][LOSSTATISTIK_GRUPPIERUNG] = losStatistikDto.getLosDto().getCNr(); if (losStatistikDto.getLosDto().getTManuellerledigt() != null) { data[i][LOSSTATISTIK_ERLEDIGUNGSDATUM] = losStatistikDto.getLosDto().getTManuellerledigt(); } else { data[i][LOSSTATISTIK_ERLEDIGUNGSDATUM] = losStatistikDto.getLosDto().getTErledigt(); } data[i][LOSSTATISTIK_BEWERTUNG] = losStatistikDto.getLosDto().getFBewertung(); data[i][LOSSTATISTIK_GEPLANTESSOLLMATERIAL] = losStatistikDto.getLosDto().getNSollmaterial(); data[i][LOSSTATISTIK_GRUPPIERUNGBEZEICHNUNG] = losStatistikDto.getLosDto().getCProjekt(); data[i][LOSSTATISTIK_GRUPPIERUNGERLEDIGT] = losStatistikDto.getLosDto().getTErledigt(); data[i][LOSSTATISTIK_GRUPPIERUNGAUSGABE] = losStatistikDto.getLosDto().getTAusgabe(); data[i][LOSSTATISTIK_GRUPPIERUNABGELIEFERTEMENGE] = losStatistikDto.getAbgelieferteMenge(); data[i][LOSSTATISTIK_GRUPPIERUNGLOSGROESSE] = losStatistikDto.getLosDto().getNLosgroesse(); data[i][LOSSTATISTIK_GRUPPIERUNVKPREIS] = losStatistikDto.getVkpreisStueckliste(); data[i][LOSSTATISTIK_BUCHUNGSZEIT] = losStatistikDto.getBuchungszeit(); if (losStatistikDto.getLosDto().getStuecklisteIId() != null) { data[i][LOSSTATISTIK_GRUPPIERUNGSTKLARTIKEL] = getStuecklisteFac() .stuecklisteFindByPrimaryKey(losStatistikDto.getLosDto().getStuecklisteIId(), theClientDto) .getArtikelDto().formatArtikelbezeichnung(); } if (losStatistikDto.getLosDto().getAuftragIId() != null) { AuftragDto auftragDto = getAuftragFac() .auftragFindByPrimaryKey(losStatistikDto.getLosDto().getAuftragIId()); if (auftragDto.getKundeIIdAuftragsadresse() != null) { KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto); data[i][LOSSTATISTIK_GRUPPIERUNGKUNDE] = kundeDto.getPartnerDto().formatAnrede(); } } data[i][LOSSTATISTIK_ISTMENGE] = losStatistikDto.getIstmenge(); data[i][LOSSTATISTIK_ISTPREIS] = losStatistikDto.getIstpreis(); data[i][LOSSTATISTIK_PERSONALMASCHINE] = losStatistikDto.getPersonMaschine(); data[i][LOSSTATISTIK_ISTPERSON] = new Boolean(losStatistikDto.isBIstPerson()); data[i][LOSSTATISTIK_SOLLMENGE] = losStatistikDto.getSollmenge(); data[i][LOSSTATISTIK_SOLLPREIS] = losStatistikDto.getSollpreis(); data[i][LOSSTATISTIK_ARTIKELNUMMER] = losStatistikDto.getArtikelnummer(); data[i][LOSSTATISTIK_ARTIKELBEZEICHNUNG] = losStatistikDto.getArtikelbezeichnung(); data[i][LOSSTATISTIK_UNTERGRUPPEMATERIAL] = new Boolean(losStatistikDto.isBMaterial()); } initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_LOSSTATISTIK, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); }
From source file:com.lp.server.fertigung.ejbfac.InternebestellungFacBean.java
License:Open Source License
/** * Daten fuer eine Bewegungsvorschau erstellen * //www . j a va 2s .c o m * @param artikelDto * ArtikelDto * @param bInternebestellungMiteinbeziehen * boolean * @param alTheoretischeZusatzeintraege * Optional. Hier koennen der Bewegungsvorschau "kuenstlich" * weitere Eintraege hinzugefuegt werden. * @param cNrUserI * String * @return ArrayList * @throws EJBExceptionLP */ private ArrayList<BewegungsvorschauDto> getBewegungsvorschau(ArtikelDto artikelDto, boolean bInternebestellungMiteinbeziehen, ArrayList<BewegungsvorschauDto> alTheoretischeZusatzeintraege, boolean bTermineVorHeuteAufHeute, TheClientDto theClientDto, ArrayList<Integer> arLosIId) throws EJBExceptionLP { ArrayList<BewegungsvorschauDto> bewegungsvorschau = new ArrayList<BewegungsvorschauDto>(); // Zusatzeintraege hinzufuegen if (alTheoretischeZusatzeintraege != null) { // hier nur Eintraege dieses Artikels beruecksichtigen for (Iterator<?> iter = alTheoretischeZusatzeintraege.iterator(); iter.hasNext();) { BewegungsvorschauDto item = (BewegungsvorschauDto) iter.next(); if (artikelDto.getIId().equals(item.getArtikelIId())) { bewegungsvorschau.add(item); } } } Session session = null; try { SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); // ------------------------------------------------------------------ // ---- // Bestelltliste // ------------------------------------------------------------------ // ---- Criteria cBestellt = session.createCriteria(FLRArtikelbestellt.class); // Filter nach Artikel cBestellt.createAlias(ArtikelbestelltFac.FLR_ARTIKELBESTELLT_FLRARTIKEL, "a") .add(Restrictions.eq("a.i_id", artikelDto.getIId())); // Sortierung nach Liefertermin cBestellt.addOrder(Order.asc(ArtikelbestelltFac.FLR_ARTIKELBESTELLT_D_LIEFERTERMIN)); // Query ausfuehren List<?> listBestellt = cBestellt.list(); for (Iterator<?> iter = listBestellt.iterator(); iter.hasNext();) { FLRArtikelbestellt item = (FLRArtikelbestellt) iter.next(); if (item.getC_belegartnr().equals(LocaleFac.BELEGART_BESTELLUNG)) { BestellpositionDto bestpos = getBestellpositionFac() .bestellpositionFindByPrimaryKeyOhneExc(item.getI_belegartpositionid()); if (bestpos != null) { // Bestelltliste koennte inkonsistent // sein. BestellungDto bestellung = getBestellungFac() .bestellungFindByPrimaryKey(bestpos.getBestellungIId()); // wenn die Bestellung "meinem" Mandanten gehoert if (!bestellung.getStatusCNr().equals(LocaleFac.STATUS_STORNIERT)) { // if (bestellung.getTManuellGeliefert() == null) { if (bestpos.getBestellpositionstatusCNr() != null && !bestpos.getBestellpositionstatusCNr().equals(LocaleFac.STATUS_ERLEDIGT)) { if (bestellung.getMandantCNr().equals(theClientDto.getMandant())) { // Bewegungsvorschaueintrag erzeugen BewegungsvorschauDto dto = new BewegungsvorschauDto(); dto.setArtikelIId(item.getFlrartikel().getI_id()); dto.setCBelegartCNr(LocaleFac.BELEGART_BESTELLUNG); dto.setCProjekt(bestellung.getCBez()); dto.setIBelegIId(bestellung.getIId()); dto.setIBelegPositionIId(item.getI_belegartpositionid()); dto.setNMenge(item.getN_menge()); dto.setTLiefertermin(new Timestamp(item.getT_liefertermin().getTime())); dto.setTABTerminBestellung(bestpos.getTAuftragsbestaetigungstermin()); dto.setCBelegnummer(bestellung.getCNr()); // Lieferant holen LieferantDto lieferantDto = getLieferantFac().lieferantFindByPrimaryKey( bestellung.getLieferantIIdBestelladresse(), theClientDto); dto.setPartnerDto(lieferantDto.getPartnerDto()); bewegungsvorschau.add(dto); } } // } } } else { // Eintrag in der Bestelltliste, zu dem es gar keine // Bestellposition gibt // -> loeschen. getArtikelbestelltFac().removeArtikelbestellt(LocaleFac.BELEGART_BESTELLUNG, item.getI_belegartpositionid()); } } } // ------------------------------------------------------------------ // ---- // Reservierungsliste // ------------------------------------------------------------------ // ---- Criteria cReservierung = session.createCriteria(FLRArtikelreservierung.class); // Filter nach Artikel cReservierung.createAlias(ArtikelbestelltFac.FLR_ARTIKELBESTELLT_FLRARTIKEL, "a") .add(Restrictions.eq("a.i_id", artikelDto.getIId())); // Sortierung nach Liefertermin cReservierung.addOrder(Order.asc(ReservierungFac.FLR_ARTIKELRESERVIERUNG_D_LIEFERTERMIN)); // Query ausfuehren List<?> listReservierung = cReservierung.list(); for (Iterator<?> iter = listReservierung.iterator(); iter.hasNext();) { FLRArtikelreservierung item = (FLRArtikelreservierung) iter.next(); // -------------------------------------------------------------- // ------ // Auftragsreservierung // -------------------------------------------------------------- // ------ if (item.getC_belegartnr().equals(LocaleFac.BELEGART_AUFTRAG)) { AuftragpositionDto aufpos = getAuftragpositionFac() .auftragpositionFindByPrimaryKeyOhneExc(item.getI_belegartpositionid()); if (aufpos != null) { AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(aufpos.getBelegIId()); if (auftragDto.getMandantCNr().equals(theClientDto.getMandant())) { // Bewegungsvorschaueintrag erzeugen BewegungsvorschauDto dto = new BewegungsvorschauDto(); dto.setArtikelIId(item.getFlrartikel().getI_id()); dto.setCBelegartCNr(LocaleFac.BELEGART_AUFTRAG); dto.setCProjekt(auftragDto.getCBezProjektbezeichnung()); dto.setProjektIId(auftragDto.getProjektIId()); dto.setIBelegIId(auftragDto.getIId()); dto.setIBelegPositionIId(item.getI_belegartpositionid()); dto.setNMenge(item.getN_menge().negate()); // Termine vor heute werden auf heute umgerechnet Timestamp tsTermin = new Timestamp(item.getT_liefertermin().getTime()); if (tsTermin.before(getTimestamp()) && bTermineVorHeuteAufHeute) { tsTermin = Helper.cutTimestamp(getTimestamp()); } dto.setTLiefertermin(tsTermin); dto.setCBelegnummer(auftragDto.getCNr()); // Kunde holen KundeDto kundeDto = getKundeFac() .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto); dto.setPartnerDto(kundeDto.getPartnerDto()); dto.setKundeDto(kundeDto); bewegungsvorschau.add(dto); } } else { // es wurde eine Auftragsreservierung gefunden, zu der // es keine Auftragsposition gibt. // -> loeschen. getReservierungFac().removeArtikelreservierung(LocaleFac.BELEGART_AUFTRAG, item.getI_belegartpositionid()); } } // Losreservierung else if (item.getC_belegartnr().equals(LocaleFac.BELEGART_LOS)) { LossollmaterialDto losmat = getFertigungFac() .lossollmaterialFindByPrimaryKeyOhneExc(item.getI_belegartpositionid()); if (losmat != null) { LosDto losDto = getFertigungFac().losFindByPrimaryKey(losmat.getLosIId()); if (losDto.getMandantCNr().equals(theClientDto.getMandant())) { if (arLosIId != null) { // Nur bestimmte Lose beruecksichtigen boolean bGefunden = false; for (int i = 0; i < arLosIId.size(); i++) { if (losDto.getIId().equals(arLosIId.get(i))) { bGefunden = true; break; } } if (bGefunden == false) { // auslassen continue; } } // Bewegungsvorschaueintrag erzeugen BewegungsvorschauDto dto = new BewegungsvorschauDto(); dto.setArtikelIId(item.getFlrartikel().getI_id()); dto.setCBelegartCNr(LocaleFac.BELEGART_LOS); dto.setCProjekt(losDto.getCProjekt()); dto.setIBelegIId(losDto.getIId()); dto.setIBelegPositionIId(item.getI_belegartpositionid()); dto.setNMenge(item.getN_menge().negate()); // Termine vor heute werden auf heute umgerechnet Timestamp tsTermin = new Timestamp(item.getT_liefertermin().getTime()); if (tsTermin.before(getTimestamp()) && bTermineVorHeuteAufHeute) { tsTermin = Helper.cutTimestamp(getTimestamp()); } dto.setTLiefertermin(tsTermin); dto.setCBelegnummer(losDto.getCNr()); // wenn das Los auftragsbezogen ist, dann hol ich // auch den Kunden if (losDto.getAuftragpositionIId() != null || losDto.getAuftragIId() != null) { Integer auftragIId = losDto.getAuftragIId(); if (auftragIId == null) { AuftragpositionDto aufposDto = getAuftragpositionFac() .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId()); auftragIId = aufposDto.getBelegIId(); } // den finde ich ueber die Auftragsposition AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(auftragIId); dto.setProjektIId(auftragDto.getProjektIId()); KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey( auftragDto.getKundeIIdAuftragsadresse(), theClientDto); dto.setPartnerDto(kundeDto.getPartnerDto()); } bewegungsvorschau.add(dto); } } else { // es wurde eine Auftragsreservierung gefunden, zu der // es keine Auftragsposition gibt. // -> loeschen. getReservierungFac().removeArtikelreservierung(LocaleFac.BELEGART_LOS, item.getI_belegartpositionid()); } } else if (item.getC_belegartnr().equals(LocaleFac.BELEGART_KUECHE)) { Speiseplanposition speiseplanposition = em.find(Speiseplanposition.class, item.getI_belegartpositionid()); if (speiseplanposition != null) { SpeiseplanpositionDto speiseplanpositionDto = SpeiseplanpositionDtoAssembler .createDto(speiseplanposition); // Bewegungsvorschaueintrag erzeugen BewegungsvorschauDto dto = new BewegungsvorschauDto(); dto.setArtikelIId(item.getFlrartikel().getI_id()); dto.setCBelegartCNr(LocaleFac.BELEGART_KUECHE); SpeiseplanDto speiseplanDto = null; try { speiseplanDto = getKuecheFac() .speiseplanFindByPrimaryKey(speiseplanpositionDto.getSpeiseplanIId()); dto.setCBelegnummer("K"); // Projekt= Speisekassa KassaartikelDto speisekassaDto = getKuecheFac() .kassaartikelFindByPrimaryKey(speiseplanDto.getKassaartikelIId()); dto.setCProjekt(speisekassaDto.getCBez()); // Kunde = Stuecklistebezeichnung /* * StuecklisteDto stuecklisteDto = * getStuecklisteFac() .stuecklisteFindByPrimaryKey( * speiseplanDto.getStuecklisteIId(), theClientDto); */ } catch (RemoteException ex3) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex3); } dto.setIBelegIId(speiseplanDto.getIId()); dto.setIBelegPositionIId(item.getI_belegartpositionid()); dto.setNMenge(item.getN_menge().negate()); // Termine vor heute werden auf heute umgerechnet Timestamp tsTermin = new Timestamp(item.getT_liefertermin().getTime()); if (tsTermin.before(getTimestamp()) && bTermineVorHeuteAufHeute) { tsTermin = Helper.cutTimestamp(getTimestamp()); } dto.setTLiefertermin(tsTermin); bewegungsvorschau.add(dto); } else { getReservierungFac().removeArtikelreservierung(LocaleFac.BELEGART_KUECHE, item.getI_belegartpositionid()); } } } // ------------------------------------------------------------------ // ---- // Fehlmengen // ------------------------------------------------------------------ // ---- Criteria cFehlmenge = session.createCriteria(FLRFehlmenge.class); // Filter nach Artikel cFehlmenge.add(Restrictions.eq(ArtikelFac.FLR_FEHLMENGE_ARTIKEL_I_ID, artikelDto.getIId())); // Sortierung nach Liefertermin cFehlmenge.addOrder(Order.asc(ArtikelFac.FLR_FEHLMENGE_T_LIEFERTERMIN)); List<?> listFehlmenge = cFehlmenge.list(); for (Iterator<?> iter = listFehlmenge.iterator(); iter.hasNext();) { FLRFehlmenge item = (FLRFehlmenge) iter.next(); // kontrollieren, ob das los auch von diesem mandanten ist if (item.getFlrlossollmaterial() != null && item.getFlrlossollmaterial().getFlrlos() .getMandant_c_nr().equals(theClientDto.getMandant())) { // Los holen LosDto losDto = getFertigungFac() .losFindByPrimaryKey(item.getFlrlossollmaterial().getFlrlos().getI_id()); if (arLosIId != null) { // Nur bestimmte Lose beruecksichtigen boolean bGefunden = false; for (int i = 0; i < arLosIId.size(); i++) { if (losDto.getIId().equals(arLosIId.get(i))) { bGefunden = true; break; } } if (bGefunden == false) { // auslassen continue; } } // Bewegungsvorschaueintrag erzeugen BewegungsvorschauDto dto = new BewegungsvorschauDto(); dto.setArtikelIId(item.getFlrartikel().getI_id()); dto.setCBelegartCNr(LocaleFac.BELEGART_LOS); dto.setIBelegIId(losDto.getIId()); dto.setIBelegPositionIId(item.getFlrlossollmaterial().getI_id()); dto.setNMenge(item.getN_menge().negate()); // Termine vor heute werden auf heute umgerechnet Timestamp tsTermin = new Timestamp(item.getT_liefertermin().getTime()); if (tsTermin.before(getTimestamp())) { tsTermin = Helper.cutTimestamp(getTimestamp()); } dto.setTLiefertermin(tsTermin); dto.setCBelegnummer(item.getFlrlossollmaterial().getFlrlos().getC_nr()); // wenn das Los auftragsbezogen ist, dann hol ich auch den // Kunden if (losDto.getAuftragpositionIId() != null) { // den finde ich ueber die Auftragsposition AuftragpositionDto aufposDto = getAuftragpositionFac() .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId()); AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(aufposDto.getBelegIId()); dto.setProjektIId(auftragDto.getProjektIId()); KundeDto kundeDto = getKundeFac() .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto); dto.setPartnerDto(kundeDto.getPartnerDto()); } bewegungsvorschau.add(dto); } } // ------------------------------------------------------------------ // ---- // noch erwartete Losablieferungen // ------------------------------------------------------------------ // ---- Criteria cAblieferung = session.createCriteria(FLRLos.class); // Filter nach Mandant cAblieferung.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); // OHNE STORNIERTE cAblieferung.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_ERLEDIGT }))); // Filter nach Artikel cAblieferung.createCriteria(FertigungFac.FLR_LOS_FLRSTUECKLISTE) .createCriteria(StuecklisteFac.FLR_STUECKLISTE_FLRARTIKEL) .add(Restrictions.eq("i_id", artikelDto.getIId())); // Sortierung nach Liefertermin (=Produktionsende) cAblieferung.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE)); // Query ausfuehren List<?> listAblieferung = cAblieferung.list(); for (Iterator<?> iter = listAblieferung.iterator(); iter.hasNext();) { FLRLos los = (FLRLos) iter.next(); BigDecimal bdOffen = los.getN_losgroesse(); // von der Losgroesse die bisherigen Ablieferungen subtrahieren for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) { FLRLosablieferung item2 = (FLRLosablieferung) iter2.next(); bdOffen = bdOffen.subtract(item2.getN_menge()); } if (bdOffen.compareTo(new BigDecimal(0)) > 0) { BewegungsvorschauDto dto = new BewegungsvorschauDto(); dto.setArtikelIId(los.getFlrstueckliste().getFlrartikel().getI_id()); dto.setCBelegartCNr(LocaleFac.BELEGART_LOSABLIEFERUNG); dto.setIBelegIId(los.getI_id()); dto.setIBelegPositionIId(null); dto.setNMenge(bdOffen); dto.setTLiefertermin(new Timestamp(los.getT_produktionsende().getTime())); dto.setCBelegnummer(los.getC_nr()); LosDto losDto = getFertigungFac().losFindByPrimaryKey(los.getI_id()); // wenn das Los auftragsbezogen ist, dann hol ich auch den // Kunden if (losDto.getAuftragpositionIId() != null) { // den finde ich ueber die Auftragsposition AuftragpositionDto aufposDto = getAuftragpositionFac() .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId()); AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(aufposDto.getBelegIId()); KundeDto kundeDto = getKundeFac() .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto); dto.setPartnerDto(kundeDto.getPartnerDto()); } bewegungsvorschau.add(dto); } } // Interne Bestellung miteinbeziehen if (bInternebestellungMiteinbeziehen) { Criteria cIB = session.createCriteria(FLRInternebestellung.class); // Filter nach Mandant cIB.add(Restrictions.eq(FertigungFac.FLR_INTERNE_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant())). // Filter nach Artikel createCriteria(FertigungFac.FLR_INTERNE_BESTELLUNG_FLRSTUECKLISTE) .createCriteria(StuecklisteFac.FLR_STUECKLISTE_FLRARTIKEL) .add(Restrictions.eq("i_id", artikelDto.getIId())); // Sortierung nach Liefertermin (=Produktionsende) cIB.addOrder(Order.asc(FertigungFac.FLR_INTERNE_BESTELLUNG_T_LIEFERTERMIN)); List<?> listIB = cIB.list(); for (Iterator<?> iter = listIB.iterator(); iter.hasNext();) { FLRInternebestellung ib = (FLRInternebestellung) iter.next(); BewegungsvorschauDto dto = new BewegungsvorschauDto(); dto.setArtikelIId(ib.getFlrstueckliste().getFlrartikel().getI_id()); dto.setCBelegartCNr(ib.getBelegart_c_nr()); dto.setIBelegIId(ib.getI_belegiid()); dto.setIBelegPositionIId(ib.getI_belegpositioniid()); dto.setNMenge(ib.getN_menge()); dto.setTLiefertermin(new Timestamp(ib.getT_liefertermin().getTime())); bewegungsvorschau.add(dto); } } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } finally { closeSession(session); } return bewegungsvorschau; }
From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) private List<BuchungsjournalExportDatevBuchung> getBuchungen(Date von, Date bis, boolean mitAutoEB, boolean mitManEB, boolean mitAutoB, TheClientDto theClientDto) throws RemoteException, EJBExceptionLP { String mandant = theClientDto.getMandant(); ParametermandantDto pMitlaufendesKonto = getParameterFac().getMandantparameter(mandant, ParameterFac.KATEGORIE_FINANZ, ParameterFac.PARAMETER_EXPORT_DATEV_MITLAUFENDES_KONTO); String durchlaufKonto = pMitlaufendesKonto.getCWert(); ParametermandantDto pKontoklassenOhneUst = getParameterFac().getMandantparameter(mandant, ParameterFac.KATEGORIE_FINANZ, ParameterFac.PARAMETER_EXPORT_DATEV_KONTOKLASSEN_OHNE_BU_SCHLUESSEL); List<String> kontoklassenOhneUst = Arrays.asList(pKontoklassenOhneUst.getCWert().split(",")); FinanzamtDto[] finanzaemter = getFinanzFac().finanzamtFindAll(theClientDto); List<Integer> mitlaufendeKonten = new ArrayList<Integer>(); Map<Integer, Integer> mwstKonten = new HashMap<Integer, Integer>(); for (FinanzamtDto amt : finanzaemter) { SteuerkategorieDto[] stkDtos = getFinanzServiceFac() .steuerkategorieFindByFinanzamtIId(amt.getPartnerIId(), theClientDto); for (SteuerkategorieDto stkat : stkDtos) { if (stkat.getKontoIIdForderungen() != null) mitlaufendeKonten.add(stkat.getKontoIIdForderungen()); if (stkat.getKontoIIdVerbindlichkeiten() != null) mitlaufendeKonten.add(stkat.getKontoIIdVerbindlichkeiten()); SteuerkategoriekontoDto[] stkks = getFinanzServiceFac().steuerkategoriekontoFindAll(stkat.getIId()); for (SteuerkategoriekontoDto stkk : stkks) { if (mwstKonten.containsKey(stkk.getKontoIIdEk())) mwstKonten.put(stkk.getKontoIIdEk(), null); else mwstKonten.put(stkk.getKontoIIdEk(), stkk.getMwstsatzbezIId()); if (mwstKonten.containsKey(stkk.getKontoIIdVk())) mwstKonten.put(stkk.getKontoIIdVk(), null); else mwstKonten.put(stkk.getKontoIIdVk(), stkk.getMwstsatzbezIId()); if (mwstKonten.containsKey(stkk.getKontoIIdEinfuhrUst())) mwstKonten.put(stkk.getKontoIIdEinfuhrUst(), null); else mwstKonten.put(stkk.getKontoIIdEinfuhrUst(), stkk.getMwstsatzbezIId()); //gibt es fuer ein Konto mehrere zugewiesene MwstSaetze, null in die Map schreiben //so weiss man, dass das Konto entweder nur einen MwstSatz haben kann oder aber //wenn vorhanden in der Map aber null, dann MwstSatz berechnen. }//from w ww . j a va 2s .co m } } List<BuchungsjournalExportDatevBuchung> buchungen = new ArrayList<BuchungsjournalExportDatevBuchung>(); Session session = FLRSessionFactory.getFactory().openSession(); Criteria c = session.createCriteria(FLRFinanzBuchung.class); c.createAlias("flrkostenstelle", "ks"); if (!mitAutoB) c.add(Restrictions.like("b_autombuchung", 0)); if (!mitAutoEB) c.add(Restrictions.like("b_autombuchungeb", 0)); if (!mitManEB) c.add(Restrictions.not(Restrictions.like("buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG))); c.add(Restrictions.ge("d_buchungsdatum", von)).add(Restrictions.le("d_buchungsdatum", bis)) .add(Restrictions.like("ks.mandant_c_nr", mandant)).addOrder(Order.asc("d_buchungsdatum")) .addOrder(Order.asc("c_belegnummer")); Iterator<?> iter = c.list().iterator(); while (iter.hasNext()) { FLRFinanzBuchung hvBuchung = (FLRFinanzBuchung) iter.next(); @SuppressWarnings("unchecked") List<FLRFinanzBuchungDetail> haben = session.createCriteria(FLRFinanzBuchungDetail.class) .createAlias("flrbuchung", "b").add(Restrictions.eq("buchung_i_id", hvBuchung.getI_id())) .add(Restrictions.or( Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.HabenBuchung), Restrictions.gt("n_betrag", BigDecimal.ZERO)), Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.SollBuchung), Restrictions.lt("n_betrag", BigDecimal.ZERO)))) .add(Restrictions.or(Restrictions.eq("b.buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG), Restrictions.not(Restrictions.in("konto_i_id", mitlaufendeKonten)))) .addOrder(Order.asc("i_id")).list(); @SuppressWarnings("unchecked") List<FLRFinanzBuchungDetail> soll = session.createCriteria(FLRFinanzBuchungDetail.class) .createAlias("flrbuchung", "b").add(Restrictions.eq("buchung_i_id", hvBuchung.getI_id())) .add(Restrictions.or( Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.SollBuchung), Restrictions.gt("n_betrag", BigDecimal.ZERO)), Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.HabenBuchung), Restrictions.lt("n_betrag", BigDecimal.ZERO)))) .add(Restrictions.or(Restrictions.eq("b.buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG), Restrictions.not(Restrictions.in("konto_i_id", mitlaufendeKonten)))) .addOrder(Order.asc("i_id")).list(); String gegenkontoCNr; FLRFinanzKonto flrGegenkonto = null; List<FLRFinanzBuchungDetail> zuBuchen; String uid = null; boolean buSchluesselErlaubt = true; boolean buSchluesselGanzeBuchung = true; if (soll.size() == 1) { flrGegenkonto = soll.get(0).getFlrkonto(); gegenkontoCNr = flrGegenkonto.getC_nr(); uid = getUIDZuKonto(flrGegenkonto, theClientDto); zuBuchen = haben; } else if (haben.size() == 1) { gegenkontoCNr = haben.get(0).getFlrkonto().getC_nr(); flrGegenkonto = soll.get(0).getFlrkonto(); uid = getUIDZuKonto(flrGegenkonto, theClientDto); zuBuchen = soll; } else { zuBuchen = soll; zuBuchen.addAll(haben); gegenkontoCNr = durchlaufKonto; } if (flrGegenkonto != null && flrGegenkonto.getKontotyp_c_nr().equals(FinanzServiceFac.KONTOTYP_SACHKONTO)) { for (String klassen : kontoklassenOhneUst) { if (!klassen.isEmpty() && flrGegenkonto.getC_nr().startsWith(klassen)) { buSchluesselGanzeBuchung = false; break; } } } // zuBuchen = getBuchungenKorrekteUst(zuBuchen, mwstKonten); for (int i = 0; i < zuBuchen.size(); i++) { FLRFinanzBuchungDetail b = zuBuchen.get(i); FLRFinanzKonto konto = b.getFlrkonto(); buSchluesselErlaubt = true; if (konto.getKontotyp_c_nr().equals(FinanzServiceFac.KONTOTYP_SACHKONTO)) { for (String klassen : kontoklassenOhneUst) { if (!klassen.isEmpty() && konto.getC_nr().startsWith(klassen)) { buSchluesselErlaubt = false; break; } } } Integer fibuCode = 0; BigDecimal umsatz = null; if (mwstKonten.containsKey(b.getKonto_i_id())) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_KONTIERUNG_ZUGEORDNET, "Fehler! keine Mwst-Buchung erwartet!", (hvBuchung.getFlrfbbelegart() == null ? hvBuchung.getC_text() : hvBuchung.getFlrfbbelegart().getC_nr()) + " " + hvBuchung.getC_belegnummer()); // System.out.println("Fehler! keine Mwst-Buchung erwartet! " + hvBuchung.getC_belegnummer() + ", id = " + hvBuchung.getI_id()); // break; } else { if (zuBuchen.size() > i + 1) { FLRFinanzBuchungDetail mwstBuchung = zuBuchen.get(i + 1); if (mwstKonten.containsKey(mwstBuchung.getKonto_i_id())) { Integer mwstIId = mwstKonten.get(mwstBuchung.getKonto_i_id()); MwstsatzDto mwstDto; if (mwstIId != null) { mwstDto = getMandantFac().mwstsatzFindZuDatum(mwstIId, new Timestamp(hvBuchung.getD_buchungsdatum().getTime())); } else { mwstDto = getMandantFac().getMwstSatzVonBruttoBetragUndUst(mandant, new Timestamp(hvBuchung.getD_buchungsdatum().getTime()), b.getN_betrag(), mwstBuchung.getN_betrag()); } fibuCode = mwstDto.getIFibumwstcode(); if (fibuCode == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_EXPORT_KEIN_MWSTCODE, "", mwstDto.getMwstsatzbezDto().getCBezeichnung()); } umsatz = b.getN_betrag().add(mwstBuchung.getN_betrag()).abs(); i++; } } } BuchungsjournalExportDatevBuchung datevBuchung = new BuchungsjournalExportDatevBuchung(); datevBuchung.setUmsatz(umsatz == null ? b.getN_betrag().abs() : umsatz); boolean negativ = b.getN_betrag().signum() < 0; datevBuchung.setSoll(negativ != b.getBuchungdetailart_c_nr().equals(BuchenFac.SollBuchung)); //XOR datevBuchung.setKonto(b.getFlrkonto().getC_nr()); datevBuchung.setGegenkonto(gegenkontoCNr); if (hvBuchung.getT_storniert() != null) { fibuCode += 20; } if (buSchluesselErlaubt && buSchluesselGanzeBuchung) datevBuchung.setBuSchluessel(fibuCode == 0 ? "" : fibuCode.toString()); datevBuchung.setBelegdatum(hvBuchung.getD_buchungsdatum()); datevBuchung.setBeleg(hvBuchung.getC_belegnummer()); datevBuchung.setBuchungstext(hvBuchung.getC_text()); datevBuchung.setUid(uid == null ? getUIDZuKonto(b.getFlrkonto(), theClientDto) : uid); buchungen.add(datevBuchung); } } return buchungen; }
From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java
License:Open Source License
private FLRRechnung[] getVerbuchbareRechnungen(java.sql.Date dStichtag, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;//from w w w .j av a 2 s . co m try { pruefeAufAngelegte(dStichtag, theClientDto, RechnungFac.RECHNUNGTYP_RECHNUNG); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRRechnung.class); // nur Rechnungen c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART).add(Restrictions .eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, RechnungFac.RECHNUNGTYP_RECHNUNG)); // Filter nach Mandant c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant())); // Noch nicht verbuchte c.add(Restrictions.isNull(RechnungFac.FLR_RECHNUNG_T_FIBUUEBERNAHME)); // Stichtag c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dStichtag)); // Und nach status Collection<String> coll = new LinkedList<String>(); coll.add(RechnungFac.STATUS_BEZAHLT); coll.add(RechnungFac.STATUS_OFFEN); coll.add(RechnungFac.STATUS_TEILBEZAHLT); coll.add(RechnungFac.STATUS_VERBUCHT); c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, coll)); c.addOrder(Property.forName("c_nr").asc()); // zu exportierende Belege holen List<?> list = c.list(); FLRRechnung[] reArray = new FLRRechnung[list.size()]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRRechnung re = (FLRRechnung) iter.next(); reArray[i] = re; } return reArray; } finally { if (session != null) { session.close(); } } }
From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java
License:Open Source License
private void pruefeAufAngelegte(Date dStichtag, TheClientDto theClientDto, String sRechnungstyp) throws EJBExceptionLP { Session session = null;/*from ww w . j a v a2 s . co m*/ try { SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRRechnung.class); // nur Rechnungen c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART) .add(Restrictions.eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, sRechnungstyp)); // Filter nach Mandant c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant())); // Noch nicht verbuchte c.add(Restrictions.isNull(RechnungFac.FLR_RECHNUNG_T_FIBUUEBERNAHME)); // Stichtag c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dStichtag)); // Und nach status Collection<String> coll = new LinkedList<String>(); // Zuerst schauen, ob es noch angelegte gibt, in diesem fall muss // der export abgebrochen werden coll.add(RechnungFac.STATUS_ANGELEGT); c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, coll)); List<?> listAngelegte = c.list(); if (!listAngelegte.isEmpty()) { StringBuffer sb = new StringBuffer(); for (Iterator<?> iter = listAngelegte.iterator(); iter.hasNext();) { FLRRechnung re = (FLRRechnung) iter.next(); sb.append(re.getC_nr()); sb.append(" an ").append(re.getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1()); sb.append("\n"); } EJBExceptionLP ex = new EJBExceptionLP( EJBExceptionLP.FEHLER_FINANZ_EXPORT_BELEG_IST_NOCH_NICHT_AKTIVIERT, new Exception("noch nicht aktivierte Belege")); // Kunden holen ArrayList<Object> a = new ArrayList<Object>(); a.add(sb.toString()); ex.setAlInfoForTheClient(a); throw ex; } } finally { if (session != null) { session.close(); } } }
From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java
License:Open Source License
private FLRRechnung[] getVerbuchbareGutschriften(java.sql.Date dStichtag, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;//from w w w . j a v a 2s . c om try { pruefeAufAngelegte(dStichtag, theClientDto, RechnungFac.RECHNUNGTYP_GUTSCHRIFT); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRRechnung.class); // nur Rechnungen c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART).add(Restrictions .eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, RechnungFac.RECHNUNGTYP_GUTSCHRIFT)); // Filter nach Mandant c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant())); // Noch nicht verbuchte c.add(Restrictions.isNull(RechnungFac.FLR_RECHNUNG_T_FIBUUEBERNAHME)); // Stichtag c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dStichtag)); // Und nach status Collection<String> coll = new LinkedList<String>(); coll.add(RechnungFac.STATUS_BEZAHLT); coll.add(RechnungFac.STATUS_OFFEN); coll.add(RechnungFac.STATUS_TEILBEZAHLT); coll.add(RechnungFac.STATUS_VERBUCHT); c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, coll)); // zu exportierende Belege holen List<?> list = c.list(); FLRRechnung[] reArray = new FLRRechnung[list.size()]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRRechnung re = (FLRRechnung) iter.next(); reArray[i] = re; } return reArray; } finally { if (session != null) { session.close(); } } }