prune: add pretty display
This commit is contained in:
parent
a2cef7f54d
commit
1a596fae73
@ -1,25 +1,32 @@
|
|||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.google.gson.GsonBuilder;
|
|
||||||
|
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class LogParser {
|
public class LogParser {
|
||||||
|
public List<User> users;
|
||||||
|
|
||||||
|
public void prettyPrint() {
|
||||||
|
for (LogParser.User u : users) {
|
||||||
|
System.out.println(u.prettyStr());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static class User {
|
static class User {
|
||||||
int order;
|
int order;
|
||||||
String name;
|
String name;
|
||||||
int wucan = 0;
|
int wucan = 0;
|
||||||
int jiaotong = 0;
|
|
||||||
int wancan = 0;
|
int wancan = 0;
|
||||||
double totalBu = 0;
|
int totalDay = 0;
|
||||||
|
int validDay = 0;
|
||||||
|
int D = 0;
|
||||||
double R;
|
double R;
|
||||||
double A;
|
double A;
|
||||||
double dur = 0D;
|
double dur = 0D;
|
||||||
int totalDay = 0;
|
|
||||||
int missingDay = 0;
|
double totalBu = 0;
|
||||||
|
|
||||||
public User setName(String name) {
|
public User setName(String name) {
|
||||||
this.name = name.replaceAll("\"", "");
|
this.name = name.replaceAll("\"", "");
|
||||||
|
|
||||||
@ -27,21 +34,27 @@ public class LogParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void calTotalBu() {
|
public void calTotalBu() {
|
||||||
totalBu = wucan + jiaotong + wancan + R * 600 + A * 400;
|
totalBu = wucan + wancan + D * 25 + R * 600 + A * 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
public User setOrder(String order) {
|
public User setOrder(String order) {
|
||||||
this.order = Integer.valueOf(order.replaceAll("\"", ""));
|
this.order = Integer.valueOf(order.replaceAll("\"", ""));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String prettyStr() {
|
||||||
|
calTotalBu();
|
||||||
|
return String.format("%s wucan:%d wancan:%d totalDay:%d validDay:%d dur:%.2f D:%d R:%.2f A:%.2f total:%.2f", name, wucan, wancan, totalDay, validDay, dur, D, R, A, totalBu);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
if (args.length >= 2) {
|
if (args.length >= 2) {
|
||||||
new LogParser().go(args[0], args[1]);
|
LogParser logParser = new LogParser();
|
||||||
|
logParser.go(args[0], args[1]);
|
||||||
} else{
|
logParser.prettyPrint();
|
||||||
|
} else {
|
||||||
System.out.println("usage: java -jar xx.jar ztolog.csv randa.csv");
|
System.out.println("usage: java -jar xx.jar ztolog.csv randa.csv");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,15 +79,17 @@ public class LogParser {
|
|||||||
User u = user.get(name);
|
User u = user.get(name);
|
||||||
u.totalDay++;
|
u.totalDay++;
|
||||||
if (!to.contains(":") || !from.contains(":")) {
|
if (!to.contains(":") || !from.contains(":")) {
|
||||||
u.missingDay++;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// System.out.println(line);
|
// System.out.println(line);
|
||||||
double dur = calDate(from, to);
|
double dur = calDate(from, to);
|
||||||
u.dur += dur;
|
u.dur += dur;
|
||||||
int extra = 0;
|
|
||||||
if (dur >= 6) u.wucan += 25;
|
if (dur >= 6) {
|
||||||
if (dur >= 8.5) u.jiaotong += 25;
|
u.validDay++;
|
||||||
|
u.wucan += 25;
|
||||||
|
}
|
||||||
|
if (dur >= 8.5 && getTime(from) <= getTime("09:30")) u.D++;
|
||||||
if (dur >= 12) u.wancan += 35;
|
if (dur >= 12) u.wancan += 35;
|
||||||
System.out.println(String.format("%s\t%s\t%s\t%s\t%.2f", date, name, from, to, dur));
|
System.out.println(String.format("%s\t%s\t%s\t%s\t%.2f", date, name, from, to, dur));
|
||||||
}
|
}
|
||||||
@ -82,40 +97,37 @@ public class LogParser {
|
|||||||
String line = jxsc.nextLine();
|
String line = jxsc.nextLine();
|
||||||
String[] lines = line.split(" ");
|
String[] lines = line.split(" ");
|
||||||
if (lines.length < 3) continue;
|
if (lines.length < 3) continue;
|
||||||
System.out.println(line);
|
|
||||||
System.out.println("name--->" + lines[0]);
|
|
||||||
User u = user.get(lines[0]);
|
User u = user.get(lines[0]);
|
||||||
u.R = Double.valueOf(lines[1]);
|
u.R = Double.valueOf(lines[1]);
|
||||||
u.A = Double.valueOf(lines[2]);
|
u.A = Double.valueOf(lines[2]);
|
||||||
}
|
}
|
||||||
for (User u : user.values()) {
|
|
||||||
u.jiaotong += 25 * 5;
|
|
||||||
u.wucan += 25 * 5;
|
|
||||||
}
|
|
||||||
String fil = "0,1,2,3,4,6,14";
|
String fil = "0,1,2,3,4,6,14";
|
||||||
List<User> r = new ArrayList<>();
|
users = new ArrayList<>();
|
||||||
r.addAll(user.values());
|
users.addAll(user.values());
|
||||||
r.removeIf(new Predicate<User>() {
|
users.removeIf(new Predicate<User>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean test(User user) {
|
public boolean test(User user) {
|
||||||
return fil.contains(user.order + "");
|
return fil.contains(user.order + "");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
for (User u : r) {
|
for (User u : users)
|
||||||
u.order = findOrder(u.order);
|
u.order = findOrder(u.order);
|
||||||
|
calculateBu();
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void calculateBu() {
|
||||||
|
for (User u : users) {
|
||||||
u.calTotalBu();
|
u.calTotalBu();
|
||||||
}
|
}
|
||||||
r.sort(new Comparator<User>() {
|
users.sort(new Comparator<User>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(User o1, User o2) {
|
public int compare(User o1, User o2) {
|
||||||
return o1.order - o2.order;
|
return o1.order - o2.order;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
|
||||||
System.out.println(gson.toJson(r));
|
|
||||||
} catch (FileNotFoundException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private int findOrder(int order) {
|
private int findOrder(int order) {
|
||||||
@ -127,11 +139,14 @@ public class LogParser {
|
|||||||
|
|
||||||
static int[] map = new int[]{12, 11, 13, 10, 9, 5, 7, 8};
|
static int[] map = new int[]{12, 11, 13, 10, 9, 5, 7, 8};
|
||||||
|
|
||||||
|
private double getTime(String hourAndmin) {
|
||||||
|
String[] s = hourAndmin.split(":");
|
||||||
|
return Integer.valueOf(s[0]) * 60 + Integer.valueOf(s[1]);
|
||||||
|
}
|
||||||
|
|
||||||
private double calDate(String from, String to) {
|
private double calDate(String from, String to) {
|
||||||
String[] froms = from.split(":");
|
double frommin = getTime(from);
|
||||||
String[] tos = to.split(":");
|
double tomin = getTime(to);
|
||||||
double frommin = Integer.valueOf(froms[0]) * 60 + Integer.valueOf(froms[1]);
|
|
||||||
double tomin = Integer.valueOf(tos[0]) * 60 + Integer.valueOf(tos[1]);
|
|
||||||
if (tomin < frommin) tomin += 24 * 60;
|
if (tomin < frommin) tomin += 24 * 60;
|
||||||
return (tomin - frommin) / 60;
|
return (tomin - frommin) / 60;
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,23 @@ import org.junit.Test;
|
|||||||
|
|
||||||
public class PerfTest {
|
public class PerfTest {
|
||||||
@Test
|
@Test
|
||||||
public void go(){
|
public void go() {
|
||||||
String file = "./testinput/20211201kq.csv";
|
String file = "./testinput/20211201kq.csv";
|
||||||
String randa = "./testinput/jixiao11.csv";
|
String randa = "./testinput/jixiao11.csv";
|
||||||
|
LogParser parser = new LogParser();
|
||||||
|
parser.go(file, randa);
|
||||||
|
add11Extra(parser);
|
||||||
|
parser.prettyPrint();
|
||||||
|
}
|
||||||
|
|
||||||
new LogParser().go(file, randa);
|
public void add11Extra(LogParser log) {
|
||||||
|
for (LogParser.User u : log.users) {
|
||||||
|
u.D += 5;
|
||||||
|
u.wucan += 25 * 5;
|
||||||
|
u.dur += 45;
|
||||||
|
u.validDay += 5;
|
||||||
|
u.totalDay += 5;
|
||||||
|
}
|
||||||
|
log.calculateBu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user