89 lines
3.1 KiB
Java
89 lines
3.1 KiB
Java
package com.goats;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.FileReader;
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public class ProcessTimeCalculator {
|
|
public static void main(String[] args) {
|
|
String filePath = "D:\\GOATS\\昌昊项目资料\\sql\\s_data_202502271336.txt";
|
|
List<ProductionRecord> records = new ArrayList<>();
|
|
List<ProcessTimeResult> results = new ArrayList<>();
|
|
|
|
// 读取数据
|
|
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
|
|
String line;
|
|
boolean isHeader = true;
|
|
while ((line = br.readLine()) != null) {
|
|
if (isHeader) { // 跳过表头
|
|
isHeader = false;
|
|
continue;
|
|
}
|
|
String[] fields = line.split("\\|");
|
|
if (fields.length < 8) continue;
|
|
|
|
ProductionRecord record = new ProductionRecord();
|
|
record.rid = Long.parseLong(fields[1].trim());
|
|
record.id = Integer.parseInt(fields[2].trim());
|
|
record.a002CycleTime = Double.parseDouble(fields[4].trim().replace(",", "")); //循环时间
|
|
record.a003RunningTime = Double.parseDouble(fields[5].trim().replace(",", ""));//运行时间
|
|
record.a005Quantity = Integer.parseInt(fields[7].trim().replace(",", ""));//加工数量
|
|
|
|
records.add(record);
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
// 计算加工工时
|
|
int previousQuantity = 0;
|
|
double previousRunningTime = 0;
|
|
for (ProductionRecord record : records) {
|
|
if (record.a005Quantity > previousQuantity) {
|
|
if (previousQuantity != 0) { // 忽略初始值
|
|
double cycleTime = record.a003RunningTime - previousRunningTime;
|
|
results.add(new ProcessTimeResult(
|
|
record.a005Quantity,
|
|
cycleTime,
|
|
record.a002CycleTime
|
|
));
|
|
}
|
|
previousQuantity = record.a005Quantity;
|
|
previousRunningTime = record.a003RunningTime;
|
|
}
|
|
}
|
|
|
|
// 打印结果
|
|
System.out.println("零件编号 | 加工工时 (分钟) | A002循环时间 (秒)");
|
|
for (ProcessTimeResult result : results) {
|
|
System.out.printf("%-8d | %-12.2f | %-15.2f%n",
|
|
result.partNumber,
|
|
result.processTime,
|
|
result.a002CycleTime
|
|
);
|
|
}
|
|
}
|
|
|
|
static class ProductionRecord {
|
|
long rid;
|
|
int id;
|
|
double a002CycleTime;
|
|
double a003RunningTime;
|
|
int a005Quantity;
|
|
}
|
|
|
|
static class ProcessTimeResult {
|
|
int partNumber;
|
|
double processTime;
|
|
double a002CycleTime;
|
|
|
|
ProcessTimeResult(int partNumber, double processTime, double a002CycleTime) {
|
|
this.partNumber = partNumber;
|
|
this.processTime = processTime;
|
|
this.a002CycleTime = a002CycleTime;
|
|
}
|
|
}
|
|
}
|