package com.example.client.service; import com.example.client.dto.ColumnDto; import com.example.client.model.TableButton; import com.example.client.utils.CommonTable; import com.example.client.utils.ComplexTable; import com.example.client.utils.Compute; import com.example.server.progressTrack.Dto.ReportRecordDto; import com.example.server.progressTrack.Dto.StatistReportsDto; import com.example.server.progressTrack.model.DjJdgzNetworkLevel1; import com.example.server.progressTrack.model.DjJdgzNetworkLevel1List; import com.example.server.progressTrack.model.DjJdgzShip; import com.example.server.progressTrack.model.DjJdgzTrackRecord; import com.example.server.progressTrack.service.DjJdgzNetworkLevel1Service; import com.example.server.progressTrack.service.DjJdgzShipService; import com.example.server.progressTrack.service.DjJdgzTrackRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.swing.*; import javax.swing.event.TableModelEvent; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class StatisReportsService { @Autowired private DjJdgzTrackRecordService djJdgzTrackRecordService; public void createTable(JFrame jFrame, Long level1NetworkId) { JFrame frame1 = new JFrame("统计报表"); frame1.setSize(1200, 700); frame1.setResizable(false); frame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); frame1.setLocationRelativeTo(null); frame1.setVisible(true); frame1.addWindowListener(new WindowAdapter() { //添加第二个界面的关闭事件: public void windowClosing(WindowEvent e) { //添加事件: jFrame.setEnabled(true);//将主界面再设置为可操作的 } }); List list = djJdgzTrackRecordService.getReport(level1NetworkId); //columnDto.add(new ColumnDto("ID", "id", -1, null,false)); /* columnDto.add(new ColumnDto("班组专业", "TeamGroupName", 280, null, false, null,null)); columnDto.add(new ColumnDto("项目总数", "AllNum", 150, null, false, null,null)); columnDto.add(new ColumnDto("进行中", "JxzNum", 150, null, false, null,null)); columnDto.add(new ColumnDto("临期", "LqNum", 150, null, false, null,null)); columnDto.add(new ColumnDto("逾期", "YqNum", 150, null, false, null,null)); columnDto.add(new ColumnDto("正常完成", "ZcwcNum", 150, null, false, null,null)); columnDto.add(new ColumnDto("超期完成", "CqwcNum", 150, null, false, null,null)); table = CommonTable.createCommonTable(list, columnDto); table.setRowHeight(25); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); JScrollPane scrollTable = new JScrollPane(table);*/ //frame1.add(scrollTable); Object[][] headerRows = new Object[2][7]; headerRows[0] = new Object[]{"班组专业", "项目总数", "未完成", ComplexTable.mergeCellX, ComplexTable.mergeCellX, "已完成", ComplexTable.mergeCellX}; //此处2-5是不会显示出来的,因为1-4向下合并了一行 + 向右合并了一列 , 而2-5被这个矩形范围包括了 headerRows[1] = new Object[]{ComplexTable.mergeCellY, ComplexTable.mergeCellY, "进行中", "临期", "逾期", "正常完成", "超期完成"}; String[][] body = new String[list.size()][7]; for (int i = 0; i < list.size(); i++) { StatistReportsDto data = list.get(i); body[i][0] = data.getTeamGroupName(); body[i][1] = String.valueOf(data.getAllNum()); body[i][2] = String.valueOf(data.getJxzNum()); body[i][3] = String.valueOf(data.getLqNum()); body[i][4] = String.valueOf(data.getYqNum()); body[i][5] = String.valueOf(data.getZcwcNum()); body[i][6] = String.valueOf(data.getCqwcNum()); } ComplexTable complexTable = new ComplexTable(headerRows, body, 171); JScrollPane scrollTable = new JScrollPane(complexTable); complexTable.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { int row = complexTable.rowAtPoint(e.getPoint()); int column = complexTable.columnAtPoint(e.getPoint()); // 检查是否点击了有效单元格 if (row >= 0 && column >= 1) { Object cellValue = complexTable.getValueAt(row, column); Integer value = Integer.parseInt(cellValue.toString()); if (value > 0) { Long teamgroupId = list.get(row).getTeamgroupId(); reportRecord(column,level1NetworkId,teamgroupId); } } } }); frame1.add(scrollTable); frame1.setVisible(true); } private void reportRecord(int column, Long level1NetworkId,Long teamgroupId) { JFrame frame1 = new JFrame("记录"); frame1.setSize(500, 400); frame1.setResizable(false); frame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); frame1.setLocationRelativeTo(null); frame1.setVisible(true); List list = djJdgzTrackRecordService.getReportRecord(level1NetworkId,column,teamgroupId); List columnDto = new ArrayList<>(); //columnDto.add(new ColumnDto("ID", "id", -1, null,false)); columnDto.add(new ColumnDto("序号", "", (500 - 10) / 3, "autoCreate", false, null, null)); columnDto.add(new ColumnDto("设备名称", "name", (500 - 10) / 3, null, false, null, null)); columnDto.add(new ColumnDto("节点名称", "processName", (500 - 10) / 3, null, false, null, null)); JTable table = CommonTable.createCommonTable(list, columnDto); table.setRowHeight(25); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); JScrollPane scrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane.setViewportView(table); scrollPane.getViewport().setBackground(Color.WHITE); scrollPane.setPreferredSize(new Dimension(500 - 20, 400)); frame1.add(scrollPane); } }