package com.example.client.service; import com.example.client.dto.ColumnDto; import com.example.client.dto.JComboBoxItem; import com.example.client.model.TableButton; import com.example.client.utils.CommonTable; import com.example.client.utils.GBC; import com.example.client.utils.MultiSelectComboBox; import com.example.server.cabin.service.CabinService; import com.example.server.progressTrack.Dto.NetworkNodeStatusDto; import com.example.server.progressTrack.model.DjJdgzDismantTrack; import com.example.server.progressTrack.model.DjJdgzNetworkLevel3; import com.example.server.progressTrack.model.DjJdgzTrackRecord; import com.example.server.progressTrack.service.DjJdgzDismantTrackService; import com.example.server.progressTrack.service.DjJdgzNetworkLevel3Service; import com.example.server.progressTrack.service.NetWorkDiagramService; import com.example.server.teamGroup.service.SysTeamGroupClassService; import com.mxgraph.swing.mxGraphComponent; import com.mxgraph.view.mxGraph; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.List; @Service public class DismantTrackService { @Autowired private DjJdgzNetworkLevel3Service level3Service; @Autowired private SysTeamGroupClassService sysTeamGroupClassService; @Autowired private DjJdgzDismantTrackService djJdgzDismantTrackService; @Autowired private CabinService cabinService; public JPanel createTable(Integer width, Integer height) { height = height - 100; JPanel panel = new JPanel(); JPanel jLeft = new JPanel(new BorderLayout()); JPanel top = new JPanel(new BorderLayout()); jLeft.setPreferredSize(new Dimension(width / 3 - 20, height)); top.setPreferredSize(new Dimension(width / 3 - 20, 100)); // 创建左侧表格 List columnDto = new ArrayList<>(); List list = level3Service.getList(null); //columnDto.add(new ColumnDto("ID", "id", -1, null,false)); JComboBoxItem[] deptList = sysTeamGroupClassService.getDeptList(); JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(null); JComboBoxItem[] cabinList = cabinService.getList(); String[] typeList = new String[]{ "改装","加装","换装","改进性修理" }; JLabel JLabel1 = new JLabel("部门"); JComboBox comboBox1 = new JComboBox<>(deptList); comboBox1.setPreferredSize(new Dimension(100, 28)); JComboBoxItem[] teamList1 = sysTeamGroupClassService.getTeamList(deptList[0].getId()); JLabel JLabel2 = new JLabel("专业"); JComboBox comboBox2 = new JComboBox<>(teamList1); comboBox2.setPreferredSize(new Dimension(100, 28)); JLabel JLabel3= new JLabel("舱室"); JComboBox comboBox3 = new JComboBox(cabinList); comboBox3.setPreferredSize(new Dimension(100, 28)); JLabel JLabel4 = new JLabel("类别"); JComboBox comboBox4 = new JComboBox<>(typeList); comboBox3.setPreferredSize(new Dimension(100, 28)); JTextField sb = new JTextField(); comboBox1.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { JComboBoxItem selectedItem = (JComboBoxItem) comboBox1.getSelectedItem(); if (selectedItem != null) { long selectedId = selectedItem.getId(); JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(selectedId); comboBox2.setModel(new DefaultComboBoxModel<>(teamList)); comboBox2.setSelectedIndex(-1); } } } }); top.add(JLabel1, new GBC(0, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5)); top.add(comboBox1, new GBC(1, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5)); top.add(JLabel2, new GBC(2, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5)); top.add(comboBox2, new GBC(3, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5)); top.add(JLabel3, new GBC(0, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5)); top.add(comboBox3, new GBC(1, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5)); top.add(JLabel4, new GBC(2, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5)); top.add(comboBox4, new GBC(3, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5)); top.add(sb, new GBC(0, 2, 2, 1).setAnchor(GBC.SOUTHWEST).setInsets(5)); jLeft.add(top,BorderLayout.NORTH); columnDto.add(new ColumnDto("序号", "", width / 20 - 10, "autoCreate", false, null,null)); columnDto.add(new ColumnDto("部门", "deptId", width / 18, "dict", false, null,deptList)); columnDto.add(new ColumnDto("专业", "teamgroupId", width / 18, "dict", false, null,teamList)); columnDto.add(new ColumnDto("舱室", "cabinId", width / 18, "dicts", false, null,cabinList)); columnDto.add(new ColumnDto("类别", "type", width / 18, null, false, null,null)); columnDto.add(new ColumnDto("设备名称", "name", width / 18, null, false, null,null)); JTable subTable = CommonTable.createCommonTable(list, columnDto); subTable.setRowHeight(25); subTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); JScrollPane scrollTable = new JScrollPane(subTable); jLeft.add(scrollTable, BorderLayout.CENTER); JTable trackTable = new JTable(); JPanel track = this.createTrack(width,height,list.get(0),trackTable); trackTable.setPreferredSize(new Dimension(width - width / 3, height)); // 创建水平分割面板 JSplitPane hSplitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, jLeft, track ); hSplitPane.setDividerLocation(width / 4); hSplitPane.setDividerSize(10); hSplitPane.setOneTouchExpandable(true); hSplitPane.setContinuousLayout(true); panel.add(hSplitPane, BorderLayout.CENTER); subTable.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { // 仅当鼠标左键单击时响应 if (e.getButton() == MouseEvent.BUTTON1) { // 得到选中的行列的索引值 int r = subTable.getSelectedRow(); DjJdgzNetworkLevel3 data = list.get(r); } } }); return panel; } private JPanel createTrack(Integer width, Integer height, DjJdgzNetworkLevel3 djJdgzNetworkLevel3, JTable trackTable) { JPanel panel = new JPanel(); JPanel topJpanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); topJpanel.setPreferredSize(new Dimension(width, 37)); topJpanel.setBackground(Color.WHITE); JPanel centerJpanel = new JPanel(); centerJpanel.setPreferredSize(new Dimension(width - 20, height - 100)); centerJpanel.setBackground(Color.WHITE); panel.add(topJpanel, BorderLayout.NORTH); panel.add(centerJpanel, BorderLayout.CENTER); JComboBoxItem[] cabinList = cabinService.getList(); String[] typeList = new String[]{ "改装","加装","换装","改进性修理" }; JComboBox comboBox = new JComboBox(cabinList); comboBox.setPreferredSize(new Dimension(100, 28)); JComboBox comboBox2 = new JComboBox<>(typeList); comboBox2.setPreferredSize(new Dimension(100, 28)); JButton btnTj = new JButton("统计报表"); JButton btnExport = new JButton("导出拆卸报表"); topJpanel.add(btnTj); topJpanel.add(btnExport); topJpanel.add(comboBox); topJpanel.add(comboBox2); comboBox.setPreferredSize(new Dimension(300, 28)); comboBox2.setPreferredSize(new Dimension(300, 28)); List list = djJdgzDismantTrackService.getList(djJdgzNetworkLevel3.getId(),null); List buttonList = new ArrayList<>(); buttonList.add(new TableButton("edit", "编辑")); // 创建左侧表格 List columnDto = new ArrayList<>(); //columnDto.add(new ColumnDto("ID", "id", -1, null,false)); columnDto.add(new ColumnDto("序号", "", 50, "autoCreate", false, null, null)); columnDto.add(new ColumnDto("部门", "deptId", 160, null, false, null, null)); columnDto.add(new ColumnDto("专业", "teamgroupId", 160, null, false, null, null)); columnDto.add(new ColumnDto("舱室", "cabinId", 120, null, false, null, null)); columnDto.add(new ColumnDto("部件名称", "name", 200, null, false, null, null)); columnDto.add(new ColumnDto("拆卸时间", "dismantTime", 200, null, false, null, null)); columnDto.add(new ColumnDto("拆卸单位", "dismantUnit", 200, null, false, null, null)); columnDto.add(new ColumnDto("拆卸人员", "dismantStaff", 200, null, false, null, null)); columnDto.add(new ColumnDto("拆卸助修艇员", "dismantAssistant", 200, null, false, null, null)); columnDto.add(new ColumnDto("出舱时间", "exitTime", 200, "", true, buttonList, null)); columnDto.add(new ColumnDto("出舱单位", "exitUnit", 200, null, false, null, null)); columnDto.add(new ColumnDto("出舱人员", "exitStaff", 200, null, false, null, null)); columnDto.add(new ColumnDto("出舱助修艇员", "exitAssistant", 200, null, false, null, null)); columnDto.add(new ColumnDto("退重时间", "returnWeightTime", 200, null, false, null, null)); columnDto.add(new ColumnDto("称重员", "weigher", 200, null, false, null, null)); columnDto.add(new ColumnDto("退重重量", "returnWeight", 200, null, false, null, null)); columnDto.add(new ColumnDto("退重助修艇员", "returnWeightAssistant", 200, null, false, null, null)); columnDto.add(new ColumnDto("入库时间", "warehouseTime", 200, null, false, null, null)); columnDto.add(new ColumnDto("入库人员", "warehouseStaff", 200, null, false, null, null)); columnDto.add(new ColumnDto("当前存放位置", "currentLocation", 200, null, false, null, null)); trackTable = CommonTable.createCommonTable(list, columnDto); trackTable.setRowHeight(25); trackTable.setAutoCreateRowSorter(true); trackTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); trackTable.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { } }); btnTj.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); btnExport.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); JScrollPane scrollPane = new JScrollPane(trackTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane.setViewportView(trackTable); scrollPane.getViewport().setBackground(Color.WHITE); scrollPane.setPreferredSize(new Dimension(width - 20, height - 120)); centerJpanel.add(scrollPane); return panel; } }