jinlin
2025-03-18 d30e385951ce03335a5023f0775fd144da3c0b88
src/main/java/com/example/client/service/DismantTrackService.java
@@ -2,21 +2,15 @@
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.Compute;
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.model.DjJdgzShip;
import com.example.server.progressTrack.service.DjJdgzNetworkLevel3Service;
import com.example.server.progressTrack.service.NetWorkDiagramService;
import com.example.server.progressTrack.service.DjJdgzShipService;
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;
@@ -24,7 +18,9 @@
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@@ -34,50 +30,130 @@
    @Autowired
    private SysTeamGroupClassService sysTeamGroupClassService;
    @Autowired
    private DjJdgzDismantTrackService djJdgzDismantTrackService;
    private DismantTrackAddOrUpdate addOrUpdate;
    @Autowired
    private CabinService cabinService;
    @Autowired
    private DjJdgzShipService djJdgzShipService;
    private List<DjJdgzNetworkLevel3> list;
    public JPanel createTable(Integer width, Integer height) {
        height = height - 100;
    public JPanel createTable(Integer width, Integer height, JFrame frame) {
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(width, height));
        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));
        JPanel top = new JPanel();
        JPanel center = new JPanel();
        top.setPreferredSize(new Dimension(600, 100));
        center.setPreferredSize(new Dimension(600, Compute.ComputeHeight(100,frame)));
        jLeft.setPreferredSize(new Dimension(600, Compute.ComputeHeight(0,frame)));
        jLeft.add(center, BorderLayout.CENTER);
        jLeft.add(top, BorderLayout.NORTH);
        GridBagLayout layout = new GridBagLayout();
        top.setLayout(layout);
        // 创建左侧表格
        List<ColumnDto> columnDto = new ArrayList<>();
        List<DjJdgzNetworkLevel3> 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[]{
                "改装","加装","换装","改进性修理"
                "改装", "加装", "换装", "改进性修理", ""
        };
        List<DjJdgzShip> shipList = djJdgzShipService.getList();
        Map<String, Long> shipMap = new HashMap<>();
        JLabel JLabel0 = new JLabel("工程");
        JComboBox comboBox = new JComboBox();
        comboBox.setPreferredSize(new Dimension(112, 28));
        for (int i = 0; i < shipList.size(); i++) {
            shipMap.put(shipList.get(i).getShipNo(), shipList.get(i).getId());
            comboBox.addItem(shipList.get(i).getShipNo());
        }
        comboBox.setSelectedItem(shipList.get(0).getShipNo());
        JLabel JLabel1 = new JLabel("部门");
        JComboBox<JComboBoxItem> comboBox1 = new JComboBox<>(deptList);
        comboBox1.setPreferredSize(new Dimension(100, 28));
        comboBox1.setPreferredSize(new Dimension(112, 28));
        JComboBoxItem[] teamList1 = sysTeamGroupClassService.getTeamList(deptList[0].getId());
        JLabel JLabel2 = new JLabel("专业");
        JComboBox<JComboBoxItem> comboBox2 = new JComboBox<>(teamList1);
        comboBox2.setPreferredSize(new Dimension(100, 28));
        comboBox2.setPreferredSize(new Dimension(112, 28));
        JLabel JLabel3= new JLabel("舱室");
        JComboBox<JComboBoxItem> comboBox3 = new JComboBox(cabinList);
        comboBox3.setPreferredSize(new Dimension(100, 28));
        JLabel JLabel3 = new JLabel("舱室");
        JComboBox<JComboBoxItem> comboBox3 = new JComboBox<>(cabinList);
        comboBox3.setPreferredSize(new Dimension(112, 28));
        JLabel JLabel4 = new JLabel("类别");
        JComboBox<String> comboBox4 = new JComboBox<>(typeList);
        comboBox3.setPreferredSize(new Dimension(100, 28));
        comboBox4.setPreferredSize(new Dimension(112, 28));
        JTextField sb = new JTextField();
        JTextField sb = new JTextField(10);
        JButton query = new JButton("查询");
        top.add(JLabel0, new GBC(0, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        top.add(comboBox, new GBC(1, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        top.add(JLabel1, new GBC(2, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        top.add(comboBox1, new GBC(3, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        top.add(JLabel2, new GBC(4, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        top.add(comboBox2, new GBC(5, 0, 2, 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(4, 1, 2, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        top.add(query, new GBC(6, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        List<ColumnDto> columnDto = new ArrayList<>();
        list = level3Service.getList(null, deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], null);
        columnDto.add(new ColumnDto("序号", "", 60, "autoCreate", false, null, null));
        columnDto.add(new ColumnDto("设备名称", "name", 200, null, false, null, null));
        columnDto.add(new ColumnDto("部门", "deptId", 150, "dict", false, null, deptList));
        columnDto.add(new ColumnDto("专业", "teamgroupId", 150, "dict", false, null, teamList));
        columnDto.add(new ColumnDto("舱室", "cabinId", 100, "dict", false, null, cabinList));
        columnDto.add(new ColumnDto("类别", "type", 100, null, false, null, null));
        JTable subTable = CommonTable.createCommonTable(list, columnDto);
        subTable.setRowHeight(25);
        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        comboBox.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                String content = comboBox.getSelectedItem().toString();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
                subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                subTable.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        // 仅当鼠标左键单击时响应
                        if (e.getButton() == MouseEvent.BUTTON1) {
                            // 得到选中的行列的索引值
                            int r = subTable.getSelectedRow();
                            DjJdgzNetworkLevel3 data = list.get(r);
                            addOrUpdate.refreshTable(data.getId());
                        }
                    }
                });
            }
        });
        comboBox1.addItemListener(new ItemListener() {
            @Override
@@ -89,42 +165,164 @@
                        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(selectedId);
                        comboBox2.setModel(new DefaultComboBoxModel<>(teamList));
                        comboBox2.setSelectedIndex(-1);
                        comboBox2.setSelectedIndex(0);
                        String content = comboBox.getSelectedItem().toString();
                        JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                        JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                        JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                        String type = comboBox4.getSelectedItem().toString();
                        Long shipId = shipMap.get(content);
                        list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null);
                        CommonTable.refreshTable(list, columnDto, subTable);
                        subTable.setRowHeight(25);
                        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                        subTable.addMouseListener(new MouseAdapter() {
                            public void mouseClicked(MouseEvent e) {
                                // 仅当鼠标左键单击时响应
                                if (e.getButton() == MouseEvent.BUTTON1) {
                                    // 得到选中的行列的索引值
                                    int r = subTable.getSelectedRow();
                                    DjJdgzNetworkLevel3 data = list.get(r);
                                    addOrUpdate.refreshTable(data.getId());
                                }
                            }
                        });
                    }
                }
            }
        });
        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));
        comboBox2.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                String content = comboBox.getSelectedItem().toString();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
        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));
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null);
        top.add(sb, new GBC(0, 2, 2, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
        jLeft.add(top,BorderLayout.NORTH);
                subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                subTable.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        // 仅当鼠标左键单击时响应
                        if (e.getButton() == MouseEvent.BUTTON1) {
                            // 得到选中的行列的索引值
                            int r = subTable.getSelectedRow();
                            DjJdgzNetworkLevel3 data = list.get(r);
                            addOrUpdate.refreshTable(data.getId());
                        }
                    }
                });
            }
        });
        comboBox3.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                String content = comboBox.getSelectedItem().toString();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
        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));
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null);
        JTable subTable = CommonTable.createCommonTable(list, columnDto);
        subTable.setRowHeight(25);
        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
        JScrollPane scrollTable = new JScrollPane(subTable);
        jLeft.add(scrollTable, BorderLayout.CENTER);
                subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                subTable.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        // 仅当鼠标左键单击时响应
                        if (e.getButton() == MouseEvent.BUTTON1) {
                            // 得到选中的行列的索引值
                            int r = subTable.getSelectedRow();
                            DjJdgzNetworkLevel3 data = list.get(r);
                            addOrUpdate.refreshTable(data.getId());
                        }
                    }
                });
            }
        });
        comboBox4.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                String content = comboBox.getSelectedItem().toString();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
        JTable trackTable = new JTable();
        JPanel track = this.createTrack(width,height,list.get(0),trackTable);
        trackTable.setPreferredSize(new Dimension(width - width / 3, height));
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
                subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                subTable.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        // 仅当鼠标左键单击时响应
                        if (e.getButton() == MouseEvent.BUTTON1) {
                            // 得到选中的行列的索引值
                            int r = subTable.getSelectedRow();
                            DjJdgzNetworkLevel3 data = list.get(r);
                            addOrUpdate.refreshTable(data.getId());
                        }
                    }
                });
            }
        });
        query.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                list = level3Service.getList(null, null, null, null, null, sb.getText());
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
                subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                subTable.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        // 仅当鼠标左键单击时响应
                        if (e.getButton() == MouseEvent.BUTTON1) {
                            // 得到选中的行列的索引值
                            int r = subTable.getSelectedRow();
                            DjJdgzNetworkLevel3 data = list.get(r);
                            addOrUpdate.refreshTable(data.getId());
                        }
                    }
                });
            }
        });
        JScrollPane scrollTable = new JScrollPane(subTable,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollTable.setViewportView(subTable);
        scrollTable.setPreferredSize(new Dimension(600,Compute.ComputeHeightWithScroll(100,frame)));
        center.add(scrollTable);
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                center.setPreferredSize(new Dimension(600, Compute.ComputeHeight(100,frame)));
                jLeft.setPreferredSize(new Dimension(600, Compute.ComputeHeight(0,frame)));
                scrollTable.setPreferredSize(new Dimension(600,Compute.ComputeHeightWithScroll(100,frame)));
                jLeft.revalidate();
                jLeft.repaint();
                center.revalidate();
                center.repaint();
                scrollTable.revalidate();
                scrollTable.repaint();
            }
        });
        JPanel track = addOrUpdate.createTrack(width - 620, height, list.get(0), frame);
        // 创建水平分割面板
        JSplitPane hSplitPane = new JSplitPane(
@@ -132,7 +330,7 @@
                jLeft,
                track
        );
        hSplitPane.setDividerLocation(width / 4);
        hSplitPane.setDividerLocation(620);
        hSplitPane.setDividerSize(10);
        hSplitPane.setOneTouchExpandable(true);
        hSplitPane.setContinuousLayout(true);
@@ -146,108 +344,10 @@
                    // 得到选中的行列的索引值
                    int r = subTable.getSelectedRow();
                    DjJdgzNetworkLevel3 data = list.get(r);
                    addOrUpdate.refreshTable(data.getId());
                }
            }
        });
        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<JComboBoxItem> comboBox = new JComboBox(cabinList);
        comboBox.setPreferredSize(new Dimension(100, 28));
        JComboBox<String> 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<DjJdgzDismantTrack> list = djJdgzDismantTrackService.getList(djJdgzNetworkLevel3.getId(),null);
        List<TableButton> buttonList = new ArrayList<>();
        buttonList.add(new TableButton("edit", "编辑"));
        // 创建左侧表格
        List<ColumnDto> 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;
    }