package com.example.client.service;
|
|
import com.example.client.dto.ColumnDto;
|
import com.example.client.dto.JComboBoxItem;
|
import com.example.client.utils.CommonTable;
|
import com.example.client.utils.ComplexHeaderUI;
|
import com.example.client.utils.ComplexTable;
|
import com.example.client.utils.ComplexTableUI;
|
import com.example.server.progressTrack.Dto.StatistDismantDto;
|
import com.example.server.progressTrack.model.DjJdgzShip;
|
import com.example.server.progressTrack.service.DjJdgzDismantTrackService;
|
import com.example.server.teamGroup.service.SysTeamGroupClassService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.swing.*;
|
import javax.swing.table.DefaultTableModel;
|
import javax.swing.table.TableModel;
|
import java.awt.*;
|
import java.awt.event.ItemEvent;
|
import java.awt.event.ItemListener;
|
import java.awt.event.WindowAdapter;
|
import java.awt.event.WindowEvent;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Vector;
|
|
|
@Service
|
public class StatisDismant2Service {
|
@Autowired
|
private DjJdgzDismantTrackService djJdgzDismantTrackService;
|
@Autowired
|
private SysTeamGroupClassService sysTeamGroupClassService;
|
|
public void createTable(JFrame jFrame, Long level1Id) {
|
JFrame frame1 = new JFrame("拆卸进度统计详情表");
|
frame1.setSize(1500, 800);
|
frame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
|
frame1.setLocationRelativeTo(null);
|
frame1.setVisible(true);
|
frame1.addWindowListener(new WindowAdapter() {
|
//添加第二个界面的关闭事件:
|
public void windowClosing(WindowEvent e) {
|
//添加事件:
|
jFrame.setEnabled(true);//将主界面再设置为可操作的
|
}
|
});
|
|
|
JPanel topJpanel = new JPanel();
|
topJpanel.setPreferredSize(new Dimension(1500, 40));
|
topJpanel.setBackground(Color.WHITE);
|
|
JPanel centerJpanel = new JPanel();
|
centerJpanel.setPreferredSize(new Dimension(1500 - 20, 800 - 40));
|
centerJpanel.setBackground(Color.WHITE);
|
|
|
JComboBoxItem[] deptList = sysTeamGroupClassService.getDeptList();
|
|
|
JLabel JLabel1 = new JLabel("部门");
|
JComboBox<JComboBoxItem> comboBox1 = new JComboBox<>(deptList);
|
comboBox1.setPreferredSize(new Dimension(185, 28));
|
comboBox1.setSelectedIndex(1);
|
|
JComboBoxItem[] teamList1 = sysTeamGroupClassService.getTeamList(deptList[1].getId());
|
|
JLabel JLabel2 = new JLabel("专业");
|
JComboBox<JComboBoxItem> comboBox2 = new JComboBox<>(teamList1);
|
comboBox2.setPreferredSize(new Dimension(185, 28));
|
|
topJpanel.add(JLabel1);
|
topJpanel.add(comboBox1);
|
topJpanel.add(JLabel2);
|
topJpanel.add(comboBox2);
|
|
final List<StatistDismantDto>[] list = new List[]{djJdgzDismantTrackService.getStatist2(level1Id, deptList[1].getId())};
|
|
Object[][] headerRows = new Object[2][9];
|
headerRows[0] = new Object[]{"舱室", "总数", ComplexTable.mergeCellX, "拆卸进度完成", ComplexTable.mergeCellX, "子部件", ComplexTable.mergeCellX, ComplexTable.mergeCellX, ComplexTable.mergeCellX,};
|
//此处2-5是不会显示出来的,因为1-4向下合并了一行 + 向右合并了一列 , 而2-5被这个矩形范围包括了
|
headerRows[1] = new Object[]{ComplexTable.mergeCellY, "设备", "子部件", "设备", "子部件", "已拆卸", "已出舱", "已退重", "已入库"};
|
|
String[][] body = new String[list[0].size()][9];
|
|
for (int i = 0; i < list[0].size(); i++) {
|
StatistDismantDto data = list[0].get(i);
|
body[i][0] = data.getName();
|
body[i][1] = String.valueOf(data.getSbsl());
|
body[i][2] = String.valueOf(data.getZbjsl());
|
body[i][3] = String.valueOf(data.getSbcxsl());
|
body[i][4] = String.valueOf(data.getZbjcxsl());
|
body[i][5] = String.valueOf(data.getDismantsl());
|
body[i][6] = String.valueOf(data.getExitsl());
|
body[i][7] = String.valueOf(data.getReturnsl());
|
body[i][8] = String.valueOf(data.getWarehousesl());
|
}
|
|
JTable jTable = new ComplexTable(headerRows, body, 160);
|
JScrollPane scrollTable = new JScrollPane(jTable);
|
scrollTable.setPreferredSize(new Dimension(1500 - 20, 800 - 40));
|
centerJpanel.add(scrollTable);
|
frame1.add(topJpanel, BorderLayout.NORTH);
|
frame1.add(centerJpanel, BorderLayout.CENTER);
|
comboBox1.addItemListener(new ItemListener() {
|
@Override
|
public void itemStateChanged(ItemEvent e) {
|
if (e.getStateChange() == ItemEvent.SELECTED) {
|
JComboBoxItem selectedItem = (JComboBoxItem) comboBox1.getSelectedItem();
|
if (selectedItem != null && selectedItem.getId() != null) {
|
long selectedId = selectedItem.getId();
|
|
JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(selectedId);
|
comboBox2.setModel(new DefaultComboBoxModel<>(teamList));
|
comboBox2.setSelectedIndex(0);
|
|
JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
|
JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
|
Long id = null;
|
if (team.getId() != null) {
|
id = team.getId();
|
} else {
|
id = dept.getId();
|
}
|
list[0] = djJdgzDismantTrackService.getStatist2(level1Id, id);
|
|
Object[][] headerRows = new Object[2][9];
|
headerRows[0] = new Object[]{"部门/专业", "总数", ComplexTable.mergeCellX, "拆卸进度完成", ComplexTable.mergeCellX, "子部件", ComplexTable.mergeCellX, ComplexTable.mergeCellX, ComplexTable.mergeCellX,};
|
//此处2-5是不会显示出来的,因为1-4向下合并了一行 + 向右合并了一列 , 而2-5被这个矩形范围包括了
|
headerRows[1] = new Object[]{ComplexTable.mergeCellY, "设备", "子部件", "设备", "子部件", "已拆卸", "已出舱", "已退重", "已入库"};
|
|
String[][] body = new String[list[0].size()][9];
|
|
for (int i = 0; i < list[0].size(); i++) {
|
StatistDismantDto data = list[0].get(i);
|
body[i][0] = data.getName();
|
body[i][1] = String.valueOf(data.getSbsl());
|
body[i][2] = String.valueOf(data.getZbjsl());
|
body[i][3] = String.valueOf(data.getSbcxsl());
|
body[i][4] = String.valueOf(data.getZbjcxsl());
|
body[i][5] = String.valueOf(data.getDismantsl());
|
body[i][6] = String.valueOf(data.getExitsl());
|
body[i][7] = String.valueOf(data.getReturnsl());
|
body[i][8] = String.valueOf(data.getWarehousesl());
|
}
|
Vector<Vector<Object>> dataVector = new Vector<>();
|
for (Object[] row : body) {
|
dataVector.add(new Vector<>(Arrays.asList(row)));
|
}
|
|
Vector<Object> columnIdentifiers = new Vector<>(Arrays.asList(headerRows[1]));
|
|
DefaultTableModel model = (DefaultTableModel) jTable.getModel();
|
model.setDataVector(dataVector, columnIdentifiers);
|
|
// 设置列宽
|
for (int i = 0; i < headerRows[1].length; i++) {
|
jTable.getColumnModel().getColumn(i).setPreferredWidth(160);
|
}
|
|
// 设置表头UI
|
jTable.getTableHeader().setUI(new ComplexHeaderUI(headerRows, jTable));
|
|
// 设置表格UI
|
jTable.setUI(new ComplexTableUI(body, jTable));
|
|
// 重新渲染表格
|
jTable.repaint();
|
}
|
}
|
}
|
});
|
comboBox2.addItemListener(new ItemListener() {
|
@Override
|
public void itemStateChanged(ItemEvent e) {
|
if (e.getStateChange() == ItemEvent.SELECTED) {
|
|
JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
|
JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
|
Long id = null;
|
if (team.getId() != null) {
|
id = team.getId();
|
} else {
|
id = dept.getId();
|
}
|
list[0] = djJdgzDismantTrackService.getStatist2(level1Id, id);
|
|
Object[][] headerRows = new Object[2][9];
|
headerRows[0] = new Object[]{"部门/专业", "总数", ComplexTable.mergeCellX, "拆卸进度完成", ComplexTable.mergeCellX, "子部件", ComplexTable.mergeCellX, ComplexTable.mergeCellX, ComplexTable.mergeCellX,};
|
//此处2-5是不会显示出来的,因为1-4向下合并了一行 + 向右合并了一列 , 而2-5被这个矩形范围包括了
|
headerRows[1] = new Object[]{ComplexTable.mergeCellY, "设备", "子部件", "设备", "子部件", "已拆卸", "已出舱", "已退重", "已入库"};
|
|
String[][] body = new String[list[0].size()][9];
|
|
for (int i = 0; i < list[0].size(); i++) {
|
StatistDismantDto data = list[0].get(i);
|
body[i][0] = data.getName();
|
body[i][1] = String.valueOf(data.getSbsl());
|
body[i][2] = String.valueOf(data.getZbjsl());
|
body[i][3] = String.valueOf(data.getSbcxsl());
|
body[i][4] = String.valueOf(data.getZbjcxsl());
|
body[i][5] = String.valueOf(data.getDismantsl());
|
body[i][6] = String.valueOf(data.getExitsl());
|
body[i][7] = String.valueOf(data.getReturnsl());
|
body[i][8] = String.valueOf(data.getWarehousesl());
|
}
|
Vector<Vector<Object>> dataVector = new Vector<>();
|
for (Object[] row : body) {
|
dataVector.add(new Vector<>(Arrays.asList(row)));
|
}
|
|
Vector<Object> columnIdentifiers = new Vector<>(Arrays.asList(headerRows[1]));
|
|
DefaultTableModel model = (DefaultTableModel) jTable.getModel();
|
model.setDataVector(dataVector, columnIdentifiers);
|
|
// 设置列宽
|
for (int i = 0; i < headerRows[1].length; i++) {
|
jTable.getColumnModel().getColumn(i).setPreferredWidth(160);
|
}
|
|
// 设置列宽
|
for (int i = 0; i < headerRows[1].length; i++) {
|
jTable.getColumnModel().getColumn(i).setPreferredWidth(160);
|
}
|
|
// 设置表头UI
|
jTable.getTableHeader().setUI(new ComplexHeaderUI(headerRows, jTable));
|
|
// 设置表格UI
|
jTable.setUI(new ComplexTableUI(body, jTable));
|
|
// 重新渲染表格
|
jTable.repaint();
|
}
|
}
|
});
|
|
frame1.setVisible(true);
|
}
|
|
}
|