Code: Select all
package UZD_5;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Scanner;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@SuppressWarnings("unchecked")
public class UZD_5 {
static final DateFormat FRMT_DATE = new SimpleDateFormat("yyyy-MM-dd");
static Map<String, List<sarasas>> sarasasMap = new TreeMap();
static void printLine(int length) {
for (int i = length; i > 0; i--) {
System.out.print('-');
}
System.out.println();
}
static void printTableHeader(String title, String header) {
System.out.println(title);
printLine(header.length());
System.out.println(header);
printLine(header.length());
}
static void readIkainiai() throws IOException, ParseException {
final String header = "| Detale | Pagaminimo data | Kiekis |";
printTableHeader("Sarasas:", header);
Scanner scanner = new Scanner(new File("data/darbo-normatyvai.csv"));
scanner.nextLine();
while (scanner.hasNext()) {
String line = scanner.nextLine();
Scanner scann = new Scanner(line);
scann.useDelimiter(";");
scann.useLocale(Locale.US);
sarasas sarasas = new sarasas();
sarasas.detale = scann.next();
sarasas.dataNuo = FRMT_DATE.parse(scann.next());
sarasas.kiekis = scann.nextBigDecimal();
System.out.printf("| %-9s | %-15s | %6s |\n",
sarasas.detale, FRMT_DATE.format(sarasas.dataNuo),sarasas.kiekis);
List<sarasas> list = sarasasMap.get(sarasas.detale);
if (list == null) {
list = new ArrayList<sarasas>();
sarasasMap.put(sarasas.detale, list);
}
list.add(sarasas);
}
scanner.close();
printLine(header.length());
Comparator<sarasas> comparator = new Comparator<sarasas>() {
@Override
public int compare(sarasas o1, sarasas o2) {
return o1.dataNuo.compareTo(o2.dataNuo);
}
};
for (List<sarasas> list : sarasasMap.values()) {
Collections.sort(list, comparator);
}
}
static void readDarboRezultatai() throws IOException, ParseException {
final String header = "| Detale | Medziagu kaino verte | Darbo sanaudos vienetui |"
+ " Kitos papildamosislaidos vienos detales gamybai | Data nuo kada galioja nurodyti ikainiai| ";
printTableHeader("Kainorastis:", header);
Scanner scanner = new Scanner(new File("data/darbo-rezultatai.csv"));
scanner.nextLine();
final String prnFormat = "| %-9s | %20s | %23s | %47s | %38s |\n";
Calendar calendar = Calendar.getInstance();
Map<ReportRecKey, ReportRec> reportMap = new HashMap();
while (scanner.hasNext()) {
String line = scanner.nextLine();
Scanner scann = new Scanner(line);
scann.useDelimiter(";");
scann.useLocale(Locale.US); // Duomenys yra US lokales tipo
String detale = scann.next();
BigDecimal medziaguKaina = scann.nextBigDecimal();
BigDecimal darboSanaudos = scann.nextBigDecimal();
BigDecimal kitosIslaidos = scann.nextBigDecimal();
Date dataNuo = FRMT_DATE.parse(scann.next());
System.out.printf(prnFormat, detale, medziaguKaina,
darboSanaudos, kitosIslaidos, FRMT_DATE.format(dataNuo));
sarasas ik = findPrise(detale, dataNuo);
ReportRecKey repKey = new ReportRecKey();
repKey.detale = detale;
calendar.setTime(dataNuo);
repKey.menuo = (byte) (calendar.get(Calendar.MONTH) + 1);
ReportRec repRec = reportMap.get(repKey);
if (repRec == null) {
repRec = new ReportRec();
repRec.detale = detale;
repRec.menuo = repKey.menuo;
//repRec.priskaiciuotsasAtlyginimas = kiekis.multiply(ik.uzmokestis
//.divide(ik.kiekis));
reportMap.put(repKey, repRec);
} else {
//repRec.kiekis = repRec.kiekis.add(kiekis);
//repRec.priskaiciuotsasAtlyginimas = repRec.priskaiciuotsasAtlyginimas
//.add(kiekis.multiply(ik.uzmokestis.divide(ik.kiekis)));
}
}
scanner.close();
printLine(header.length());
List<ReportRec> repRecList = new ArrayList<ReportRec>(reportMap
.values());
Comparator<ReportRec> comparator = new Comparator<ReportRec>() {
@Override
public int compare(ReportRec o1, ReportRec o2) {
int c;
c = o1.kiekis.compareTo(o2.kiekis);
if (c != 0) {
return -c;
}
c = o1.priskaiciuotsasAtlyginimas.compareTo(o2.priskaiciuotsasAtlyginimas);
if (c != 0) {
return +c;
}
c = o1.menuo - o2.menuo;
return +c;
}
};
Collections.sort(repRecList, comparator);
final String raportHeader = "| Gaminio pavadinimas | Kiekis | " +
"Išlaidos atlyg. | Mėnuo |";
printTableHeader("Mėnesinė ataskaita:", raportHeader);
for (ReportRec o : repRecList) {
System.out.printf("| %-19s | %6s | %15s | %5s |\n",
o.detale, o.kiekis, o.priskaiciuotsasAtlyginimas,
o.menuo);
}
printLine(raportHeader.length());
}
private static sarasas findPrise(String gaminioKodas, Date dataLaikas) {
List<sarasas> list = sarasasMap.get(gaminioKodas);
for (int i = 1; i < list.size(); i++) {
sarasas o = list.get(i);
if (o.dataNuo.after(dataLaikas)) {
sarasas ikainis = list.get(i - 1);
return ikainis;
}
}
return null;
}
private static class sarasas {
String detale;
BigDecimal kiekis;
BigDecimal uzmokestis;
Date dataNuo;
String pastabos;
}
private static class ReportRec {
String detale;
BigDecimal kiekis;
BigDecimal priskaiciuotsasAtlyginimas;
byte menuo;
}
private static class ReportRecKey {
String detale;
byte menuo;
@Override
public int hashCode() {
return detale.hashCode() + 31 * menuo;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
} else if (obj == null) {
return false;
} else {
ReportRecKey o = (ReportRecKey) obj;
if (menuo != o.menuo) {
return false;
}
return detale.equals(o.detale);
}
}
}
public static void main(String[] args) throws Exception {
readIkainiai();
readDarboRezultatai();
}
}
Code: Select all
ReportRecKey repKey = new ReportRecKey();
repKey.detale = detale;
calendar.setTime(dataNuo);
repKey.menuo = (byte) (calendar.get(Calendar.MONTH) + 1);
ReportRec repRec = reportMap.get(repKey);
if (repRec == null) {
repRec = new ReportRec();
repRec.detale = detale;
repRec.menuo = repKey.menuo;
//repRec.priskaiciuotsasAtlyginimas = kiekis.multiply(ik.uzmokestis
//.divide(ik.kiekis));
reportMap.put(repKey, repRec);
} else {
//repRec.kiekis = repRec.kiekis.add(kiekis);
//repRec.priskaiciuotsasAtlyginimas = repRec.priskaiciuotsasAtlyginimas
//.add(kiekis.multiply(ik.uzmokestis.divide(ik.kiekis)));
}
}
scanner.close();
printLine(header.length());
List<ReportRec> repRecList = new ArrayList<ReportRec>(reportMap
.values());
Comparator<ReportRec> comparator = new Comparator<ReportRec>() {
@Override
public int compare(ReportRec o1, ReportRec o2) {
int c;
c = o1.kiekis.compareTo(o2.kiekis);
if (c != 0) {
return -c;
}
c = o1.priskaiciuotsasAtlyginimas.compareTo(o2.priskaiciuotsasAtlyginimas);
if (c != 0) {
return +c;
}
c = o1.menuo - o2.menuo;
return +c;
}
};
Collections.sort(repRecList, comparator);
final String raportHeader = "| Gaminio pavadinimas | Kiekis | " +
"Išlaidos atlyg. | Mėnuo |";
printTableHeader("Mėnesinė ataskaita:", raportHeader);
for (ReportRec o : repRecList) {
System.out.printf("| %-19s | %6s | %15s | %5s |\n",
o.detale, o.kiekis, o.priskaiciuotsasAtlyginimas,
o.menuo);
}
printLine(raportHeader.length());
}
private static sarasas findPrise(String gaminioKodas, Date dataLaikas) {
List<sarasas> list = sarasasMap.get(gaminioKodas);
for (int i = 1; i < list.size(); i++) {
sarasas o = list.get(i);
if (o.dataNuo.after(dataLaikas)) {
sarasas ikainis = list.get(i - 1);
return ikainis;
}
}
return null;
}
private static class sarasas {
String detale;
BigDecimal kiekis;
BigDecimal uzmokestis;
Date dataNuo;
String pastabos;
}
private static class ReportRec {
String detale;
BigDecimal kiekis;
BigDecimal priskaiciuotsasAtlyginimas;
byte menuo;
}
private static class ReportRecKey {
String detale;
byte menuo;
@Override
public int hashCode() {
return detale.hashCode() + 31 * menuo;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
} else if (obj == null) {
return false;
} else {
ReportRecKey o = (ReportRecKey) obj;
if (menuo != o.menuo) {
return false;
}
return detale.equals(o.detale);
}
}
}
public static void main(String[] args) throws Exception {
readIkainiai();
readDarboRezultatai();
}
nebepagaunu ka jis turetu išvesti. Gal kas turi kokiu minčių kaip užbaikti?