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 records = new ArrayList<>(); List 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; } } }