jinlin
4 天以前 a3fe79e605b07a5a908599aaa830a0860e9423d2
src/main/java/com/example/client/service/Level3View2Service.java
@@ -3,9 +3,11 @@
import com.example.client.dto.ColumnDto;
import com.example.client.dto.JComboBoxItem;
import com.example.client.utils.*;
import com.example.server.ExportExcel.dto.ExcelColumnDto;
import com.example.server.cabin.service.CabinService;
import com.example.server.progressTrack.Dto.TableNodeDto;
import com.example.server.progressTrack.model.DjJdgzShip;
import com.example.server.progressTrack.model.DjJdgzTrackRecord;
import com.example.server.progressTrack.service.*;
import com.example.server.teamGroup.service.SysTeamGroupClassService;
import org.apache.commons.lang3.StringUtils;
@@ -15,6 +17,7 @@
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@@ -27,6 +30,8 @@
    @Autowired
    private DjJdgzShipService djJdgzShipService;
    @Autowired
    private DjJdgzTrackRecordService djJdgzTrackRecordService;
    @Autowired
    private SysTeamGroupClassService sysTeamGroupClassService;
    @Autowired
    private CabinService cabinService;
@@ -37,6 +42,8 @@
    private List<TableNodeDto> list;
    private Map<String, Long> shipMap = new HashMap<>();
    private List<ColumnDto> columnDto;
    @Autowired
    private DjJdgzNetworkLevel1Service djJdgzNetworkLevel1Service;
    public JPanel createTable(Integer width, Integer height, JFrame frame) {
@@ -124,6 +131,7 @@
        // 创建下拉框
        ColorDescriptionComboBox comboBox5 = new ColorDescriptionComboBox(colorDescriptions);
        JButton btnTjz = new JButton("设备进度统计总表");
        JButton btnExport = new JButton("导出");
        topJpanel2.add(JLabel0, new GBC(0, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel2.add(comboBox, new GBC(1, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
@@ -143,7 +151,9 @@
        topJpanel2.add(sb, new GBC(4, 1, 2, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel2.add(query, new GBC(6, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(comboBox5, new GBC(7, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(btnExport, new GBC(8, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(btnTjz, new GBC(9, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        list = level3Service.getNodeList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], Math.toIntExact(isealCabin[0].getId()), Math.toIntExact(isealCabin[0].getId()), null);
@@ -158,8 +168,8 @@
        MouseMotionListener mouseMotionListener = new MouseMotionListener() {
            @Override
            public void mouseDragged(MouseEvent e) {
                // 不需要处理鼠标拖动事件
            }
            @Override
            public void mouseMoved(MouseEvent e) {
@@ -194,8 +204,26 @@
                }
            }
        };
        MouseAdapter mouseAdapter = new MouseAdapter(){
            @Override
            public void mouseClicked(MouseEvent e) {
                // if (historyCalled[0]) return;
                // 获取点击的行和列
                int row = table.rowAtPoint(e.getPoint());
                // 检查是否点击了有效单元格
                if (row >= 0) {
                    Long id = list.get(row).getNetworkId();
                    if (id != null) {
                      getRecordById(frame,id);
                    }
                }
            }
        };
        table.addMouseMotionListener(mouseMotionListener);
        table.addMouseListener(mouseAdapter);
        comboBox.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
@@ -390,6 +418,13 @@
                statisProductService.createTable(frame, shipId, type);
            }
        });
        btnExport.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.setEnabled(false);
                export(frame);
            }
        });
        comboBox5.addItemListener(new ItemListener() {
            @Override
@@ -445,6 +480,188 @@
        return panel;
    }
    private void getRecordById(JFrame jFrame, Long id) {
        jFrame.setEnabled(false);
        JFrame frame1 = new JFrame("跟踪记录");
        frame1.setSize(2000, 800);
        frame1.setResizable(true);
        frame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        frame1.setLocationRelativeTo(null);
        frame1.addWindowListener(new WindowAdapter() {
            //添加第二个界面的关闭事件:
            public void windowClosing(WindowEvent e) {
                //添加事件:
                jFrame.setEnabled(true);//将主界面再设置为可操作的
            }
        });
        List<ColumnDto> columnDto = new ArrayList<>();
        List<DjJdgzTrackRecord> list = djJdgzTrackRecordService.getRecordById(id);
        JComboBoxItem[] trackList = {
                new JComboBoxItem(0L, "线下"),
                new JComboBoxItem(1L, "电话"),
        };
        JComboBoxItem[] statusList = {
                new JComboBoxItem(0L, "进行中"),
                new JComboBoxItem(1L, "已完成"),
        };
        JComboBoxItem[] hasDelayRiskList = {
                new JComboBoxItem(0L, "无"),
                new JComboBoxItem(1L, "有"),
        };
        columnDto.add(new ColumnDto("序号", "", 80, "autoCreate", false, null, null));
        columnDto.add(new ColumnDto("节点名称", "processName", 120, null, false, null, null));
        columnDto.add(new ColumnDto("跟踪方式", "trackMethod", 120, "dict", false, null, trackList));
        columnDto.add(new ColumnDto("跟踪地点", "trackLocation", 120, null, false, null, null));
        columnDto.add(new ColumnDto("助修人", "trackPerson", 180, null, false, null, null));
        columnDto.add(new ColumnDto("厂方", "trackedPerson", 180, null, false, null, null));
        columnDto.add(new ColumnDto("总承修单位", "generalRepair", 180, null, false, null, null));
        columnDto.add(new ColumnDto("分承修单位", "repair", 180, null, false, null, null));
        columnDto.add(new ColumnDto("节点进展", "currentStatus", 120, "dict", false, null, statusList));
        columnDto.add(new ColumnDto("脱期风险", "hasDelayRisk", 120, "dict", false, null, hasDelayRiskList));
        columnDto.add(new ColumnDto("预计完成时间", "estimatedCompletionTime", 200, "selectDate", false, null, null));
        columnDto.add(new ColumnDto("存在问题", "problem", 160, null, false, null, null));
        columnDto.add(new ColumnDto("后续计划", "followupPlan", 160, null, false, null, null));
        columnDto.add(new ColumnDto("备注", "remark", 160, null, false, null, null));
        JTable subTable = CommonTable.createCommonTable(list, columnDto);
        subTable.setRowHeight(25);
        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        JScrollPane scrollPane = new JScrollPane(subTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane.setViewportView(subTable);
        scrollPane.getViewport().setBackground(Color.WHITE);
        //scrollPane.setPreferredSize(new Dimension(width - 20, height - 100));
        frame1.add(scrollPane);
        frame1.setVisible(true);
    }
    private void export(JFrame jFrame) {
        JFrame frame1 = new JFrame("导出三级网络图状态");
        frame1.setSize(300, 400);
        frame1.setResizable(true);
        frame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        frame1.setLocationRelativeTo(null);
        frame1.setVisible(true);
        frame1.addWindowListener(new WindowAdapter() {
            //添加第二个界面的关闭事件:
            public void windowClosing(WindowEvent e) {
                //添加事件:
                jFrame.setEnabled(true);//将主界面再设置为可操作的
            }
        });
        GridBagLayout layout = new GridBagLayout();
        frame1.setLayout(layout);
        JComboBoxItem[] projectList = djJdgzNetworkLevel1Service.getProjectList();
        JComboBoxItem[] deptList = sysTeamGroupClassService.getDeptList();
        String[] typeList = new String[]{
                "","进行中","临期","逾期","正常完成","超期完成"
        };
        JLabel JLabel1 = new JLabel("工程");
        JComboBox<JComboBoxItem> comboBox0 = new JComboBox<>(projectList);
        comboBox0.setPreferredSize(new Dimension(200, 28));
        comboBox0.setSelectedIndex(-1);
        JLabel JLabel4 = new JLabel("部门");
        JComboBox<JComboBoxItem> comboBox3 = new JComboBox<>(deptList);
        comboBox3.setPreferredSize(new Dimension(200, 28));
        JComboBoxItem[] teamList1 = sysTeamGroupClassService.getTeamList(deptList[0].getId());
        JLabel JLabel5 = new JLabel("专业");
        JComboBox<JComboBoxItem> comboBox4 = new JComboBox<>(teamList1);
        comboBox4.setPreferredSize(new Dimension(200, 28));
        JLabel JLabel7 = new JLabel("状态");
        JComboBox<String> comboBox6 = new JComboBox<>(typeList);
        comboBox6.setPreferredSize(new Dimension(200, 28));
        comboBox3.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    JComboBoxItem selectedItem = (JComboBoxItem) comboBox3.getSelectedItem();
                    if (selectedItem != null) {
                        long selectedId = selectedItem.getId();
                        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(selectedId);
                        comboBox4.setModel(new DefaultComboBoxModel<>(teamList));
                        comboBox4.setSelectedIndex(-1);
                    }
                }
            }
        });
        JButton btnExport = new JButton("导出");
        frame1.add(JLabel1, new GBC(0, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(comboBox0, new GBC(1, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel4, new GBC(0, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(comboBox3, new GBC(1, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel5, new GBC(0, 2, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(comboBox4, new GBC(1, 2, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel7, new GBC(0, 3, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(comboBox6, new GBC(1, 3, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(btnExport, new GBC(0, 4, 2, 1).setWeight(1, 0));
        btnExport.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JComboBoxItem projectItem = (JComboBoxItem) comboBox0.getSelectedItem();
                JComboBoxItem deptItem = (JComboBoxItem) comboBox3.getSelectedItem();
                JComboBoxItem teamGroupItem = (JComboBoxItem) comboBox4.getSelectedItem();
                String statusItem = comboBox6.getSelectedItem().toString();
                Long level1NetworkId = null;
                Long deptId = null;
                Long teamGroupId = null;
                String status = null;
                if (projectItem != null) {
                    level1NetworkId = projectItem.getId();
                } else {
                    JOptionPane.showMessageDialog(null, "没有选择工程", "提示", JOptionPane.WARNING_MESSAGE);
                    return;
                }
                if (deptId != null) {
                    deptId = deptItem.getId();
                }
                if (teamGroupItem != null) {
                    teamGroupId = teamGroupItem.getId();
                }
                if (StringUtils.isNotBlank(statusItem)) {
                    status = statusItem;
                }
                String fileName = "三级网络图状态.xlsx";
                JFileChooser fileChooser = new JFileChooser();
                fileChooser.setSelectedFile(new File(fileName));
                int result = fileChooser.showSaveDialog(frame1);
                if (result == JFileChooser.APPROVE_OPTION) {
                    File selectedFile = fileChooser.getSelectedFile();
                    level3Service.exportExcel(selectedFile.getPath(), level1NetworkId,deptId, teamGroupId, status);
                    JOptionPane.showMessageDialog(frame1, "文件导出成功");
                } else {
                    JOptionPane.showMessageDialog(frame1, "文件导出取消");
                }
            }
        });
    }
    private JComboBoxItem[] createIsealCabinItems() {
        return new JComboBoxItem[]{
                new JComboBoxItem(10000L, ""),