List of usage examples for java.util Calendar WEEK_OF_YEAR
int WEEK_OF_YEAR
To view the source code for java.util Calendar WEEK_OF_YEAR.
Click Source Link
get
and set
indicating the week number within the current year. From source file:edu.jhuapl.openessence.controller.ReportController.java
/** * Extracts AccumPoint from a Collection of <code>records</code> where * * @param principal, used for logging//from ww w . ja va2 s . co m */ private List<AccumPoint> extractAccumulationPoints(String principal, DataSeriesSource ds, final Collection<Record> records, Date startDate, Date endDate, List<Dimension> accumulations, final GroupingImpl group, Map<String, ResolutionHandler> resolutionHandlers) { log.info(LogStatements.TIME_SERIES.getLoggingStmt() + principal); int startDayCal = getCalWeekStartDay(resolutionHandlers); int startDay = getWeekStartDay(resolutionHandlers); String resolution = group.getResolution(); final String groupId = group.getId(); int zeroFillInterval = intervalMap.keySet().contains(resolution) ? intervalMap.get(resolution) : -1; GroupingDimension grpdim = ds.getGroupingDimension(group.getId()); if (zeroFillInterval != -1 && (grpdim.getSqlType() == FieldType.DATE || grpdim.getSqlType() == FieldType.DATE_TIME)) { ArrayList<AccumPoint> fullVector = new ArrayList<AccumPoint>(records.size()); //create zero points for each accumulation Map<String, Number> zeroes = new HashMap<String, Number>(); for (Dimension accumulation : accumulations) { zeroes.put(accumulation.getId(), 0); } if (records.size() > 0) { final Calendar cal = new GregorianCalendar(); cal.setTime(startDate); Iterator<Record> recordsIterator = records.iterator(); Record currRecord = (recordsIterator.hasNext()) ? recordsIterator.next() : null; //currently iterates over data incrementing cal by the resolution (weekly, daily etc) for (int i = 1; !cal.getTime().after(endDate); i++) { // if (DAILY.equalsIgnoreCase(resolution)) { boolean addRecord = false; if (currRecord != null) { // 2013/03/25, SCC, GGF, There are some weird edge cases with selecting data ranges that span // the EDT/EST cross-overs. Sometimes the "filter" will have the "23:00" and the data will have // "00:00". So, since we only care about the "date" anyway, clear out any subordinate fields. // Database record date (set hour, minute, second, millisec to 0) final Calendar rowValue = Calendar.getInstance(); rowValue.setTime((Date) currRecord.getValue(groupId)); rowValue.set(Calendar.HOUR_OF_DAY, 0); rowValue.set(Calendar.MINUTE, 0); rowValue.set(Calendar.SECOND, 0); rowValue.set(Calendar.MILLISECOND, 0); // looping variable date (set hour, minute, second, millisec to 0) final Calendar calValue = Calendar.getInstance(); calValue.setTime(cal.getTime()); calValue.set(Calendar.HOUR_OF_DAY, 0); calValue.set(Calendar.MINUTE, 0); calValue.set(Calendar.SECOND, 0); calValue.set(Calendar.MILLISECOND, 0); if (resolution.equalsIgnoreCase(DAILY) && rowValue.equals(calValue)) { addRecord = true; } else { Calendar currRecCalendar = new GregorianCalendar(); currRecCalendar.setTime((Date) currRecord.getValue(groupId)); if (resolution.equalsIgnoreCase(WEEKLY)) { if (PgSqlDateHelper.getYear(startDay, cal) == PgSqlDateHelper.getYear(startDay, currRecCalendar) && PgSqlDateHelper.getWeekOfYear(startDay, cal) == PgSqlDateHelper .getWeekOfYear(startDay, currRecCalendar)) { addRecord = true; } } else if (resolution.equalsIgnoreCase(MONTHLY)) { if (cal.get(Calendar.YEAR) == currRecCalendar.get(Calendar.YEAR) && cal.get(Calendar.MONTH) == currRecCalendar.get(Calendar.MONTH)) { addRecord = true; } } } if (addRecord) { //if the current record matches the date put it in fullVector.add(createAccumulationPoint(currRecord, accumulations)); currRecord = (recordsIterator.hasNext()) ? recordsIterator.next() : null; } } if (!addRecord) { //add a zero fill Map<String, Dimension> m = new HashMap<String, Dimension>(); m.put(groupId, ds.getResultDimension(groupId)); HashMap<String, Object> map = new HashMap<String, Object>(); map.put(groupId, cal.getTime()); Record r = new QueryRecord(m, map); fullVector.add(new AccumPointImpl(zeroes, r)); } if (resolution.equalsIgnoreCase(WEEKLY)) { // add 7 days if current date falls on week start date if (i != 1) { cal.add(Calendar.WEEK_OF_YEAR, 1); } else { cal.add(Calendar.DAY_OF_YEAR, 1); while (cal.get(Calendar.DAY_OF_WEEK) != startDayCal) { cal.add(Calendar.DAY_OF_YEAR, 1); } } } else { // reset the date each time to account for +month oddness cal.setTime(startDate); // increment the interval cal.add(zeroFillInterval, 1 * i); } } } return fullVector; } else { //pretty sure this is raw non filled List<AccumPoint> rawVector = new ArrayList<AccumPoint>(records.size()); for (Record record : records) { rawVector.add(createAccumulationPoint(record, accumulations)); } return rawVector; } }
From source file:com.ut.healthelink.service.impl.transactionOutManagerImpl.java
/** * The 'generateSystemOutboundSummary' function will return the summary object for outbound system batches * * @return This function will return a systemSummary object */// w ww.j av a2 s . c o m @Override public systemSummary generateSystemOutboundSummary() { systemSummary systemSummary = new systemSummary(); try { /* Get batches submitted this hour */ Calendar thishour = new GregorianCalendar(); thishour.set(Calendar.MINUTE, 0); thishour.set(Calendar.SECOND, 0); thishour.set(Calendar.MILLISECOND, 0); Calendar nexthour = new GregorianCalendar(); nexthour.set(Calendar.MINUTE, 0); nexthour.set(Calendar.SECOND, 0); nexthour.set(Calendar.MILLISECOND, 0); nexthour.add(Calendar.HOUR_OF_DAY, 1); Integer batchesThisHour = transactionOutDAO.getAllBatches(thishour.getTime(), nexthour.getTime()) .size(); /* Get batches submitted today */ Calendar starttoday = new GregorianCalendar(); starttoday.set(Calendar.HOUR_OF_DAY, 0); starttoday.set(Calendar.MINUTE, 0); starttoday.set(Calendar.SECOND, 0); starttoday.set(Calendar.MILLISECOND, 0); Calendar starttomorrow = new GregorianCalendar(); starttomorrow.set(Calendar.HOUR_OF_DAY, 0); starttomorrow.set(Calendar.MINUTE, 0); starttomorrow.set(Calendar.SECOND, 0); starttomorrow.set(Calendar.MILLISECOND, 0); starttomorrow.add(Calendar.DAY_OF_MONTH, 1); Integer batchesToday = transactionOutDAO.getAllBatches(starttoday.getTime(), starttomorrow.getTime()) .size(); /* Get batches submitted this week */ Calendar thisweek = new GregorianCalendar(); thisweek.set(Calendar.HOUR_OF_DAY, 0); thisweek.set(Calendar.MINUTE, 0); thisweek.set(Calendar.SECOND, 0); thisweek.set(Calendar.MILLISECOND, 0); thisweek.set(Calendar.DAY_OF_WEEK, thisweek.getFirstDayOfWeek()); Calendar nextweek = new GregorianCalendar(); nextweek.set(Calendar.HOUR_OF_DAY, 0); nextweek.set(Calendar.MINUTE, 0); nextweek.set(Calendar.SECOND, 0); nextweek.set(Calendar.MILLISECOND, 0); nextweek.set(Calendar.DAY_OF_WEEK, thisweek.getFirstDayOfWeek()); nextweek.add(Calendar.WEEK_OF_YEAR, 1); Integer batchesThisWeek = transactionOutDAO.getAllBatches(thisweek.getTime(), nextweek.getTime()) .size(); systemSummary.setBatchesPastHour(batchesThisHour); systemSummary.setBatchesToday(batchesToday); systemSummary.setBatchesThisWeek(batchesThisWeek); /* Get batches submitted yesterday */ } catch (Exception ex) { Logger.getLogger(transactionInManagerImpl.class.getName()).log(Level.SEVERE, null, ex); } return systemSummary; }
From source file:com.ut.healthelink.service.impl.transactionInManagerImpl.java
@Override public systemSummary generateSystemInboundSummary() { systemSummary systemSummary = new systemSummary(); try {//from w w w.ja va 2s .c o m /* Get batches submitted this hour */ Calendar thishour = new GregorianCalendar(); thishour.set(Calendar.MINUTE, 0); thishour.set(Calendar.SECOND, 0); thishour.set(Calendar.MILLISECOND, 0); Calendar nexthour = new GregorianCalendar(); nexthour.set(Calendar.MINUTE, 0); nexthour.set(Calendar.SECOND, 0); nexthour.set(Calendar.MILLISECOND, 0); nexthour.add(Calendar.HOUR_OF_DAY, 1); //System.out.println("This Hour: " + thishour.getTime() + " Next Hour: " + nexthour.getTime()); Integer batchesThisHour = transactionInDAO.getAllUploadedBatches(thishour.getTime(), nexthour.getTime()) .size(); /* Get batches submitted today */ Calendar starttoday = new GregorianCalendar(); starttoday.set(Calendar.HOUR_OF_DAY, 0); starttoday.set(Calendar.MINUTE, 0); starttoday.set(Calendar.SECOND, 0); starttoday.set(Calendar.MILLISECOND, 0); Calendar starttomorrow = new GregorianCalendar(); starttomorrow.set(Calendar.HOUR_OF_DAY, 0); starttomorrow.set(Calendar.MINUTE, 0); starttomorrow.set(Calendar.SECOND, 0); starttomorrow.set(Calendar.MILLISECOND, 0); starttomorrow.add(Calendar.DAY_OF_MONTH, 1); //System.out.println("Today: " + starttoday.getTime() + " Tomorrow: " + starttomorrow.getTime()); Integer batchesToday = transactionInDAO .getAllUploadedBatches(starttoday.getTime(), starttomorrow.getTime()).size(); /* Get batches submitted this week */ Calendar thisweek = new GregorianCalendar(); thisweek.set(Calendar.HOUR_OF_DAY, 0); thisweek.set(Calendar.MINUTE, 0); thisweek.set(Calendar.SECOND, 0); thisweek.set(Calendar.MILLISECOND, 0); thisweek.set(Calendar.DAY_OF_WEEK, thisweek.getFirstDayOfWeek()); Calendar nextweek = new GregorianCalendar(); nextweek.set(Calendar.HOUR_OF_DAY, 0); nextweek.set(Calendar.MINUTE, 0); nextweek.set(Calendar.SECOND, 0); nextweek.set(Calendar.MILLISECOND, 0); nextweek.set(Calendar.DAY_OF_WEEK, thisweek.getFirstDayOfWeek()); nextweek.add(Calendar.WEEK_OF_YEAR, 1); //System.out.println("This Week: " + thisweek.getTime() + " Next Week: " + nextweek.getTime()); Integer batchesThisWeek = transactionInDAO.getAllUploadedBatches(thisweek.getTime(), nextweek.getTime()) .size(); systemSummary.setBatchesPastHour(batchesThisHour); systemSummary.setBatchesToday(batchesToday); systemSummary.setBatchesThisWeek(batchesThisWeek); /* Get batches submitted yesterday */ } catch (Exception ex) { Logger.getLogger(transactionInManagerImpl.class.getName()).log(Level.SEVERE, null, ex); } return systemSummary; }
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
@TransactionAttribute(TransactionAttributeType.NEVER) public KapazitaetsvorschauDto getKapazitaetsvorschau(TheClientDto theClientDto) throws EJBExceptionLP { KapazitaetsvorschauDto kapDto = null; Session session = null;// w w w. j av a 2s .c om try { // ------------------------------------------------------------------ // ----- // Benoetigte Parameter holen // ------------------------------------------------------------------ // ----- // Default Sicht nach Wochen // final int iSicht = FertigungFac.KAPAZITAETSVORSCHAU_NACH_WOCHEN; // Anzahl der angezeigten Vatergruppen. Alles andere wird nach // "Sonstige" verdichtet final ParametermandantDto parameterAnzahlGruppen = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNG_KAPAZITAETSVORSCHAU_ANZAHL_GRUPPEN); final int iParamAnzahlGruppen = (Integer) parameterAnzahlGruppen.getCWertAsObject(); // Angezeigter Zeitraum = Anzahl der Spalten final ParametermandantDto parameterZeitraum = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNG_KAPAZITAETSVORSCHAU_ZEITRAUM); final int iParamZeitraum = (Integer) parameterZeitraum.getCWertAsObject(); // ------------------------------------------------------------------ // ----- // Hibernate-Session erstellen // ------------------------------------------------------------------ // ----- SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); // ------------------------------------------------------------------ // ----- // Artikel- / Maschinen-Vatergruppen holen // ------------------------------------------------------------------ // ----- // Alle Artikel-Vatergruppen Criteria cArtikelVatergruppen = session.createCriteria(FLRArtikelgruppe.class); cArtikelVatergruppen.add(Restrictions.isNull(ArtikelFac.FLR_ARTIKELGRUPPE_FLRARTIKELGRUPPE)); List<?> listArtikelgruppen = cArtikelVatergruppen.list(); // Alle Maschinen-Vatergruppen Criteria cMaschinengruppen = session.createCriteria(FLRMaschinengruppe.class); List<?> listMaschinengruppen = cMaschinengruppen.list(); // ------------------------------------------------------------------ // ----- // Anzahl der sub-Diagramme bestimmen // das ist grundsaetzlich (iParamAnzahlGruppen + 1) x 2 ... // (Anzahl d. anzuzeigenden Vatergruppen + Sonstige) f. AZ und // Maschinen // wenn es weniger Vatergruppen als anzuzeigende gibt, reduziert // sich das aber // Gibt es keine Vatergruppe, wird daher alles nach "Sonstige" // verdichtet // ------------------------------------------------------------------ // ----- final int iAnzuzeigendeArtikelgruppen = Math.min(iParamAnzahlGruppen, listArtikelgruppen.size()); final int iAnzuzeigendeMaschinengruppen = Math.min(iParamAnzahlGruppen, listMaschinengruppen.size()); final int iAnzahlZeilen = iAnzuzeigendeArtikelgruppen + 1 + iAnzuzeigendeMaschinengruppen + 1; // ------------------------------------------------------------------ // ----- // Dto initialisieren // ------------------------------------------------------------------ // ----- kapDto = new KapazitaetsvorschauDto(iAnzahlZeilen, iParamZeitraum); // ------------------------------------------------------------------ // ----- // Beschriftung der x-Achse ermitteln. das sind die Kalenderwochen // ------------------------------------------------------------------ // ----- HashMap<Integer, Integer> hmKWIndizes = new HashMap<Integer, Integer>(); String[] kw = new String[iParamZeitraum]; GregorianCalendar gc = new GregorianCalendar(); for (int i = 0; i < kw.length; i++) { int iKw = gc.get(GregorianCalendar.WEEK_OF_YEAR); kw[i] = "" + iKw; kapDto.setISpaltenueberschrift(i, kw[i]); hmKWIndizes.put(gc.get(GregorianCalendar.WEEK_OF_YEAR), i); gc.setTimeInMillis(gc.getTimeInMillis() + 7 * 24 * 60 * 60 * 1000); // 1 Woche dazu } // ------------------------------------------------------------------ // ----- // Beschriftung der y-Achse ermitteln. das sind die Namen der // Vatergruppen bzw. 2 x "Sonstige". // Weiters werden die Indizes im Daten-Array fuer die jeweiligen // Gruppen festgelegt. // ------------------------------------------------------------------ // ----- String sSonstige = getTextRespectUISpr("lp.sonstige", theClientDto.getMandant(), theClientDto.getLocUi()); HashMap<Integer, Integer> hmArtikelGruppenIndizes = new HashMap<Integer, Integer>(); HashMap<Integer, Integer> hmMaschinenGruppenIndizes = new HashMap<Integer, Integer>(); // zuerst die Artikelvatergruppen for (int i = 0; i < iAnzuzeigendeArtikelgruppen; i++) { FLRArtikelgruppe item = (FLRArtikelgruppe) listArtikelgruppen.get(i); kapDto.setIZeilenueberschrift(i, item.getC_nr()); hmArtikelGruppenIndizes.put(item.getI_id(), i); } // Dann Sonstige Artikelgruppen final int indexSonstigeArtikelGruppen = iAnzuzeigendeArtikelgruppen; kapDto.setIZeilenueberschrift(indexSonstigeArtikelGruppen, sSonstige); // Maschinengruppen for (int i = 0; i < iAnzuzeigendeMaschinengruppen; i++) { FLRMaschinengruppe item = (FLRMaschinengruppe) listMaschinengruppen.get(i); int index = iAnzuzeigendeArtikelgruppen + 1 + i; kapDto.setIZeilenueberschrift(index, item.getC_bez()); hmMaschinenGruppenIndizes.put(item.getI_id(), index); } // zuletzt Sonstige Maschinengruppen final int indexSonstigeMaschinenGruppen = iAnzuzeigendeArtikelgruppen + 1 + iAnzuzeigendeMaschinengruppen; kapDto.setIZeilenueberschrift(indexSonstigeMaschinenGruppen, sSonstige); // ------------------------------------------------------------------ // ----- // Lose holen // ------------------------------------------------------------------ // ----- Criteria cLose = session.createCriteria(FLRLos.class); // Filter nach Mandant cLose.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); // Alle Stati ausser Erledigt, Gestoppt, Storniert Collection<String> cLoseStati = new LinkedList<String>(); cLoseStati.add(FertigungFac.STATUS_ERLEDIGT); cLoseStati.add(FertigungFac.STATUS_GESTOPPT); cLoseStati.add(FertigungFac.STATUS_STORNIERT); cLose.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, cLoseStati))); List<?> listLose = cLose.list(); // ------------------------------------------------------------------ // ----- // Auswertungszeitraum und verfuegbare Kapazitaeten ermitteln // ------------------------------------------------------------------ // ----- // 3 Monate in die zukunft Calendar c = Calendar.getInstance(); c.setTimeInMillis(System.currentTimeMillis()); c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 3); java.util.Date dMax = Helper.cutDate(new java.sql.Date(c.getTimeInMillis())); java.sql.Timestamp tVon = Helper.cutTimestamp(new java.sql.Timestamp(System.currentTimeMillis())); java.sql.Timestamp tBis = Helper.cutTimestamp(new java.sql.Timestamp(dMax.getTime())); // Verfuegbare Zeiten holen SollverfuegbarkeitDto[] oVerfuegbar = getZeiterfassungFac().getVerfuegbareSollzeit(tVon, tBis, theClientDto); // diese nun aufteilen for (int i = 0; i < oVerfuegbar.length; i++) { SollverfuegbarkeitDto svDto = oVerfuegbar[i]; // "normale" AZ if (svDto.isBMannarbeitszeit()) { // die sind einer Artikelgruppe zugeordnet if (svDto.getIGruppeid() != null) { Integer iZeile = hmArtikelGruppenIndizes.get(svDto.getIGruppeid()); // ist das eine sichtbare Gruppe if (iZeile != null) { for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(iZeile, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } // wenn nicht, dann zu den sonstigen else { for (int iSpalte = 0; iSpalte < kapDto .getDetails()[indexSonstigeArtikelGruppen].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(indexSonstigeArtikelGruppen, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } } // Rest = Sonstige Artikelgruppen else { if (svDto.getTDatum() != null) { // Die KW dieses Datums ermitteln, damit das // zugeordnet werden kann GregorianCalendar gcSV = new GregorianCalendar(); gcSV.setTime(svDto.getTDatum()); int kwSV = gcSV.get(Calendar.WEEK_OF_YEAR); Integer iIndexDerKW = hmKWIndizes.get(kwSV); if (iIndexDerKW != null) { // Hier nicht mit 5 multiplizieren, da es fuer // jeden Tag einen eigenen Eintrag gibt kapDto.addBdVerfuegbareStunden(indexSonstigeArtikelGruppen, iIndexDerKW, svDto.getNSollstunden()); } else { // diese KW wird nicht mehr angezeigt - brauch // ich nicht einrechnen } } } } // Maschinenzeit - die Verfuegbarkeit ist jeden Tag gleich else { Integer iZeile = hmMaschinenGruppenIndizes.get(svDto.getIGruppeid()); // ist das eine sichtbare Gruppe if (iZeile != null) { for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(iZeile, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } // wenn nicht, dann zu den sonstigen else { for (int iSpalte = 0; iSpalte < kapDto .getDetails()[indexSonstigeMaschinenGruppen].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(indexSonstigeMaschinenGruppen, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } } } // ------------------------------------------------------------------ // ----- // Offene Zeiten ermitteln // ------------------------------------------------------------------ // ----- for (Iterator<?> iter = listLose.iterator(); iter.hasNext();) { FLRLos los = (FLRLos) iter.next(); // Offene Menge ermitteln BigDecimal bdOffen = los.getN_losgroesse(); for (Iterator<?> iterAblieferung = los.getAblieferungset().iterator(); iterAblieferung.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iterAblieferung.next(); bdOffen = bdOffen.subtract(item.getN_menge()); } // nur Lose mit tatsaechlich offener Menge>0 if (bdOffen.compareTo(new BigDecimal(0)) > 0) { // Faktor zur Berechnung der offenen Zeiten = offene Menge / // Losgroesse. 2 Nachkommastellen sollten reichen. BigDecimal bdFaktor = bdOffen.divide(los.getN_losgroesse(), 2, BigDecimal.ROUND_HALF_EVEN); // Arbeitsplan holen Criteria cLosAZ = session.createCriteria(FLRLossollarbeitsplan.class); cLosAZ.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_LOS_I_ID, los.getI_id())); List<?> listLosAZ = cLosAZ.list(); // fuer alle Taetigkeiten for (Iterator<?> iterAZ = listLosAZ.iterator(); iterAZ.hasNext();) { FLRLossollarbeitsplan losAZ = (FLRLossollarbeitsplan) iterAZ.next(); BigDecimal bdOffeneStunden = losAZ.getN_gesamtzeit().multiply(bdFaktor); // ------------------------------------------------------ // ----------------- // Index der Gruppe bestimmen, der ich das zuordnen muss // ------------------------------------------------------ // ----------------- int iZeilenIndex; // 1. nach Maschinengruppe // 2. nach Artikelgruppe der Taetigkeit FLRMaschine flrMaschine = losAZ.getFlrmaschine(); Integer iMaschinengruppeIId = null; Integer iArtikelgruppeIId = null; if (flrMaschine != null) { FLRMaschinengruppe flrMaschinengruppe = flrMaschine.getFlrmaschinengruppe(); if (flrMaschinengruppe != null) { // Wenn diese Maschinengruppe dargestellt wird, // dann kommt hier der index raus. Integer i = hmMaschinenGruppenIndizes.get(flrMaschinengruppe.getI_id()); iMaschinengruppeIId = flrMaschinengruppe.getI_id(); if (i != null) { iZeilenIndex = i; } // wenn nicht -> sonstige. else { iZeilenIndex = indexSonstigeMaschinenGruppen; } } // Maschinen ohne Maschinengruppe werden nach // "Sonstige" verdichtet. else { iZeilenIndex = indexSonstigeMaschinenGruppen; } } else { FLRArtikel flrArtikel = losAZ.getFlrartikel(); FLRArtikelgruppe flrArtikelgruppe = flrArtikel.getFlrartikelgruppe(); if (flrArtikelgruppe != null) { // Wenn diese Artikelgruppe dargestellt wird, // dann kommt hier der index raus. Integer i = hmArtikelGruppenIndizes.get(flrArtikelgruppe.getI_id()); iArtikelgruppeIId = flrArtikelgruppe.getI_id(); if (i != null) { iZeilenIndex = i; } // wenn nicht -> sonstige. else { iZeilenIndex = indexSonstigeArtikelGruppen; } } // Taetigkeiten ohne Artikelgruppe werden nach // "Sonstige" verdichtet. else { iZeilenIndex = indexSonstigeArtikelGruppen; } } // ------------------------------------------------------ // ----------------- // Jetzt hab ich die Gruppe, der ich das zuordnen muss // nun muss die Zeit aufgeteilt werden // ------------------------------------------------------ // ----------------- java.util.Date tLosStarttermin = los.getT_produktionsbeginn(); java.util.Date tLosEndetermin = los.getT_produktionsende(); // beide Termine duerfen nicht vor heute liegen if (tLosStarttermin.before(getDate())) { tLosStarttermin = getDate(); } if (tLosEndetermin.before(getDate())) { tLosEndetermin = getDate(); } // Anzahl der betroffenen Kalenderwochen bestimmen GregorianCalendar gcStart = new GregorianCalendar(); gcStart.setTime(tLosStarttermin); GregorianCalendar gcEnde = new GregorianCalendar(); gcEnde.setTime(tLosEndetermin); int iStartKW = gcStart.get(Calendar.WEEK_OF_YEAR); int iEndeKW = gcEnde.get(Calendar.WEEK_OF_YEAR); int iAnzahlKW = 1 + iEndeKW - iStartKW; // nun auf die Wochen aufteilen BigDecimal bdOffeneStundenJeWoche = bdOffeneStunden; if (iAnzahlKW > 0) { bdOffeneStundenJeWoche = bdOffeneStunden.divide(new BigDecimal(iAnzahlKW), 2, RoundingMode.HALF_UP); } for (int iAktuelleKW = iStartKW; iAktuelleKW <= iEndeKW; iAktuelleKW++) { Integer indexDerKW = hmKWIndizes.get(iAktuelleKW); // wird diese Woche auch angezeigt? if (indexDerKW != null) { KapazitaetsvorschauDetailDto detailDto = new KapazitaetsvorschauDetailDto(); detailDto.setArtikelgruppeIId(iArtikelgruppeIId); detailDto.setArtikelIIdTaetigkeit(losAZ.getFlrartikel().getI_id()); detailDto.setBdDauer(bdOffeneStundenJeWoche); detailDto.setLosIId(los.getI_id()); detailDto.setLossollarbeitsplanIId(losAZ.getI_id()); detailDto.setMaschinengruppeIId(iMaschinengruppeIId); kapDto.addDetail(iZeilenIndex, indexDerKW, detailDto); } } } } } // ------------------------------------------------------------------ // ----- // Diagramm aus den Daten erstellen // ------------------------------------------------------------------ // ----- SymbolAxis xAchse = new SymbolAxis("KW", kw); CombinedDomainXYPlot plot = new CombinedDomainXYPlot(xAchse); for (int iZeile = 0; iZeile < kapDto.getDetails().length; iZeile++) { XYSeries datenZeile = new XYSeries(kapDto.getIZeilenueberschrift(iZeile)); // Balkenfarben festlegen ( >100% = rot, sonst hellgrau) // fuer jede zeile und jede spalte Paint[][] paints = new Paint[1][kapDto.getDetails()[iZeile].length]; for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { BigDecimal bdVerfuegbar = kapDto.getBdVerfuegbareStunden()[iZeile][iSpalte]; BigDecimal bdBenoetigt = new BigDecimal(0); // Benoetigte Zeit jet Gruppe je Woche ermitteln for (Iterator<?> iter = kapDto.getDetails()[iZeile][iSpalte].iterator(); iter.hasNext();) { KapazitaetsvorschauDetailDto item = (KapazitaetsvorschauDetailDto) iter.next(); bdBenoetigt = bdBenoetigt.add(item.getBdDauer()); } BigDecimal value = new BigDecimal(0); if (bdVerfuegbar.compareTo(new BigDecimal(0)) > 0) { value = (bdBenoetigt.multiply(new BigDecimal(100))).divide(bdVerfuegbar, 4, BigDecimal.ROUND_HALF_EVEN); if (value.doubleValue() > 100.0) { paints[0][iSpalte] = Color.red; } else { paints[0][iSpalte] = Color.lightGray; } } // tage ohne Verfuegbarkeit mach ich 100% und weisz else { value = new BigDecimal(100.0); // Wochen ohne Kapazitaet aber mit geplanter Zeit if (bdBenoetigt.compareTo(new BigDecimal(0)) > 0) { paints[0][iSpalte] = Color.MAGENTA; } // Wenn nichts verfuegbar aber auch nichts benoetigt -> // weiss else { paints[0][iSpalte] = Color.white; } } XYDataItem data = new XYDataItem(iSpalte, value.doubleValue()); datenZeile.add(data); } // Zur Collection XYSeriesCollection xyDataset = new XYSeriesCollection(); xyDataset.addSeries(datenZeile); // subplot erstellen XYItemRenderer renderer1 = new CustomXYBarRenderer(paints); // renderer1.setItemLabelsVisible(true); // Legende nicht anzeigen renderer1.setBaseSeriesVisibleInLegend(false); NumberAxis zeilenAchse = new NumberAxis(kapDto.getIZeilenueberschrift(iZeile)); // Beschriftung der Y-Achse um 90 grad drehen zeilenAchse.setLabelAngle(Math.PI / 2.0); zeilenAchse.setAutoRange(true); XYPlot subplot1 = new XYPlot(xyDataset, null, zeilenAchse, renderer1); subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); // Markierung bei 100% final Marker target = new ValueMarker(100.0); target.setPaint(Color.darkGray); // target.setLabel("100 %"); // Label // target.setLabelAnchor(RectangleAnchor.TOP_RIGHT); // target.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT); subplot1.addRangeMarker(target); plot.add(subplot1); // plot.add(subplot1, 1); } JFreeChart lStackedBarChart = new JFreeChart(plot); kapDto.setJfcKapazitaetsvorschau(lStackedBarChart); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } finally { if (session != null) { session.close(); } } return kapDto; }
From source file:com.clark.func.Functions.java
/** * Adds a number of weeks to a date returning a new object. The original * date object is unchanged.//from w w w. j av a2 s . c o m * * @param date * the date, not null * @param amount * the amount to add, may be negative * @return the new date object with the amount added * @throws IllegalArgumentException * if the date is null */ public static Date addWeeks(Date date, int amount) { return addDate(date, Calendar.WEEK_OF_YEAR, amount); }