jinlin
2025-03-18 d30e385951ce03335a5023f0775fd144da3c0b88
修改
45个文件已修改
10个文件已添加
3个文件已删除
1767 ■■■■ 已修改文件
src/main/java/com/example/client/Main.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/DataExportManageService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/DataImportManageService.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/DismantTrackAddOrUpdate.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/DismantTrackService.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/ExportTrackRecordService.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/HandoverAddOrUpdate.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/HandoverService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/ImportDataService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/ImportLevel3Service.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/ImportTrackRecordService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level1AddOrUpdate.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level1ManageService.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level1ViewService.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level2AddOrUpdate.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level2ManageService.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level2ViewService.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level3AddOrUpdate.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level3ManageService.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level3View2Service.java 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level3ViewService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/MenuService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/SubunitAddOrUpdate.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/SubunitService.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/TrackRecordManageService.java 299 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/utils/ColorDescription.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/utils/ColorDescriptionComboBox.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/utils/CommonTable.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/utils/Compute.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/utils/MultiSelectComboBox2.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/DataSync/dto/DataExportDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/DataSync/dto/DataImportDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/DataSync/service/DataSyncService.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/ExportExcel/method/ExcelExport.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/entity/FieldMetaObjectHandler.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/dao/ExportRecordDao.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/dao/ImportRecordDao.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/model/DjJdgzHandover.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/model/ExportRecord.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/model/ImportRecord.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java 273 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/teamGroup/model/SysTeamGroupClass.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/utils/DownLoadTmpFile.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/db/csiczb1.db 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/logback-spring.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/cabin/CabinDao.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/menu/MenuDao.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/DjJdgzHandoverDao.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/ExportRecord.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/ImportRecord.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templateFile/三级网络图导入模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templateFile/跟踪记录导入模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/mapper/progressTrack/DjJdgzShipDao.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/Main.java
@@ -123,7 +123,6 @@
        hSplitPane.setDividerSize(10);
        hSplitPane.setOneTouchExpandable(true);
        hSplitPane.setContinuousLayout(true);
        frame.getContentPane().add(hSplitPane, BorderLayout.CENTER);
        JSplitPane vSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
@@ -172,6 +171,10 @@
        tabbedPane.addTab(title, panel);
        Component tabComponent = createTabComponent(title, tree);
        tabbedPane.setTabComponentAt(tabbedPane.getTabCount() - 1, tabComponent);// è®¾ç½®è‡ªå®šä¹‰æ ‡ç­¾ç»„ä»¶//切换到当前页面
        if (tabbedPane.getTabCount() > 5) {
            // åˆ é™¤ç¬¬ä¸€ä¸ªæ ‡ç­¾
            tabbedPane.removeTabAt(0);
        }
        tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1);
    }
src/main/java/com/example/client/service/DataExportManageService.java
@@ -3,13 +3,10 @@
import com.example.client.dto.ColumnDto;
import com.example.client.utils.CommonTable;
import com.example.client.utils.GBC;
import com.example.client.utils.WaitUtil;
import com.example.server.DataSync.dto.DataExportDto;
import com.example.server.DataSync.service.DataSyncService;
import com.example.server.utils.CacheUtils;
import com.example.server.progressTrack.dao.ExportRecordDao;
import com.example.server.progressTrack.model.ExportRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.swing.*;
@@ -24,7 +21,12 @@
    @Autowired
    DataSyncService dataSyncService;
    @Autowired
    ExportRecordDao exportRecordDao;
    @Autowired
    ImportDataService importDataService;
    private List<ColumnDto> columnDto;
    private JTable table;
    public JPanel createTable(Integer width, Integer height, JFrame jFrame) {
        JPanel panel = new JPanel(new BorderLayout()); // ä½¿ç”¨ BorderLayout
@@ -43,6 +45,8 @@
        JLabel label1 = new JLabel("提示信息");
        JTextArea tips = new JTextArea(7, 30);
        tips.setEnabled(false);
        tips.setForeground(Color.BLACK); // è®¾ç½®ä¸ºé»‘色
        tips.setDisabledTextColor(Color.BLACK);
        tips.setLineWrap(true);
        JPanel center = new JPanel(new BorderLayout()); // ä¸º left è®¾ç½®å¸ƒå±€
@@ -54,12 +58,12 @@
        left.add(center, BorderLayout.CENTER);
        JLabel label2 = new JLabel("导出记录");
        List<DataExportDto> list = new ArrayList<>();
        List<ColumnDto> columnDto = new ArrayList<>();
        List<ExportRecord> list = exportRecordDao.getList();
        columnDto = new ArrayList<>();
        columnDto.add(new ColumnDto("序号", "", 265, "autoCreate", false, null, null));
        columnDto.add(new ColumnDto("导出时间", "exportDate", 265, null, false, null, null));
        columnDto.add(new ColumnDto("导出人", "importStaff", 265, null, false, null, null));
        JTable table = CommonTable.createCommonTable(list, columnDto);
        columnDto.add(new ColumnDto("导出时间", "createDate", 265, null, false, null, null));
        columnDto.add(new ColumnDto("操作人", "userName", 265, null, false, null, null));
        table = CommonTable.createCommonTable(list, columnDto);
        table.setRowHeight(25);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
@@ -72,10 +76,13 @@
        btnExport.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dataSyncService.export();
                dataSyncService.export(tips);
            }
        });
        return panel;
    }
    public void refresh(List<ExportRecord> list){
        CommonTable.refreshTable(list, columnDto,table);
    }
}
src/main/java/com/example/client/service/DataImportManageService.java
@@ -5,10 +5,10 @@
import com.example.client.utils.CommonTable;
import com.example.client.utils.GBC;
import com.example.client.utils.WaitUtil;
import com.example.server.DataSync.dto.DataExportDto;
import com.example.server.DataSync.dto.DataImportDto;
import com.example.server.DataSync.service.DataSyncService;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel2List;
import com.example.server.progressTrack.dao.ImportRecordDao;
import com.example.server.progressTrack.model.ExportRecord;
import com.example.server.progressTrack.model.ImportRecord;
import com.example.server.utils.CacheUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -30,7 +30,11 @@
    @Autowired
    DataSyncService dataSyncService;
    @Autowired
    ImportRecordDao importRecordDao;
    @Autowired
    ImportDataService importDataService;
    private List<ColumnDto> columnDto;
    private JTable table;
    public JPanel createTable(Integer width, Integer height, JFrame jFrame) {
        JPanel panel = new JPanel(new BorderLayout());
@@ -48,10 +52,10 @@
        JPanel center = new JPanel(); // ä¸º left è®¾ç½®å¸ƒå±€
        GridBagLayout layout = new GridBagLayout();
        center.setLayout(layout);
        center.setPreferredSize(new Dimension((width - 10) / 2, (height-50)/2));
        center.setPreferredSize(new Dimension((width - 10) / 2, (height-50)/3));
        JPanel south = new JPanel(new BorderLayout()); // ä¸º left è®¾ç½®å¸ƒå±€
        south.setPreferredSize(new Dimension((width - 10) / 2, (height-50)/2));
        south.setPreferredSize(new Dimension((width - 10) / 2, (height-50)/3*2));
        String site = (String) CacheUtils.get("site", "site");
@@ -67,6 +71,8 @@
        JLabel label1 = new JLabel("提示信息");
        JTextArea tips = new JTextArea(7, 30);
        tips.setEnabled(false);
        tips.setForeground(Color.BLACK); // è®¾ç½®ä¸ºé»‘色
        tips.setDisabledTextColor(Color.BLACK);
        tips.setLineWrap(true);
        south.add(label1,BorderLayout.NORTH);
        south.add(tips,BorderLayout.CENTER);
@@ -82,7 +88,7 @@
                SwingWorker<String, Void> sw = new SwingWorker<String, Void>() {
                    @Override
                    protected String doInBackground() throws Exception {
                        String flag =  importDataService.UnzipFile();
                        String flag =  importDataService.UnzipFile(tips);
                        return flag;
                    }
@@ -95,9 +101,10 @@
                            // åˆ·æ–°è¡¨æ ¼æ•°æ®ï¼ˆå¦‚果上传成功)
                            if (uploadSucceeded.equals("true")) {
                                waitUtil.dispose();
                                System.out.println("导入成功时间" + new Date());
                                tips.setText("导入成功"+new Date());
                            } else {
                                waitUtil.dispose();
                                tips.setText("导入失败"+new Date());
                                JOptionPane.showMessageDialog(null, uploadSucceeded, "提示", JOptionPane.ERROR_MESSAGE);
                            }
@@ -118,15 +125,15 @@
        left.add(south,BorderLayout.SOUTH);
        JLabel label2 = new JLabel("导入记录");
        List<DataImportDto> list  = new ArrayList<>();
        List<ImportRecord> list  = importRecordDao.getList();
        List<ColumnDto> columnDto = new ArrayList<>();
        columnDto = new ArrayList<>();
        //columnDto.add(new ColumnDto("ID", "id", -1, null,false));
        columnDto.add(new ColumnDto("序号", "", 200, "autoCreate", false, null,null));
        columnDto.add(new ColumnDto("数据源", "importLocal", 200, null, false, null,null));
        columnDto.add(new ColumnDto("导入时间", "importDate", 200, null, false, null,null));
        columnDto.add(new ColumnDto("操作人", "importStaff", 200, null, false, null,null));
        JTable table = CommonTable.createCommonTable(list, columnDto);
        columnDto.add(new ColumnDto("数据源", "importSite", 200, null, false, null,null));
        columnDto.add(new ColumnDto("导入时间", "createDate", 200, null, false, null,null));
        columnDto.add(new ColumnDto("操作人", "userName", 200, null, false, null,null));
        table = CommonTable.createCommonTable(list, columnDto);
        table.setRowHeight(25);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
@@ -138,6 +145,10 @@
        return panel;
    }
    public void refresh(List<ImportRecord> list){
        CommonTable.refreshTable(list, columnDto,table);
    }
}
src/main/java/com/example/client/service/DismantTrackAddOrUpdate.java
@@ -5,6 +5,7 @@
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.cabin.service.CabinService;
import com.example.server.progressTrack.Dto.StatistReportsDto;
import com.example.server.progressTrack.model.DjJdgzDismantTrack;
@@ -51,10 +52,10 @@
        panel.setPreferredSize(new Dimension(width, height));
        JPanel topJpanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        topJpanel.setPreferredSize(new Dimension(width - 10, 37));
        topJpanel.setPreferredSize(new Dimension(width - 10, 40));
        JPanel centerJpanel = new JPanel();
        centerJpanel.setPreferredSize(new Dimension(width - 20, height - 100));
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(40,frame)));
        panel.add(centerJpanel, BorderLayout.CENTER);
        panel.add(topJpanel, BorderLayout.NORTH);
@@ -105,7 +106,6 @@
        trackTable = CommonTable.createCommonTable(list, columnDto);
        trackTable.setRowHeight(25);
        trackTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
@@ -145,6 +145,7 @@
        btnSave.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                trackTable.getCellEditor().stopCellEditing();
                SysUser user = (SysUser) CacheUtils.get("user", "user");
                if (user.getTeamgroup()==null||user.getTeamgroup().equals(nowLevel3.getTeamgroupId().toString())){
                    CommonTable.saveTableList(list, trackTable, columnDto);
@@ -165,8 +166,19 @@
        JScrollPane scrollPane = new JScrollPane(trackTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane.setViewportView(trackTable);
        scrollPane.setPreferredSize(new Dimension(width - 20, height - 130));
        scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(40,frame)));
        centerJpanel.add(scrollPane);
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(40,frame)));
                scrollPane.setPreferredSize(new Dimension(width - 20,Compute.ComputeHeightWithScroll(40,frame)));
                centerJpanel.revalidate();
                centerJpanel.repaint();
                scrollPane.revalidate();
                scrollPane.repaint();
            }
        });
        return panel;
    }
src/main/java/com/example/client/service/DismantTrackService.java
@@ -3,6 +3,7 @@
import com.example.client.dto.ColumnDto;
import com.example.client.dto.JComboBoxItem;
import com.example.client.utils.CommonTable;
import com.example.client.utils.Compute;
import com.example.client.utils.GBC;
import com.example.server.cabin.service.CabinService;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
@@ -43,9 +44,13 @@
        JPanel jLeft = new JPanel(new BorderLayout());
        JPanel top = new JPanel();
        JPanel center = new JPanel();
        jLeft.setPreferredSize(new Dimension(600, height));
        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);
@@ -107,21 +112,19 @@
        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));
        jLeft.add(top, BorderLayout.NORTH);
        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", 110, null, false, null, null));
        columnDto.add(new ColumnDto("部门", "deptId", 120, "dict", false, null, deptList));
        columnDto.add(new ColumnDto("专业", "teamgroupId", 120, "dict", false, null, teamList));
        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_ALL_COLUMNS);
        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        comboBox.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
@@ -300,11 +303,26 @@
            }
        });
        JScrollPane scrollTable = new JScrollPane(subTable);
        jLeft.add(scrollTable, BorderLayout.CENTER);
        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(
src/main/java/com/example/client/service/ExportTrackRecordService.java
@@ -5,7 +5,9 @@
import com.example.client.dto.JComboBoxItem;
import com.example.client.utils.CommonTable;
import com.example.client.utils.GBC;
import com.example.client.utils.MultiSelectComboBox2;
import com.example.client.utils.RequiredLabel;
import com.example.server.ExportExcel.dto.ExcelColumnDto;
import com.example.server.progressTrack.model.DjJdgzTrackRecord;
import com.example.server.progressTrack.service.DjJdgzNetworkLevel1Service;
import com.example.server.progressTrack.service.DjJdgzNetworkLevel3ListService;
@@ -13,6 +15,7 @@
import com.example.server.progressTrack.service.DjJdgzTrackRecordService;
import com.example.server.teamGroup.service.SysTeamGroupClassService;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.jdesktop.swingx.JXDatePicker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -23,10 +26,8 @@
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.*;
import java.util.List;
import java.util.Map;
@Service
public class ExportTrackRecordService {
@@ -58,6 +59,28 @@
        GridBagLayout layout = new GridBagLayout();
        frame1.setLayout(layout);
        List<ExcelColumnDto> columnDto = new ArrayList<>();
        columnDto.add(new ExcelColumnDto("一级节点", "Level1NodeName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("二级节点", "Level2NodeName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("项目名称", "Level3NetworkName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("当前节点", "Level3NodeName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("专业", "teamgroupName", 20, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("总承修单位及负责人", "GeneralRepair", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("分承修单位及负责人", "Repair", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("跟踪方式", "trackMethodStr", 10, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("助修人", "TrackPerson", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("厂方", "TrackedPerson", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("跟踪地点", "TrackLocation", 10, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("节点进展", "status", 10, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("脱期风险", "hasDelayRiskStr", 10, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("预计完成时间", "EstimatedCompletionTime", 15, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("存在问题", "Problem", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("后续计划", "FollowupPlan", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("备注", "Remark", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("填写时间", "UpdateDate", 15, HorizontalAlignment.CENTER));
        JComboBoxItem[] statusList = {
                new JComboBoxItem(0L, "进行中"),
@@ -108,6 +131,14 @@
        JLabel JLabel7 = new JLabel("结束日期");
        JXDatePicker endDate = new JXDatePicker();
        endDate.setPreferredSize(new Dimension(300, 28));
        List<String> itemList = new ArrayList<>();
        for (ExcelColumnDto dto : columnDto) {
            itemList.add(dto.getColumnDesc()); // å°† dto.getColumnDesc() æ·»åŠ åˆ° List ä¸­
        }
        String[] items = itemList.toArray(new String[0]);
        MultiSelectComboBox2 mulcomboBox = new MultiSelectComboBox2(items, null, null);
        comboBox.addItemListener(new ItemListener() {
            @Override
@@ -167,8 +198,9 @@
        frame1.add(JLabel7, new GBC(0, 7, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(endDate, new GBC(1, 7, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(mulcomboBox, new GBC(1, 8, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(exportButton, new GBC(0, 8, 2, 1).setWeight(0, 0));
        frame1.add(exportButton, new GBC(0, 11, 2, 1).setWeight(0, 0));
        exportButton.addActionListener(new ActionListener() {
            @Override
@@ -212,17 +244,21 @@
                    istq = Math.toIntExact(tq.getId());
                }
                String filePath = "跟踪记录报表.xlsx";
                djJdgzTrackRecordService.exportExcel(filePath, teamGroupId, level1NetworkId, level3NetworkId, level3NodeId, status, beginDate2, endDate2, istq);
                List<ExcelColumnDto> columnDto2 = new ArrayList<>();
                Set<Integer> selectedIndices = mulcomboBox.getSelectedIndices();
                for (Integer index : selectedIndices) {
                    columnDto2.add(columnDto.get(index));
                }
                String fileName = "跟踪记录报表.xlsx";
                JFileChooser fileChooser = new JFileChooser();
                fileChooser.setSelectedFile(new File(filePath));
                fileChooser.setSelectedFile(new File(fileName));
                int result = fileChooser.showSaveDialog(frame1);
                if (result == JFileChooser.APPROVE_OPTION) {
                    File selectedFile = fileChooser.getSelectedFile();
                    // å°†æ–‡ä»¶ç§»åŠ¨åˆ°ç”¨æˆ·é€‰æ‹©çš„ä½ç½®
                    File originalFile = new File(filePath);
                    originalFile.renameTo(selectedFile);
                    djJdgzTrackRecordService.exportExcel(selectedFile.getPath(), teamGroupId, level1NetworkId, level3NetworkId, level3NodeId, status, beginDate2, endDate2, istq, columnDto2);
                    JOptionPane.showMessageDialog(frame1, "文件导出成功");
                } else {
                    JOptionPane.showMessageDialog(frame1, "文件导出取消");
src/main/java/com/example/client/service/HandoverAddOrUpdate.java
@@ -93,11 +93,48 @@
        handoverTimeDate.setDate(parse);
        JLabel JLabel4 = new JLabel("交接情况说明");
        JTextArea handoverSitua = new JTextArea(5, 40);
        /*JTextArea handoverSitua = new JTextArea(5, 40);
        handoverSitua.setLineWrap(true);
        handoverSitua.setPreferredSize(new Dimension(600,200));
        if (StringUtils.isNotBlank(data.getHandoverSituation())) {
            handoverSitua.setText(data.getHandoverSituation());
        handoverSitua.setPreferredSize(new Dimension(600,200));*/
        JTabbedPane tabbedPane = new JTabbedPane();
        // åˆ›å»ºä¸“业说明 JTextArea
        JTextArea professExplan = new JTextArea(5, 40);
        professExplan.setLineWrap(true);
        professExplan.setWrapStyleWord(true);
        professExplan.setPreferredSize(new Dimension(600, 200));
        JScrollPane professionalScrollPane = new JScrollPane(professExplan);
        professionalScrollPane.setPreferredSize(new Dimension(600, 200));
        // åˆ›å»ºéƒ¨é—¨è¯´æ˜Ž JTextArea
        JTextArea deptExplan = new JTextArea(5, 40);
        deptExplan.setLineWrap(true);
        deptExplan.setWrapStyleWord(true);
        deptExplan.setPreferredSize(new Dimension(600, 200));
        JScrollPane departmentScrollPane = new JScrollPane(deptExplan);
        departmentScrollPane.setPreferredSize(new Dimension(600, 200));
        // åˆ›å»ºTD说明 JTextArea
        JTextArea tdExplan = new JTextArea(5, 40);
        tdExplan.setLineWrap(true);
        tdExplan.setWrapStyleWord(true);
        tdExplan.setPreferredSize(new Dimension(600, 200));
        JScrollPane tdScrollPane = new JScrollPane(tdExplan);
        tdScrollPane.setPreferredSize(new Dimension(600, 200));
        // å°† JTextArea æ·»åŠ åˆ° JTabbedPane
        tabbedPane.addTab("专业交接说明", professionalScrollPane);
        tabbedPane.addTab("部门交接说明", departmentScrollPane);
        tabbedPane.addTab("艇队交接说明", tdScrollPane);
        if (StringUtils.isNotBlank(data.getProfessExplan())) {
            professExplan.setText(data.getProfessExplan());
        }
        if (StringUtils.isNotBlank(data.getDeptExplan())) {
            deptExplan.setText(data.getDeptExplan());
        }
        if (StringUtils.isNotBlank(data.getTdExplan())) {
            tdExplan.setText(data.getTdExplan());
        }
        JLabel JLabel5 = new JLabel("附件");
@@ -128,7 +165,7 @@
        frame1.add(handoverTimeDate, new GBC(1, 3, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel4, new GBC(0, 4, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(handoverSitua, new GBC(1, 4, 1, 5).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(tabbedPane, new GBC(1, 4, 1, 5).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel5, new GBC(0, 9, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(jPanel, new GBC(1, 9, 6, 5).setAnchor(GBC.SOUTHWEST).setInsets(5));
@@ -144,7 +181,9 @@
                data.setCurrentTeam(currentTeamDesc.getText());
                data.setHandoverTeam(handoverTeamDesc.getText());
                data.setHandoverTime(sdFormat.format(handoverTimeDate.getDate()));
                data.setHandoverSituation(handoverSitua.getText());
                data.setDeptExplan(deptExplan.getText());
                data.setProfessExplan(professExplan.getText());
                data.setTdExplan(tdExplan.getText());
                Long id = handoverService.save(data);
                uploadFile.save(id);
                List<DjJdgzHandover> list = handoverService.getList(project.getId());
src/main/java/com/example/client/service/HandoverService.java
@@ -71,14 +71,14 @@
        columnDto =  new ArrayList<>();
        //columnDto.add(new ColumnDto("ID", "id", -1, null,false));
        columnDto.add(new ColumnDto("序号", "", (width - 10) / 8, "autoCreate", false, null,null));
        columnDto.add(new ColumnDto("工程", "ProjectName", (width - 10) / 8, null, false, null,null));
        columnDto.add(new ColumnDto("交方艇队", "currentTeam", (width - 10) / 8, null, false, null,null));
        columnDto.add(new ColumnDto("接方艇队", "handoverTeam", (width - 10) / 8, null, false, null,null));
        columnDto.add(new ColumnDto("交接时间", "handoverTime", (width - 10) / 8, "selectDate", false, null,null));
        columnDto.add(new ColumnDto("交接情况说明", "handoverSituation", (width - 10) / 8, null, false, null,null));
        columnDto.add(new ColumnDto("附件", "fileName", (width - 10) / 8, "", false, null,null));
        columnDto.add(new ColumnDto("操作", "", (width - 10) / 8, "", true, buttonList,null));
        columnDto.add(new ColumnDto("序号", "", (width - 10) / 7, "autoCreate", false, null,null));
        columnDto.add(new ColumnDto("工程", "ProjectName", (width - 10) / 7, null, false, null,null));
        columnDto.add(new ColumnDto("交方艇队", "currentTeam", (width - 10) / 7, null, false, null,null));
        columnDto.add(new ColumnDto("接方艇队", "handoverTeam", (width - 10) / 7, null, false, null,null));
        columnDto.add(new ColumnDto("交接时间", "handoverTime", (width - 10) / 7, "selectDate", false, null,null));
      /*  columnDto.add(new ColumnDto("交接情况说明", "handoverSituation", (width - 10) / 8, null, false, null,null));
      */  columnDto.add(new ColumnDto("附件", "fileName", (width - 10) / 7, "", false, null,null));
        columnDto.add(new ColumnDto("操作", "", (width - 10) / 7, "", true, buttonList,null));
        table = CommonTable.createCommonTable(list[0], columnDto);
        table.setRowHeight(25);
src/main/java/com/example/client/service/ImportDataService.java
@@ -190,16 +190,21 @@
        });
        return jPanel;
    }
    public String UnzipFile(){
    public String UnzipFile(JTextArea tips){
        String massage = "";
        String filePath = model.getValueAt(0, 0).toString();
        String outputDirectory = UnzipPath;
        try {
            File zipFile = new File(filePath);
            if (!zipFile.exists()) {
                massage = "ZIP文件不存在:" + filePath;
                tips.setText(tips.getText() + massage);
                throw new FileNotFoundException("ZIP文件不存在:" + filePath);
            }
            if (!zipFile.canRead()) {
                massage = "无法读取ZIP文件,请检查文件权限:" + filePath;
                tips.setText(tips.getText() + massage);
                System.err.println("无法读取ZIP文件,请检查文件权限:" + filePath);
                return "false";
            }
@@ -240,8 +245,9 @@
                    }
                }
            }
            System.out.println("文件解压完成,目标目录:" + outputDirectory);
            dataSyncService.importData();
            massage = "文件解压完成,目标目录:" + outputDirectory;
            tips.setText(tips.getText() + massage);
            dataSyncService.importData(tips);
        } catch (IOException e) {
            e.printStackTrace();
            return "false";
src/main/java/com/example/client/service/ImportLevel3Service.java
@@ -79,7 +79,7 @@
        JLabel label0 = new JLabel("工程");
        JComboBox<JComboBoxItem> comboBox0 = new JComboBox<>(projectList);
        JLabel label1 = new JLabel("二级网络图");
        JLabel label1 = new JLabel("一级网络图节点");
        JComboBox<JComboBoxItem> comboBox1 = new JComboBox<>();
        comboBox1.setModel(new DefaultComboBoxModel<>(level2List));
src/main/java/com/example/client/service/ImportTrackRecordService.java
@@ -4,7 +4,6 @@
import com.example.client.dto.JComboBoxItem;
import com.example.client.utils.*;
import com.example.server.cabin.service.CabinService;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
import com.example.server.progressTrack.model.DjJdgzTrackRecord;
import com.example.server.progressTrack.service.*;
import com.example.server.teamGroup.service.SysTeamGroupClassService;
@@ -38,7 +37,7 @@
    @Autowired
    private Level3ManageService level3ManageService;
    @Autowired
    private DjJdgzNetworkLevel3Service level3Service;
    private TrackRecordManageService trackRecordManageService;
    @Autowired
    private DjJdgzNetworkLevel2ListService level2ListService;
    @Autowired
@@ -83,7 +82,7 @@
        JLabel label0 = new JLabel("工程");
        JComboBox<JComboBoxItem> comboBox0 = new JComboBox<>(projectList);
        JLabel label1 = new JLabel("二级网络图");
        JLabel label1 = new JLabel("一级网络图节点");
        JComboBox<JComboBoxItem> comboBox1 = new JComboBox<>();
        comboBox1.setModel(new DefaultComboBoxModel<>(level2List));
@@ -297,7 +296,7 @@
                        String filePath = result.toString();
                        String flag = level3Service.importDiagramFromExcel(filePath, level1Id[0], level2Id[0], level2NodeId[0]);
                        String flag = djJdgzTrackRecordService.importDiagramFromExcel(filePath);
                        return flag;
                    }
@@ -317,9 +316,9 @@
                                String[] typeList = new String[]{
                "改装", "加装", "换装", "改进性修理",""
        };
                                List<DjJdgzNetworkLevel3> list = level3Service.getList(null, deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0],null);
                                List<DjJdgzTrackRecord> list = djJdgzTrackRecordService.getList(level1Id[0], deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], 0, null);
                                CommonTable.refreshTable(list, columnDto, subTable);
                                level3ManageService.tableModelListener(list, subTable, jFrame);
                                trackRecordManageService.tableModelListener(subTable, jFrame, list);
                                System.out.println("导入成功时间" + new Date());
                            } else {
                                waitUtil.dispose();
src/main/java/com/example/client/service/Level1AddOrUpdate.java
@@ -128,7 +128,7 @@
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
        graphComponent.setDragEnabled(false);
        graphComponent.zoomTo(2, true);
        graphComponent.zoomTo(1, true);
        diagram.add(graphComponent);
        mxGraph finalGraph = graph;
src/main/java/com/example/client/service/Level1ManageService.java
@@ -4,6 +4,7 @@
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.server.progressTrack.model.DjJdgzNetworkLevel1;
import com.example.server.progressTrack.model.DjJdgzShip;
@@ -41,13 +42,14 @@
    private List<ColumnDto> columnDto;
    public JPanel createTable(Integer width, Integer height, JFrame jFrame) {
        JPanel panel = new JPanel();
        JPanel panel = new JPanel(new BorderLayout());
        JPanel topJpanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        topJpanel.setPreferredSize(new Dimension(width, 37));
        topJpanel.setPreferredSize(new Dimension(width, 40));
        topJpanel.setBackground(Color.WHITE);
        JPanel centerJpanel = new JPanel();
        centerJpanel.setPreferredSize(new Dimension(width - 20, height - 100));
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(40,jFrame)));
        centerJpanel.setBackground(Color.WHITE);
        panel.add(topJpanel, BorderLayout.NORTH);
        panel.add(centerJpanel, BorderLayout.CENTER);
@@ -116,8 +118,19 @@
        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(width - 20, height - 100));
        scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(40,jFrame)));
        centerJpanel.add(scrollPane);
        jFrame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(40,jFrame)));
                scrollPane.setPreferredSize(new Dimension(width - 20,Compute.ComputeHeightWithScroll(40,jFrame)));
                centerJpanel.revalidate();
                centerJpanel.repaint();
                scrollPane.revalidate();
                scrollPane.repaint();
            }
        });
        return panel;
    }
src/main/java/com/example/client/service/Level1ViewService.java
@@ -3,6 +3,7 @@
import com.example.client.dto.ColumnDto;
import com.example.client.model.TableButton;
import com.example.client.utils.CommonTable;
import com.example.client.utils.Compute;
import com.example.server.progressTrack.Dto.NetworkNodeStatusDto;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel1;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel1List;
@@ -11,6 +12,8 @@
import com.example.server.progressTrack.service.DjJdgzShipService;
import com.example.server.progressTrack.service.NetWorkDiagramService;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.util.mxPoint;
import com.mxgraph.util.mxRectangle;
import com.mxgraph.view.mxGraph;
import com.teamdev.jxbrowser.chromium.StopFindAction;
import org.jdesktop.swingx.JXDatePicker;
@@ -37,12 +40,12 @@
    @Autowired
    private NetWorkDiagramService netWorkDiagramService;
    public JPanel createTable(Integer width, Integer height) {
    public JPanel createTable(Integer width, Integer height, JFrame frame) {
        height = height - 100;
        JPanel panel = new JPanel();
        JPanel jLeft = new JPanel(new BorderLayout());
        jLeft.setPreferredSize(new Dimension(width / 4 - 20, height));
        jLeft.setPreferredSize(new Dimension(width / 4 - 20, Compute.ComputeHeight(0, frame)));
        JPanel diagram = new JPanel(new BorderLayout());
        diagram.setPreferredSize(new Dimension(width - width / 4, height));
@@ -59,11 +62,22 @@
        JTable subTable = CommonTable.createCommonTable(list, columnDto);
        subTable.setRowHeight(25);
        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        JScrollPane scrollTable = new JScrollPane(subTable);
        scrollTable.setPreferredSize(new Dimension(width / 4 - 20, Compute.ComputeHeightWithScroll(0, frame)));
        jLeft.add(scrollTable, BorderLayout.CENTER);
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                jLeft.setPreferredSize(new Dimension(width / 4 - 20, Compute.ComputeHeight(40, frame)));
                scrollTable.setPreferredSize(new Dimension(width / 4 - 20, Compute.ComputeHeightWithScroll(40, frame)));
                jLeft.revalidate();
                jLeft.repaint();
                scrollTable.revalidate();
                scrollTable.repaint();
            }
        });
        // åˆ›å»ºæ°´å¹³åˆ†å‰²é¢æ¿
        JSplitPane hSplitPane = new JSplitPane(
                JSplitPane.HORIZONTAL_SPLIT,
@@ -86,7 +100,7 @@
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
        graphComponent.setDragEnabled(false);
        graphComponent.zoomTo(2, true);
        graphComponent.zoomTo(1, true);
        diagram.add(graphComponent);
        mxGraph finalGraph = graph;
@@ -110,7 +124,12 @@
                    int r = subTable.getSelectedRow();
                    DjJdgzNetworkLevel1 data = list.get(r);
                    List<NetworkNodeStatusDto> nodeStatusList = level1Service.getNodeStatusData(data.getId());
                    graph2[0] = netWorkDiagramService.getCsDiagram(graph2[0], data.getContent(), nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height);
                    mxGraph csDiagram = netWorkDiagramService.getCsDiagram(graph2[0], data.getContent(), nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height);
                    if (nodeStatusList != null && nodeStatusList.size() > 0) {
                        graph2[0] = csDiagram;
                    } else {
                        graph2[0].removeCells(graph2[0].getChildVertices(graph2[0].getDefaultParent()));
                    }
                }
            }
        });
src/main/java/com/example/client/service/Level2AddOrUpdate.java
@@ -172,7 +172,7 @@
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
        graphComponent.setDragEnabled(false);
        graphComponent.zoomTo(2, true);
        graphComponent.zoomTo(1, true);
        diagram.add(graphComponent);
        mxGraph finalGraph = graph;
src/main/java/com/example/client/service/Level2ManageService.java
@@ -4,6 +4,7 @@
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.server.progressTrack.model.DjJdgzNetworkLevel1;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel2;
@@ -53,13 +54,13 @@
    public JPanel createTable(Integer width, Integer height, JFrame jFrame) {
        JPanel panel = new JPanel();
        JPanel panel = new JPanel(new BorderLayout());
        JPanel topJpanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        topJpanel.setPreferredSize(new Dimension(width, 37));
        topJpanel.setPreferredSize(new Dimension(width, 40));
        topJpanel.setBackground(Color.WHITE);
        JPanel centerJpanel = new JPanel();
        centerJpanel.setPreferredSize(new Dimension(width - 20, height - 100));
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(40,jFrame)));
        centerJpanel.setBackground(Color.WHITE);
        panel.add(topJpanel, BorderLayout.NORTH);
        panel.add(centerJpanel, BorderLayout.CENTER);
@@ -135,8 +136,19 @@
        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(width - 20, height - 100));
        scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(40,jFrame)));
        centerJpanel.add(scrollPane);
        jFrame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                centerJpanel.setPreferredSize(new Dimension(width  - 20, Compute.ComputeHeight(40,jFrame)));
                scrollPane.setPreferredSize(new Dimension(width  - 20,Compute.ComputeHeightWithScroll(40,jFrame)));
                centerJpanel.revalidate();
                centerJpanel.repaint();
                scrollPane.revalidate();
                scrollPane.repaint();
            }
        });
        return panel;
    }
src/main/java/com/example/client/service/Level2ViewService.java
@@ -2,6 +2,7 @@
import com.example.client.dto.ColumnDto;
import com.example.client.utils.CommonTable;
import com.example.client.utils.Compute;
import com.example.server.progressTrack.Dto.NetworkNodeStatusDto;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel1;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel2;
@@ -15,10 +16,7 @@
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
@@ -30,12 +28,12 @@
    @Autowired
    private NetWorkDiagramService netWorkDiagramService;
    public JPanel createTable(Integer width, Integer height) {
        height = height - 100;
        JPanel panel = new JPanel();
    public JPanel createTable(Integer width, Integer height, JFrame frame) {
        JPanel panel = new JPanel(new BorderLayout());
        panel.setPreferredSize(new Dimension(width, height));
        JPanel jLeft = new JPanel(new BorderLayout());
        jLeft.setPreferredSize(new Dimension(width / 4 - 20, height));
        JPanel jLeft = new JPanel();
        jLeft.setPreferredSize(new Dimension(width / 4 - 20, Compute.ComputeHeight(0, frame)));
        JPanel diagram = new JPanel(new BorderLayout());
        diagram.setPreferredSize(new Dimension(width - width / 4, height));
@@ -47,16 +45,29 @@
        //columnDto.add(new ColumnDto("ID", "id", -1, null,false));
        columnDto.add(new ColumnDto("序号", "", width / 10 - 10, "autoCreate", false, null,null));
        columnDto.add(new ColumnDto("工程", "ProjectName", width / 8, null, false, null,null));
        columnDto.add(new ColumnDto("一级节点", "processName", width / 8, null, false, null,null));
        columnDto.add(new ColumnDto("序号", "", 120, "autoCreate", false, null, null));
        columnDto.add(new ColumnDto("工程", "ProjectName", 145, null, false, null, null));
        columnDto.add(new ColumnDto("一级节点", "processName", 125, null, false, null, null));
        JTable subTable = CommonTable.createCommonTable(list, columnDto);
        subTable.setRowHeight(25);
        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        JScrollPane scrollTable = new JScrollPane(subTable);
        jLeft.add(scrollTable, BorderLayout.CENTER);
        scrollTable.setPreferredSize(new Dimension(width / 4 - 20, Compute.ComputeHeightWithScroll(0, frame)));
        jLeft.add(scrollTable);
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                jLeft.setPreferredSize(new Dimension(width / 4 - 20, Compute.ComputeHeight(0, frame)));
                scrollTable.setPreferredSize(new Dimension(width / 4 - 20, Compute.ComputeHeightWithScroll(0, frame)));
                jLeft.revalidate();
                jLeft.repaint();
                scrollTable.revalidate();
                scrollTable.repaint();
            }
        });
        // åˆ›å»ºæ°´å¹³åˆ†å‰²é¢æ¿
        JSplitPane hSplitPane = new JSplitPane(
@@ -80,7 +91,7 @@
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
        graphComponent.setDragEnabled(false);
        graphComponent.zoomTo(2, true);
        graphComponent.zoomTo(1, true);
        diagram.add(graphComponent);
        mxGraph finalGraph = graph;
@@ -104,7 +115,12 @@
                    int r = subTable.getSelectedRow();
                    DjJdgzNetworkLevel2 data = list.get(r);
                    List<NetworkNodeStatusDto> nodeStatusList = level2Service.getNodeStatusData(data.getId());
                    graph2[0] = netWorkDiagramService.getCsDiagram(graph2[0], data.getContent(), nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height);
                    mxGraph csDiagram = netWorkDiagramService.getCsDiagram(graph2[0], data.getContent(), nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height);
                    if (nodeStatusList != null && nodeStatusList.size() > 0) {
                        graph2[0] = csDiagram;
                    } else {
                        graph2[0].removeCells(graph2[0].getChildVertices(graph2[0].getDefaultParent()));
                    }
                }
            }
        });
src/main/java/com/example/client/service/Level3AddOrUpdate.java
@@ -142,7 +142,7 @@
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
        graphComponent.setDragEnabled(false);
        graphComponent.zoomTo(2, true);
        graphComponent.zoomTo(1, true);
        diagram.add(graphComponent);
        mxGraph finalGraph = graph;
src/main/java/com/example/client/service/Level3ManageService.java
@@ -4,6 +4,7 @@
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;
@@ -57,6 +58,7 @@
    public JPanel createTable(Integer width, Integer height, JFrame jFrame) {
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(width,height));
        JPanel topJpanel = new JPanel();
        GridBagLayout layout = new GridBagLayout();
@@ -65,7 +67,7 @@
        topJpanel.setBackground(Color.WHITE);
        JPanel centerJpanel = new JPanel();
        centerJpanel.setPreferredSize(new Dimension(width - 20, height - 100));
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(100,jFrame)));
        centerJpanel.setBackground(Color.WHITE);
        panel.add(topJpanel, BorderLayout.NORTH);
        panel.add(centerJpanel, BorderLayout.CENTER);
@@ -170,11 +172,10 @@
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    JComboBoxItem selectedItem = (JComboBoxItem) comboBox1.getSelectedItem();
                    if (selectedItem != null) {
                        long selectedId = selectedItem.getId();
                        Long selectedId = selectedItem.getId();
                        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(selectedId);
                        comboBox2.setModel(new DefaultComboBoxModel<>(teamList));
                        comboBox2.setSelectedIndex(0);
                        String content = comboBox.getSelectedItem().toString();
                        JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
@@ -288,8 +289,19 @@
        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(width - 20, height - 120));
        scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(100,jFrame)));
        centerJpanel.add(scrollPane);
        jFrame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(100,jFrame)));
                scrollPane.setPreferredSize(new Dimension(width - 20,Compute.ComputeHeightWithScroll(100,jFrame)));
                centerJpanel.revalidate();
                centerJpanel.repaint();
                scrollPane.revalidate();
                scrollPane.repaint();
            }
        });
        return panel;
    }
src/main/java/com/example/client/service/Level3View2Service.java
@@ -3,9 +3,7 @@
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.client.utils.*;
import com.example.server.cabin.service.CabinService;
import com.example.server.progressTrack.Dto.TableNodeDto;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel1;
@@ -18,6 +16,7 @@
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.*;
@@ -42,8 +41,8 @@
    private List<ColumnDto> columnDto;
    public JPanel createTable(Integer width, Integer height) {
        JPanel panel = new JPanel();
    public JPanel createTable(Integer width, Integer height,JFrame frame) {
        JPanel panel = new JPanel(new BorderLayout());
        JPanel topJpanel = new JPanel();
        GridBagLayout layout = new GridBagLayout();
@@ -52,7 +51,7 @@
        topJpanel.setBackground(Color.WHITE);
        JPanel centerJpanel = new JPanel();
        centerJpanel.setPreferredSize(new Dimension(width - 20, height - 100));
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(100,frame)));
        centerJpanel.setBackground(Color.WHITE);
        panel.add(topJpanel, BorderLayout.NORTH);
        panel.add(centerJpanel, BorderLayout.CENTER);
@@ -90,6 +89,17 @@
        JTextField sb = new JTextField(16);
        JButton query = new JButton("查询");
        List<ColorDescription> colorDescriptions = new ArrayList<>();
        colorDescriptions.add(new ColorDescription("#3498DB", "进行中"));
        colorDescriptions.add(new ColorDescription("#F1C40F", "临期"));
        colorDescriptions.add(new ColorDescription("#E74C3C", "逾期"));
        colorDescriptions.add(new ColorDescription("#2ECC71", "正常完成"));
        colorDescriptions.add(new ColorDescription("#006400", "超期完成"));
        // åˆ›å»ºä¸‹æ‹‰æ¡†
        ColorDescriptionComboBox comboBox5 = new ColorDescriptionComboBox(colorDescriptions);
        topJpanel.add(JLabel0, new GBC(0, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(comboBox, new GBC(1, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(JLabel1, new GBC(2, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
@@ -103,6 +113,7 @@
        topJpanel.add(sb, new GBC(0, 1, 2, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(query, new GBC(2, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(comboBox5, new GBC(3, 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],null);
@@ -121,6 +132,30 @@
        table.setRowHeight(25);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        MouseMotionListener mouseMotionListener = new MouseMotionListener() {
            @Override
            public void mouseDragged(MouseEvent e) {
                // ä¸éœ€è¦å¤„理鼠标拖动事件
            }
            @Override
            public void mouseMoved(MouseEvent e) {
                Point point = e.getPoint();
                int row = table.rowAtPoint(point);
                int column = table.columnAtPoint(point);
                if (row <= list.size() && column > 1) {
                    String hexColor = (String) table.getValueAt(row, column);
                    String tooltip = getTooltipText(hexColor);
                    table.setToolTipText(tooltip);
                } else {
                    table.setToolTipText(null);
                }
            }
        };
        table.addMouseMotionListener(mouseMotionListener);
        comboBox.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
@@ -145,12 +180,11 @@
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    JComboBoxItem selectedItem = (JComboBoxItem) comboBox1.getSelectedItem();
                    if (selectedItem.getId() != null) {
                        long selectedId = selectedItem.getId();
                    if (selectedItem != null) {
                        Long selectedId = selectedItem.getId();
                        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(selectedId);
                        comboBox2.setModel(new DefaultComboBoxModel<>(teamList));
                        comboBox2.setSelectedIndex(0);
                        String content = comboBox.getSelectedItem().toString();
                        JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
@@ -249,15 +283,43 @@
        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(width - 20, height - 120));
        scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(100,frame)));
        centerJpanel.add(scrollPane);
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(100,frame)));
                scrollPane.setPreferredSize(new Dimension(width - 20,Compute.ComputeHeightWithScroll(100,frame)));
                centerJpanel.revalidate();
                centerJpanel.repaint();
                scrollPane.revalidate();
                scrollPane.repaint();
            }
        });
        return panel;
    }
    private static String getTooltipText(String hexColor) {
        switch (hexColor) {
            case "#3498DB":
                return "进行中";
            case "#F1C40F":
                return "临期";
            case "#E74C3C":
                return "逾期";
            case "#2ECC71":
                return "正常完成";
            case "#006400":
                return "超期完成";
            default:
                return "未开始";
        }
    }
}
src/main/java/com/example/client/service/Level3ViewService.java
@@ -86,7 +86,7 @@
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
        graphComponent.setDragEnabled(false);
        graphComponent.zoomTo(2, true);
        graphComponent.zoomTo(1, true);
        diagram.add(graphComponent);
        mxGraph finalGraph = graph;
src/main/java/com/example/client/service/MenuService.java
@@ -93,19 +93,19 @@
                        JPanel level1Manage = level1ManageService.createTable(width, height, frame);
                        main.showTab("一级网络图管理", level1Manage, tree);
                    } else if (nodeName.equals("一级网络图查看")) {
                        JPanel level1View = level1ViewService.createTable(width, height);
                        JPanel level1View = level1ViewService.createTable(width, height,frame);
                        main.showTab("一级网络图查看", level1View, tree);
                    } else if (nodeName.equals("二级网络图管理")) {
                        JPanel level2Manage = level2ManageService.createTable(width, height, frame);
                        main.showTab("二级网络图管理", level2Manage, tree);
                    } else if (nodeName.equals("二级网络图查看")) {
                        JPanel level2View = level2ViewService.createTable(width, height);
                        JPanel level2View = level2ViewService.createTable(width, height,frame);
                        main.showTab("二级网络图查看", level2View, tree);
                    } else if (nodeName.equals("三级网络图管理")) {
                        JPanel level3Manage = level3ManageService.createTable(width, height, frame);
                        main.showTab("三级网络图管理", level3Manage, tree);
                    } else if (nodeName.equals("三级网络图查看")) {
                        JPanel level3View = level3View2Service.createTable(width, height);
                        JPanel level3View = level3View2Service.createTable(width, height,frame);
                        main.showTab("三级网络图查看", level3View, tree);
                    } else if (nodeName.equals("项目进度表")) {
                        JPanel trackRecord = trackRecordManageService.createTable(width, height, frame);
src/main/java/com/example/client/service/SubunitAddOrUpdate.java
@@ -5,6 +5,7 @@
import com.example.client.model.TableButton;
import com.example.client.utils.BoxIteUtils;
import com.example.client.utils.CommonTable;
import com.example.client.utils.Compute;
import com.example.client.utils.GBC;
import com.example.server.cabin.service.CabinService;
import com.example.server.progressTrack.model.DjJdgzDismantTrack;
@@ -46,13 +47,13 @@
    public JPanel createTrack(Integer width, Integer height, DjJdgzNetworkLevel3 djJdgzNetworkLevel3,JFrame frame) {
        nowLevel3 = djJdgzNetworkLevel3;
        JPanel panel = new JPanel();
        JPanel panel = new JPanel(new BorderLayout());
        panel.setPreferredSize(new Dimension(width, height));
        JPanel topJpanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        topJpanel.setPreferredSize(new Dimension(width - 10, 37));
        topJpanel.setPreferredSize(new Dimension(width - 10, 40));
        JPanel centerJpanel = new JPanel();
        centerJpanel.setPreferredSize(new Dimension(width - 20, height - 100));
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(40,frame)));
        panel.add(topJpanel, BorderLayout.NORTH);
        panel.add(centerJpanel, BorderLayout.CENTER);
@@ -101,9 +102,19 @@
        JScrollPane scrollPane = new JScrollPane(trackTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane.setViewportView(trackTable);
        scrollPane.setPreferredSize(new Dimension(width - 20, height - 130));
        scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(40,frame)));
        centerJpanel.add(scrollPane);
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(40,frame)));
                scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(40,frame)));
                centerJpanel.revalidate();
                centerJpanel.repaint();
                scrollPane.revalidate();
                scrollPane.repaint();
            }
        });
        return panel;
    }
src/main/java/com/example/client/service/SubunitService.java
@@ -3,6 +3,7 @@
import com.example.client.dto.ColumnDto;
import com.example.client.dto.JComboBoxItem;
import com.example.client.utils.CommonTable;
import com.example.client.utils.Compute;
import com.example.client.utils.GBC;
import com.example.server.cabin.service.CabinService;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
@@ -47,11 +48,16 @@
        JPanel jLeft = new JPanel(new BorderLayout());
        JPanel top = new JPanel();
        JPanel center = new JPanel();
        GridBagLayout layout = new GridBagLayout();
        top.setLayout(layout);
        jLeft.setPreferredSize(new Dimension(width / 2 - 20, height));
        top.setPreferredSize(new Dimension(width / 2 - 20, 100));
        jLeft.setPreferredSize(new Dimension(width / 2 - 20, Compute.ComputeHeight(0,frame)));
        center.setPreferredSize(new Dimension(width / 2 - 20, Compute.ComputeHeight(100,frame)));
        jLeft.add(center,BorderLayout.CENTER);
        // åˆ›å»ºå·¦ä¾§è¡¨æ ¼
@@ -125,7 +131,7 @@
        JTable subTable = CommonTable.createCommonTable(list, columnDto);
        subTable.setRowHeight(25);
        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        subTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        comboBox.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
@@ -305,7 +311,22 @@
        JScrollPane scrollTable = new JScrollPane(subTable);
        jLeft.add(scrollTable, BorderLayout.CENTER);
        scrollTable.setPreferredSize(new Dimension(width / 2 - 20, Compute.ComputeHeightWithScroll(100,frame)));
        center.add(scrollTable);
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                jLeft.setPreferredSize(new Dimension(width / 2 - 20, Compute.ComputeHeight(0,frame)));
                center.setPreferredSize(new Dimension(width / 2 - 20, Compute.ComputeHeight(100,frame)));
                scrollTable.setPreferredSize(new Dimension(width / 2 - 20,Compute.ComputeHeightWithScroll(100,frame)));
                jLeft.revalidate();
                jLeft.repaint();
                center.revalidate();
                center.repaint();
                scrollTable.revalidate();
                scrollTable.repaint();
            }
        });
        JPanel track = addOrUpdate.createTrack(width / 2, height, list.get(0),  frame);
src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java
@@ -2,30 +2,22 @@
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.UploadFile;
import com.example.server.progressTrack.model.DjJdgzDismantTrack;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3List;
import com.example.server.progressTrack.model.DjJdgzTrackRecord;
import com.example.server.progressTrack.service.*;
import com.example.server.sysOss.model.SysOss;
import com.example.server.teamGroup.service.SysTeamGroupClassService;
import com.example.server.user.model.SysUser;
import com.example.server.utils.CacheUtils;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;
import org.apache.commons.lang3.StringUtils;
import org.jdesktop.swingx.JXDatePicker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import java.awt.*;
import java.awt.event.*;
import java.text.ParseException;
@@ -114,6 +106,12 @@
            trackPersonDesc.setText(data.getTrackPerson());
        }
        JLabel JLabel34 = new JLabel("单位");
        JTextField trackPersonUnitDesc = new JTextField(16);
        if (StringUtils.isNotBlank(data.getTrackPersonUnit())) {
            trackPersonUnitDesc.setText(data.getTrackPersonUnit());
        }
        JLabel JLabel4 = new JLabel("联系方式");
        JTextField trackPersonContactDesc = new JTextField(16);
        if (StringUtils.isNotBlank(data.getTrackPersonContact())) {
@@ -124,6 +122,12 @@
        JTextField trackedPersonDesc = new JTextField(16);
        if (StringUtils.isNotBlank(data.getTrackedPerson())) {
            trackedPersonDesc.setText(data.getTrackedPerson());
        }
        JLabel JLabel56 = new JLabel("单位");
        JTextField trackedPersonUnitDesc = new JTextField(16);
        if (StringUtils.isNotBlank(data.getTrackedPersonUnit())) {
            trackedPersonUnitDesc.setText(data.getTrackedPersonUnit());
        }
        JLabel JLabel6 = new JLabel("联系方式");
@@ -245,13 +249,17 @@
        frame1.add(JLabel3, new GBC(0, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(trackPersonDesc, new GBC(1, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel4, new GBC(2, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(trackPersonContactDesc, new GBC(3, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel34, new GBC(2, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(trackPersonUnitDesc, new GBC(3, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel4, new GBC(4, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(trackPersonContactDesc, new GBC(5, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel5, new GBC(0, 2, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(trackedPersonDesc, new GBC(1, 2, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel6, new GBC(2, 2, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(trackedPersonContactDesc, new GBC(3, 2, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel56, new GBC(2, 2, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(trackedPersonUnitDesc, new GBC(3, 2, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel6, new GBC(4, 2, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(trackedPersonContactDesc, new GBC(5, 2, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel7, new GBC(0, 3, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(generalRepairUnitDesc, new GBC(1, 3, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
@@ -313,6 +321,8 @@
                data.setTrackLocation(trackLocatDesc.getText());
                data.setTrackPerson(trackPersonDesc.getText());
                data.setTrackPersonContact(trackPersonContactDesc.getText());
                data.setTrackPersonUnit(trackPersonUnitDesc.getText());
                data.setTrackedPersonUnit(trackedPersonUnitDesc.getText());
                data.setTrackedPerson(trackedPersonDesc.getText());
                data.setTrackedPersonContact(trackedPersonContactDesc.getText());
                data.setGeneralRepairUnit(generalRepairUnitDesc.getText());
@@ -329,7 +339,7 @@
                data.setRemark(remark.getText());
                Long id = djJdgzTrackRecordService.save(data);
                uploadFile.save(id);
                List<DjJdgzTrackRecord> list = djJdgzTrackRecordService.getList(level1Id, 0);
                List<DjJdgzTrackRecord> list = djJdgzTrackRecordService.getList(level1Id, level3.getDeptId(), null, null, level3.getType(), 0, null);
                CommonTable.refreshTable(list, columnDto, table);
                trackRecordManageService.tableModelListener(table, jFrame, list);
                frame1.dispose();
src/main/java/com/example/client/service/TrackRecordManageService.java
@@ -3,12 +3,11 @@
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.*;
import com.example.server.cabin.service.CabinService;
import com.example.server.progressTrack.model.*;
import com.example.server.progressTrack.service.DjJdgzNetworkLevel1Service;
import com.example.server.progressTrack.service.DjJdgzNetworkLevel3Service;
import com.example.server.progressTrack.service.DjJdgzShipService;
import com.example.server.progressTrack.service.DjJdgzTrackRecordService;
import com.example.server.teamGroup.service.SysTeamGroupClassService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,12 +15,12 @@
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.table.TableColumnModel;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Service
@@ -50,16 +49,19 @@
    private JTable table;
    private List<DjJdgzTrackRecord> list;
    private List<ColumnDto> columnDto;
    private TableColumnModel columnModel;
    public JPanel createTable(Integer width, Integer height, JFrame jFrame) {
        JPanel panel = new JPanel();
        JPanel topJpanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        topJpanel.setPreferredSize(new Dimension(width, 37));
        JPanel topJpanel = new JPanel();
        GridBagLayout layout = new GridBagLayout();
        topJpanel.setLayout(layout);
        topJpanel.setPreferredSize(new Dimension(width - 20, 100));
        topJpanel.setBackground(Color.WHITE);
        JPanel centerJpanel = new JPanel();
        centerJpanel.setPreferredSize(new Dimension(width - 20, height - 100));
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(100,jFrame)));
        centerJpanel.setBackground(Color.WHITE);
        panel.add(topJpanel, BorderLayout.NORTH);
        panel.add(centerJpanel, BorderLayout.CENTER);
@@ -73,43 +75,172 @@
                new JComboBoxItem(1L, "已完成")
        };
        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(null);
        String[] typeList = new String[]{
                "改装", "加装", "换装", "改进性修理", ""
        };
        JLabel JLabel0 = new JLabel("工程");
        JComboBox<JComboBoxItem> comboBox = new JComboBox<>(projectList);
        comboBox.setPreferredSize(new Dimension(150, 28));
        JLabel JLabel1 = new JLabel("部门");
        JComboBox<JComboBoxItem> comboBox1 = new JComboBox<>(deptList);
        comboBox1.setPreferredSize(new Dimension(150, 28));
        JComboBoxItem[] teamList1 = sysTeamGroupClassService.getTeamList(deptList[0].getId());
        JLabel JLabel2 = new JLabel("专业");
        JComboBox<JComboBoxItem> comboBox2 = new JComboBox<>(teamList1);
        comboBox2.setPreferredSize(new Dimension(150, 28));
        JLabel JLabel3 = new JLabel("舱室");
        JComboBox<JComboBoxItem> comboBox3 = new JComboBox<>(cabinList);
        comboBox3.setPreferredSize(new Dimension(150, 28));
        JLabel JLabel4 = new JLabel("类别");
        JComboBox<String> comboBox4 = new JComboBox<>(typeList);
        comboBox4.setPreferredSize(new Dimension(150, 28));
        JLabel JLabel5 = new JLabel("状态");
        JComboBox<JComboBoxItem> comboBox5 = new JComboBox<>(statusList);
        comboBox5.setPreferredSize(new Dimension(150, 28));
        JTextField sb = new JTextField(16);
        sb.setPreferredSize(new Dimension(150, 28));
        JButton query = new JButton("查询");
        JButton btnTj = new JButton("统计报表");
        JButton btnJc = new JButton("周进度检查表");
        JButton btnExport = new JButton("导出跟踪报表");
        JButton btnImport = new JButton("导入跟踪报表");
        JComboBox<JComboBoxItem> comboBox = new JComboBox<>(projectList);
        JComboBox<JComboBoxItem> comboBox2 = new JComboBox<>(statusList);
        JComboBoxItem selectedItem = (JComboBoxItem) comboBox.getSelectedItem();
        JComboBoxItem selectedItem2 = (JComboBoxItem) comboBox2.getSelectedItem();
        comboBox.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                JComboBoxItem selectedItemNow = (JComboBoxItem) comboBox.getSelectedItem();
                JComboBoxItem selectedItem2Now = (JComboBoxItem) comboBox2.getSelectedItem();
                Long level1Id = selectedItemNow.getId();
                Long Status = selectedItem2Now.getId();
                JComboBoxItem project = (JComboBoxItem) comboBox.getSelectedItem();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem status = (JComboBoxItem) comboBox5.getSelectedItem();
                list = djJdgzTrackRecordService.getList(level1Id, Math.toIntExact(Status));
                list = djJdgzTrackRecordService.getList(project.getId(), dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(status.getId()), null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                tableModelListener(table, jFrame, list);
            }
        });
        comboBox1.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                JComboBoxItem project = (JComboBoxItem) comboBox.getSelectedItem();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                Long deptId = dept.getId();
                JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(deptId);
                comboBox2.setModel(new DefaultComboBoxModel<>(teamList));
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem status = (JComboBoxItem) comboBox5.getSelectedItem();
                list = djJdgzTrackRecordService.getList(project.getId(), dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(status.getId()), null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                tableModelListener(table, jFrame,list);
            }
        });
        comboBox2.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                JComboBoxItem selectedItemNow = (JComboBoxItem) comboBox.getSelectedItem();
                JComboBoxItem selectedItem2Now = (JComboBoxItem) comboBox2.getSelectedItem();
                Long level1Id = selectedItemNow.getId();
                Long Status = selectedItem2Now.getId();
                JComboBoxItem project = (JComboBoxItem) comboBox.getSelectedItem();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem status = (JComboBoxItem) comboBox5.getSelectedItem();
                list = djJdgzTrackRecordService.getList(level1Id, Math.toIntExact(Status));
                list = djJdgzTrackRecordService.getList(project.getId(), dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(status.getId()), null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                tableModelListener(table, jFrame, list);
            }
        });
        comboBox3.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                JComboBoxItem project = (JComboBoxItem) comboBox.getSelectedItem();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem status = (JComboBoxItem) comboBox5.getSelectedItem();
                list = djJdgzTrackRecordService.getList(project.getId(), dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(status.getId()), null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                tableModelListener(table, jFrame, list);
            }
        });
        comboBox4.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                JComboBoxItem project = (JComboBoxItem) comboBox.getSelectedItem();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem status = (JComboBoxItem) comboBox5.getSelectedItem();
                list = djJdgzTrackRecordService.getList(project.getId(), dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(status.getId()), null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                tableModelListener(table, jFrame, list);
            }
        });
        comboBox5.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                JComboBoxItem project = (JComboBoxItem) comboBox.getSelectedItem();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem status = (JComboBoxItem) comboBox5.getSelectedItem();
                list = djJdgzTrackRecordService.getList(project.getId(), dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(status.getId()), null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                tableModelListener(table, jFrame, list);
            }
        });
        query.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JComboBoxItem project = (JComboBoxItem) comboBox.getSelectedItem();
                list = djJdgzTrackRecordService.getList(project.getId(), null, null, null, null, null, sb.getText());
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                tableModelListener(table, jFrame,list);
            }
        });
@@ -122,17 +253,7 @@
            }
        });
        topJpanel.add(btnTj);
        topJpanel.add(btnJc);
        topJpanel.add(btnExport);
        topJpanel.add(btnImport);
        topJpanel.add(comboBox);
        topJpanel.add(comboBox2);
        comboBox.setPreferredSize(new Dimension(300, 28));
        comboBox2.setPreferredSize(new Dimension(300, 28));
        list = djJdgzTrackRecordService.getList(selectedItem.getId(), Math.toIntExact(selectedItem2.getId()));
        list = djJdgzTrackRecordService.getList(projectList[0].getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], Math.toIntExact(statusList[0].getId()), null);
        List<TableButton> buttonList = new ArrayList<>();
        buttonList.add(new TableButton("edit", "编辑"));
@@ -146,11 +267,11 @@
        columnDto.add(new ColumnDto("一级节点", "level1NodeName", 120, null, false, null, null));
        columnDto.add(new ColumnDto("二级节点", "level2NodeName", 120, null, false, null, null));
        columnDto.add(new ColumnDto("设备名称", "level3NetworkName", 120, null, false, null, null));
        columnDto.add(new ColumnDto("当前节点", "level3NodeName", 120, null, false, null, null));
        columnDto.add(new ColumnDto("计划完成时间", "requiredCompletionTime", 200, 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("当前节点", "level3NodeName", 150, null, false, null, null));
        columnDto.add(new ColumnDto("计划完成时间", "requiredCompletionTime", 180, null, false, null, null));
        columnDto.add(new ColumnDto("跟踪记录", "", 100, "", true, buttonList, null));
        columnDto.add(new ColumnDto("总承修单位", "generalRepair", 200, null, false, null, null));
        columnDto.add(new ColumnDto("分承修单位", "repair", 200, null, false, null, null));
        columnDto.add(new ColumnDto("历史记录", "trackNum", 100, null, false, null, null));
        columnDto.add(new ColumnDto("完成时间", "actualCompletion", 200, null, false, null, null));
        columnDto.add(new ColumnDto("附件", "fileName", 200, null, false, null, null));
@@ -159,6 +280,60 @@
        table = CommonTable.createCommonTable(list, columnDto);
        table.setRowHeight(25);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        List<String> itemList = new ArrayList<>();
        for (ColumnDto dto : columnDto) {
            itemList.add(dto.getColumnDesc()); // å°† dto.getColumnDesc() æ·»åŠ åˆ° List ä¸­
        }
        String[] items = itemList.toArray(new String[0]);
        columnModel = table.getColumnModel();
        MultiSelectComboBox2 mulcomboBox = new MultiSelectComboBox2(items,columnDto,columnModel);
/*        final Integer[] lastIndex = {-1};
        mulcomboBox.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent event) {
                int selectedIndex = mulcomboBox.getSelectedIndex();
                if (lastIndex[0] == selectedIndex){
                    lastIndex[0] = -1;
                    return;
                }else{
                    lastIndex[0] = selectedIndex;
                }
                if (selectedIndex != -1) {
                    // æ›´æ–° selectedIndices
                    if (event.getStateChange() == ItemEvent.SELECTED){
                        Integer width = columnDto.get(selectedIndex).getColumnWidth();
                        columnModel.getColumn(selectedIndex).setPreferredWidth(width);
                    }else{
                        columnModel.getColumn(selectedIndex).setPreferredWidth(0);
                    }
                }
            }
        });*/
        topJpanel.add(JLabel0, new GBC(0, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(comboBox, new GBC(1, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(JLabel1, new GBC(2, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(comboBox1, new GBC(3, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(JLabel2, new GBC(4, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(comboBox2, new GBC(5, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(JLabel3, new GBC(6, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(comboBox3, new GBC(7, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(JLabel4, new GBC(8, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(comboBox4, new GBC(9, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(JLabel5, new GBC(10, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(comboBox5, new GBC(11, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(btnTj, new GBC(1, 1, 1, 1).setInsets(5));
        topJpanel.add(btnJc, new GBC(2, 1, 2, 1).setInsets(5));
        topJpanel.add(btnImport, new GBC(4, 1, 2, 1).setInsets(5));
        topJpanel.add(btnExport, new GBC(6, 1, 2, 1).setInsets(5));
        topJpanel.add(mulcomboBox, new GBC(8, 1, 2, 1).setInsets(5));
        topJpanel.add(sb, new GBC(10, 1, 2, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(query, new GBC(12, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        table.addMouseListener(new MouseAdapter() {
            @Override
@@ -208,8 +383,19 @@
        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(width - 20, height - 130));
        scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(100,jFrame)));
        centerJpanel.add(scrollPane);
        jFrame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(100,jFrame)));
                scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(100,jFrame)));
                centerJpanel.revalidate();
                centerJpanel.repaint();
                scrollPane.revalidate();
                scrollPane.repaint();
            }
        });
        return panel;
    }
@@ -309,6 +495,41 @@
                System.out.println("单元格变化: è¡Œ=" + row + ", åˆ—=" + column + ", æ–°å€¼=" + newValue);
            }
        });
        table.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                if (e.isPopupTrigger()) {
                    showPopupMenu(e);
                }
            }
            @Override
            public void mouseReleased(MouseEvent e) {
                if (e.isPopupTrigger()) {
                    showPopupMenu(e);
                }
            }
            private void showPopupMenu(MouseEvent e) {
                JPopupMenu popupMenu = new JPopupMenu();
                JMenuItem menuItem1 = new JMenuItem("撤回");
                popupMenu.add(menuItem1);
                int row = table.rowAtPoint(e.getPoint());
                int col = table.columnAtPoint(e.getPoint());
                DjJdgzTrackRecord djJdgzTrackRecord = list.get(row);
                if (djJdgzTrackRecord.getCurrentStatus() == 1) {
                    table.setRowSelectionInterval(row, row);
                    popupMenu.show(e.getComponent(), e.getX(), e.getY());
                    menuItem1.addActionListener(ex -> {
                        djJdgzTrackRecordService.retract(djJdgzTrackRecord.getId());
                        List<DjJdgzTrackRecord> list = djJdgzTrackRecordService.getList(djJdgzTrackRecord.getLevel1NetworkId(), null, null, null, null, 0, null);
                        CommonTable.refreshTable(list, columnDto, table);
                        tableModelListener(table, jFrame, list);
                    });
                }
            }
        });
    }
}
src/main/java/com/example/client/utils/ColorDescription.java
New file
@@ -0,0 +1,19 @@
package com.example.client.utils;
public class ColorDescription {
    private String hexColor;
    private String description;
    public ColorDescription(String hexColor, String description) {
        this.hexColor = hexColor;
        this.description = description;
    }
    public String getHexColor() {
        return hexColor;
    }
    public String getDescription() {
        return description;
    }
}
src/main/java/com/example/client/utils/ColorDescriptionComboBox.java
New file
@@ -0,0 +1,102 @@
package com.example.client.utils;
import com.example.client.dto.ColumnDto;
import javax.swing.*;
import javax.swing.plaf.basic.BasicComboBoxEditor;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumnModel;
import java.awt.*;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ColorDescriptionComboBox extends JComboBox<ColorDescription> {
    private String defaultText; // é»˜è®¤æ˜¾ç¤ºæ–‡æœ¬
    public ColorDescriptionComboBox(List<ColorDescription> colorDescriptions) {
        super(colorDescriptions.toArray(new ColorDescription[0]));
        this.defaultText = "状态"; // è®¾ç½®é»˜è®¤æ–‡æœ¬
        setEditable(true);
        // è‡ªå®šä¹‰æ¸²æŸ“器
        setRenderer(new DefaultListCellRenderer() {
            @Override
            public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
                super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
                if (value instanceof ColorDescription) {
                    ColorDescription cd = (ColorDescription) value;
                    setText(cd.getDescription()); // æ˜¾ç¤ºæè¿°
                    setIcon(new ColorIcon(cd.getHexColor())); // è®¾ç½®åœ†å½¢å›¾æ ‡
                }
                return this;
            }
        });
        // è‡ªå®šä¹‰ç¼–辑器
        setEditor(new BasicComboBoxEditor() {
            private JTextField textField;
            @Override
            public Component getEditorComponent() {
                if (textField == null) {
                    textField = new JTextField(defaultText); // è®¾ç½®é»˜è®¤æ–‡æœ¬
                    textField.setEditable(false); // è®¾ç½®ä¸ºä¸å¯ç¼–辑
                }
                return textField;
            }
            @Override
            public void setItem(Object anObject) {
                // ç¦ç”¨è‡ªåŠ¨æ›´æ–°ç¼–è¾‘å™¨æ–‡æœ¬çš„è¡Œä¸º
                if (textField != null) {
                    textField.setText(defaultText); // å§‹ç»ˆæ˜¾ç¤ºé»˜è®¤æ–‡æœ¬
                }
            }
        });
    }
}
// è‡ªå®šä¹‰åœ†å½¢å›¾æ ‡ç±»
class ColorIcon implements Icon {
    private Color color;
    public ColorIcon(String hexColor) {
        this.color = ColorUtils.hexToColor(hexColor);
    }
    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        int width = getIconWidth();
        int height = getIconHeight();
        int diameter = Math.min(width, height);
        int xCenter = (width - diameter) / 2;
        int yCenter = (height - diameter) / 2;
        g.setColor(color);
        g.fillOval(x + xCenter, y + yCenter, diameter, diameter);
    }
    @Override
    public int getIconWidth() {
        return 20; // åœ†å½¢çš„宽度
    }
    @Override
    public int getIconHeight() {
        return 20; // åœ†å½¢çš„高度
    }
}
// åå…­è¿›åˆ¶é¢œè‰²è½¬æ¢ä¸º Color å¯¹è±¡
class ColorUtils {
    public static Color hexToColor(String hex) {
        try {
            hex = hex.trim().replace("#", "");
            int rgb = Integer.parseInt(hex, 16);
            return new Color((rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF);
        } catch (NumberFormatException e) {
            return Color.WHITE;
        }
    }
}
src/main/java/com/example/client/utils/CommonTable.java
@@ -45,6 +45,7 @@
    public static void setColumnType(List<ColumnDto> dtoList, JTable table) {
        for (int j = 0; j < dtoList.size(); j++) {
            table.getColumnModel().getColumn(j).setPreferredWidth(dtoList.get(j).getColumnWidth());
            table.getColumnModel().getColumn(j).setMinWidth(2);
            if (dtoList.get(j).getButtonList() != null) {
                CreateTableButton.AcceptRejectRenderer renderer = new CreateTableButton.AcceptRejectRenderer(dtoList.get(j).getButtonList());
                table.getColumnModel().getColumn(j).setCellRenderer(renderer);
src/main/java/com/example/client/utils/Compute.java
New file
@@ -0,0 +1,39 @@
package com.example.client.utils;
import javax.swing.*;
import java.awt.*;
public class Compute {
    /*public static Integer ComputeHeight(Integer topHeight){
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        Rectangle rect = ge.getMaximumWindowBounds();
        Integer screenWidth = rect.width;
        Integer screenHeight = rect.height;
        Integer panelHeight = screenHeight - 50 - topHeight;
        return panelHeight;
    }
    public static Integer ComputeHeightWithScroll(Integer topHeight){
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        Rectangle rect = ge.getMaximumWindowBounds();
        Integer screenWidth = rect.width;
        Integer screenHeight = rect.height;
        Integer panelHeight = screenHeight - 50 - 30 - topHeight;
        return panelHeight;
    }*/
    public static Integer ComputeHeight(Integer topHeight, JFrame frame){
        int height = frame.getSize().height;
        Integer panelHeight = height - 70 - topHeight;
        return panelHeight;
    }
    public static Integer ComputeHeightWithScroll(Integer topHeight, JFrame frame){
        int height = frame.getSize().height;
        Integer panelHeight = height - 100 - topHeight;
        return panelHeight;
    }
}
src/main/java/com/example/client/utils/MultiSelectComboBox2.java
New file
@@ -0,0 +1,116 @@
package com.example.client.utils;
import com.example.client.dto.ColumnDto;
import javax.swing.*;
import javax.swing.plaf.basic.BasicComboBoxEditor;
import javax.swing.table.TableColumnModel;
import java.awt.*;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class MultiSelectComboBox2 extends JComboBox<String> {
    public Set<Integer> selectedIndices = new HashSet<>();
    private String defaultText; // é»˜è®¤æ˜¾ç¤ºæ–‡æœ¬
    public MultiSelectComboBox2(String[] items, List<ColumnDto> columnDto, TableColumnModel columnModel) {
        super(items);
        this.defaultText = "自定义表头"; // è®¾ç½®é»˜è®¤æ–‡æœ¬
        setEditable(true);
        // è‡ªå®šä¹‰æ¸²æŸ“器
        setRenderer(new DefaultListCellRenderer() {
            @Override
            public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
                JCheckBox checkBox = new JCheckBox();
                checkBox.setText(value.toString()); // ä½¿ç”¨å­—符串作为文本
                checkBox.setSelected(selectedIndices.contains(index)); // è®¾ç½®é€‰ä¸­çŠ¶æ€
                checkBox.setEnabled(list.isEnabled());
                checkBox.setFont(list.getFont());
                checkBox.setFocusPainted(false);
                checkBox.setBackground(isSelected ? list.getSelectionBackground() : list.getBackground());
                checkBox.setForeground(isSelected ? list.getSelectionForeground() : list.getForeground());
                return checkBox;
            }
        });
        // è‡ªå®šä¹‰ç¼–辑器
        setEditor(new BasicComboBoxEditor() {
            private JTextField textField;
            @Override
            public Component getEditorComponent() {
                if (textField == null) {
                    textField = new JTextField(defaultText); // è®¾ç½®é»˜è®¤æ–‡æœ¬
                    textField.setEditable(false); // è®¾ç½®ä¸ºä¸å¯ç¼–辑
                }
                return textField;
            }
            @Override
            public void setItem(Object anObject) {
                // ç¦ç”¨è‡ªåŠ¨æ›´æ–°ç¼–è¾‘å™¨æ–‡æœ¬çš„è¡Œä¸º
                if (textField != null) {
                    textField.setText(defaultText); // å§‹ç»ˆæ˜¾ç¤ºé»˜è®¤æ–‡æœ¬
                }
            }
        });
        // æ·»åŠ åŠ¨ä½œç›‘å¬å™¨
        addActionListener(e -> {
            int selectedIndex = getSelectedIndex();
            if (selectedIndex != -1) {
                if (selectedIndices.contains(selectedIndex)) {
                    selectedIndices.remove(selectedIndex);
                    if (columnModel != null) {
                        columnModel.getColumn(selectedIndex).setPreferredWidth(2);
                    }
                } else {
                    selectedIndices.add(selectedIndex);
                    if (columnModel != null) {
                        Integer width = columnDto.get(selectedIndex).getColumnWidth();
                        columnModel.getColumn(selectedIndex).setPreferredWidth(width);
                    }
                }
            }
        });
        // é»˜è®¤é€‰ä¸­æ‰€æœ‰é¡¹
        for (int i = 0; i < getItemCount(); i++) {
            selectedIndices.add(i); // å°†æ‰€æœ‰ç´¢å¼•添加到选中集合
        }
    }
    public Set<String> getSelectedItems() {
        Set<String> selectedItems = new HashSet<>();
        for (Integer index : selectedIndices) {
            selectedItems.add((String) getItemAt(index));
        }
        return selectedItems;
    }
    public void setSelectedItems(Set<String> items) {
        selectedIndices.clear(); // æ¸…空当前选中项
        for (int i = 0; i < getItemCount(); i++) {
            String item = getItemAt(i);
            if (items.contains(item)) {
                selectedIndices.add(i); // å°†å¯¹åº”的索引添加到选中集合
            }
        }
    }
    public Set<Integer> getUnselectedIndices() {
        Set<Integer> unselectedIndices = new HashSet<>();
        for (int i = 0; i < getItemCount(); i++) {
            if (!selectedIndices.contains(i)) {
                unselectedIndices.add(i);
            }
        }
        return unselectedIndices;
    }
    public Set<Integer> getSelectedIndices() {
        return new HashSet<>(selectedIndices);
    }
}
src/main/java/com/example/server/DataSync/dto/DataExportDto.java
File was deleted
src/main/java/com/example/server/DataSync/dto/DataImportDto.java
File was deleted
src/main/java/com/example/server/DataSync/service/DataSyncService.java
@@ -1,10 +1,16 @@
package com.example.server.DataSync.service;
import com.example.Application;
import com.example.client.service.DataExportManageService;
import com.example.client.service.DataImportManageService;
import com.example.client.utils.WaitUtil;
import com.example.server.DataSync.dto.IDUpdateDateDto;
import com.example.server.DataSync.dto.FieldTypeDto;
import com.example.server.mysql.dao.SysMysqlDao;
import com.example.server.progressTrack.dao.ExportRecordDao;
import com.example.server.progressTrack.dao.ImportRecordDao;
import com.example.server.progressTrack.model.ExportRecord;
import com.example.server.progressTrack.model.ImportRecord;
import com.example.server.utils.CacheUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -28,6 +34,14 @@
public class DataSyncService {
    @Autowired
    protected SysMysqlDao sysMysqlDao;
    @Autowired
    protected ExportRecordDao exportRecordDao;
    @Autowired
    protected ImportRecordDao importRecordDao;
    @Autowired
    DataExportManageService dataExportManageService;
    @Autowired
    DataImportManageService dataImportManageService;
    @Value("${data.config-path}")
    private String configPath2;
@@ -40,7 +54,9 @@
    @Value("${spring.datasource.url}")
    private String datasource;
    public void export() {
    public void export(JTextArea tips) {
        final String[] massage = {""};
        String[] parts = datasource.split(":", 3);
        // å®šä¹‰æ–‡ä»¶è·¯å¾„
        String dbPath = parts[2];
@@ -53,7 +69,8 @@
        String outputZipPath = showSaveFileDialog(mySite + "同步数据包.zip");
        if (outputZipPath == null) {
            System.out.println("用户取消保存,程序退出。");
            massage[0] = "用户取消保存,程序退出。"+ new Date();
            tips.setText(tips.getText() + massage[0]);
        }else{
            final WaitUtil waitUtil = new WaitUtil(imgPath, "数据正在导入,请稍候");
@@ -74,9 +91,15 @@
                        // åˆ·æ–°è¡¨æ ¼æ•°æ®ï¼ˆå¦‚果上传成功)
                        if (uploadSucceeded.equals("true")) {
                            waitUtil.dispose();
                            System.out.println("导出成功时间" + new Date());
                            massage[0] = "导出成功" + new Date();
                            exportRecordDao.insert(new ExportRecord());
                            List<ExportRecord> list = exportRecordDao.getList();
                            dataExportManageService.refresh(list);
                            tips.setText(tips.getText() + massage[0]);
                        } else {
                            waitUtil.dispose();
                            massage[0] = "导出失败" + new Date();
                            tips.setText(tips.getText() + massage[0]);
                            JOptionPane.showMessageDialog(null, uploadSucceeded, "提示", JOptionPane.ERROR_MESSAGE);
                        }
@@ -123,7 +146,8 @@
        return "true";
    }
    public void importData() {
    public void importData(JTextArea tips) {
        String massage = "";
        InputStream inStream = null;
        Properties properties = new Properties();
        try {
@@ -137,8 +161,8 @@
            // é€’归复制文件夹
            copyDirectory(sourceDir, targetDir);
            System.out.println("文件夹复制完成,目标路径:" + targetDir);
            massage = "文件夹复制完成,目标路径:" + targetDir;
            tips.setText(tips.getText() + massage);
            //读取配置
            inStream = new FileInputStream(UnzipPath + "config.properties");
            properties.load(inStream);
@@ -175,6 +199,8 @@
                syncTable("dj_jdgz_track_record");
                syncTable("dj_sys_oss");
                syncTable("dj_jdgz_dismant_track");
                syncTable("dj_sys_teamgroup_class");
                syncTable("sys_user");
            }
        } else if ("厂家".equals(mySite)) {
            syncTable("dj_jdgz_handover");
@@ -188,6 +214,11 @@
            syncTable("dj_sys_oss");
            syncTable("dj_jdgz_dismant_track");
        }
        ImportRecord data =new ImportRecord();
        data.setImportSite(otherSite);
        importRecordDao.insert(data);
        List<ImportRecord> list = importRecordDao.getList();
        dataImportManageService.refresh(list);
    }
    public void syncTable(String tableName) {
src/main/java/com/example/server/ExportExcel/method/ExcelExport.java
@@ -10,6 +10,7 @@
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Method;
src/main/java/com/example/server/entity/FieldMetaObjectHandler.java
@@ -19,6 +19,7 @@
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
@@ -34,10 +35,10 @@
    public void insertFill(MetaObject metaObject) {
        Object object = metaObject.getOriginalObject();
        SysUser user = (SysUser) CacheUtils.get("user","user");
        LocalDate currentDate = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDateTime currentDateTime = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // å°†å½“前日期格式化为字符串
        String date = currentDate.format(formatter);
        String date = currentDateTime.format(formatter);
        if (object instanceof TeamEntity) {
            TeamEntity entity = (TeamEntity) object;
@@ -64,10 +65,10 @@
    @Override
    public void updateFill(MetaObject metaObject) {
        LocalDate currentDate = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDateTime currentDateTime = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // å°†å½“前日期格式化为字符串
        String date = currentDate.format(formatter);
        String date = currentDateTime.format(formatter);
        SysUser user =(SysUser) CacheUtils.get("user","user");
        Object object = metaObject.getOriginalObject();
        if (object instanceof PlatformEntity) {
src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java
@@ -19,7 +19,7 @@
@Mapper
public interface DjJdgzTrackRecordDao extends BaseDao<DjJdgzTrackRecord> {
    List<DjJdgzTrackRecord> getList(Long level1NetworkId,Integer status,Long userId);
    List<DjJdgzTrackRecord> getList(Long level1NetworkId, Long deptId, Long teamId, Long cabinId, String type, Integer status, String name);
    List<DjJdgzTrackRecord> getHistory(Long level3NodeId);
@@ -34,4 +34,6 @@
    Integer getTrackNum(Long level3NodeId);
    List<DjJdgzTrackRecord> getListByImport(Long level1Id, Long level2Id, Long level2NodeId, String selectedIds);
    void retract(Long id);
}
src/main/java/com/example/server/progressTrack/dao/ExportRecordDao.java
New file
@@ -0,0 +1,20 @@
package com.example.server.progressTrack.dao;
import com.example.server.dao.BaseDao;
import com.example.server.progressTrack.model.ExportRecord;
import com.example.server.progressTrack.model.ImportRecord;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * dj_jdgz_ship
 *
 * @author zt generator
 * @since 1.0.0 2024-12-18
 */
@Mapper
public interface ExportRecordDao extends BaseDao<ExportRecord> {
    List<ExportRecord> getList();
}
src/main/java/com/example/server/progressTrack/dao/ImportRecordDao.java
New file
@@ -0,0 +1,22 @@
package com.example.server.progressTrack.dao;
import com.example.client.dto.JComboBoxItem;
import com.example.server.dao.BaseDao;
import com.example.server.progressTrack.model.DjJdgzShip;
import com.example.server.progressTrack.model.ImportRecord;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * dj_jdgz_ship
 *
 * @author zt generator
 * @since 1.0.0 2024-12-18
 */
@Mapper
public interface ImportRecordDao extends BaseDao<ImportRecord> {
    List<ImportRecord> getList();
}
src/main/java/com/example/server/progressTrack/model/DjJdgzHandover.java
@@ -39,7 +39,11 @@
    private String handoverTime;
    @ApiModelProperty(value = "交接情况说明")
    private String handoverSituation;
    private String tdExplan;
    @ApiModelProperty(value = "交接情况说明")
    private String professExplan;
    @ApiModelProperty(value = "交接情况说明")
    private String deptExplan;
    @ApiModelProperty(value = "备注")
    private Integer remark;
src/main/java/com/example/server/progressTrack/model/ExportRecord.java
New file
@@ -0,0 +1,25 @@
package com.example.server.progressTrack.model;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.example.client.entity.PlatformLogEntity;
import com.example.server.entity.BaseEntity;
import com.example.server.entity.BusiEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * dj_jdgz_handover
 *
 * @author zt generator
 * @since 1.0.0 2024-12-17
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("export_record")
public class ExportRecord extends PlatformLogEntity {
    @TableField(exist = false)
    private String userName;
}
src/main/java/com/example/server/progressTrack/model/ImportRecord.java
New file
@@ -0,0 +1,27 @@
package com.example.server.progressTrack.model;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.example.client.entity.PlatformLogEntity;
import com.example.server.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * dj_jdgz_handover
 *
 * @author zt generator
 * @since 1.0.0 2024-12-17
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("import_record")
public class ImportRecord extends PlatformLogEntity {
    private String importSite;
    @TableField(exist = false)
    private String userName;
}
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java
@@ -262,18 +262,18 @@
                        time1 = time1.replace("/", "-");
                        node.setRequiredCompletionTime(time1);
                        node.setProcessName(mapProcessName.get(1));
                        node.setSort(sort + 1);
                        node.setSort(1);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time1.matches("[0-9.]+")) {
                        time1 = time1.replace(".", "-");
                        node.setRequiredCompletionTime(time1);
                        node.setProcessName(mapProcessName.get(1));
                        node.setSort(sort + 1);
                        node.setSort(1);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time1.matches("[0-9-]+")) {
                        node.setRequiredCompletionTime(time1);
                        node.setProcessName(mapProcessName.get(1));
                        node.setSort(sort + 1);
                        node.setSort(1);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else {
                        result = "第" + j + "行" + "第" + 1 + "个" + "节点时间日期格式不规范";
@@ -288,18 +288,18 @@
                    if (time2.matches("[0-9/]+")) {
                        node.setRequiredCompletionTime(time2);
                        node.setProcessName(mapProcessName.get(2));
                        node.setSort(sort + 1);
                        node.setSort(2);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time2.matches("[0-9.]+")) {
                        time2 = time2.replace(".", "-");
                        node.setRequiredCompletionTime(time2);
                        node.setProcessName(mapProcessName.get(2));
                        node.setSort(sort + 1);
                        node.setSort(2);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time2.matches("[0-9-]+")) {
                        node.setRequiredCompletionTime(time2);
                        node.setProcessName(mapProcessName.get(2));
                        node.setSort(sort + 1);
                        node.setSort(2);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else {
                        result = "第" + j + "行" + "第" + 2 + "个" + "节点时间的日期格式不规范";
@@ -315,18 +315,18 @@
                        time3 = time3.replace("/", "-");
                        node.setRequiredCompletionTime(time3);
                        node.setProcessName(mapProcessName.get(3));
                        node.setSort(sort + 1);
                        node.setSort(3);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time3.matches("[0-9.]+")) {
                        time3 = time3.replace(".", "-");
                        node.setRequiredCompletionTime(time3);
                        node.setProcessName(mapProcessName.get(3));
                        node.setSort(sort + 1);
                        node.setSort(3);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time3.matches("[0-9-]+")) {
                        node.setRequiredCompletionTime(time3);
                        node.setProcessName(mapProcessName.get(3));
                        node.setSort(sort + 1);
                        node.setSort(3);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else {
                        result = "第" + j + "行" + "第" + 3 + "个" + "节点时间的日期格式不规范";
@@ -342,18 +342,18 @@
                        time4 = time4.replace("/", "-");
                        node.setRequiredCompletionTime(time4);
                        node.setProcessName(mapProcessName.get(4));
                        node.setSort(sort + 1);
                        node.setSort(4);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time4.matches("[0-9.]+")) {
                        time4 = time4.replace(".", "-");
                        node.setRequiredCompletionTime(time4);
                        node.setProcessName(mapProcessName.get(4));
                        node.setSort(sort + 1);
                        node.setSort(4);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time4.matches("[0-9-]+")) {
                        node.setRequiredCompletionTime(time4);
                        node.setProcessName(mapProcessName.get(4));
                        node.setSort(sort + 1);
                        node.setSort(4);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else {
                        result = "第" + j + "行" + "第" + 4 + "个" + "节点时间的日期格式不规范";
@@ -369,18 +369,18 @@
                        time5 = time5.replace("/", "-");
                        node.setRequiredCompletionTime(time5);
                        node.setProcessName(mapProcessName.get(5));
                        node.setSort(sort + 1);
                        node.setSort(5);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time5.matches("[0-9.]+")) {
                        time5 = time5.replace(".", "-");
                        node.setRequiredCompletionTime(time5);
                        node.setProcessName(mapProcessName.get(5));
                        node.setSort(sort + 1);
                        node.setSort(5);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time5.matches("[0-9-]+")) {
                        node.setRequiredCompletionTime(time5);
                        node.setProcessName(mapProcessName.get(5));
                        node.setSort(sort + 1);
                        node.setSort(5);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else {
                        result = "第" + j + "行" + "第" + 5 + "个" + "要求完成时间的日期格式不规范";
@@ -401,13 +401,13 @@
                if (StringUtils.isNotBlank(generalRepairUnitDirector)) {
                    data.setGeneralRepairUnitDirector(generalRepairUnitDirector);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                if (StringUtils.isNotBlank(repairUnit)) {
                    data.setRepairUnit(repairUnit);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                if (StringUtils.isNotBlank(repairUnitContact)) {
                    data.setRepairUnitContact(repairUnitContact);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                if (StringUtils.isNotBlank(repairUnitDirector)) {
                    data.setRepairUnitDirector(repairUnitDirector);
                }
src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java
@@ -7,17 +7,26 @@
import com.example.server.progressTrack.Dto.StatistReportsDto;
import com.example.server.progressTrack.dao.DjJdgzTrackRecordDao;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel1;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3List;
import com.example.server.progressTrack.model.DjJdgzTrackRecord;
import com.example.server.teamGroup.service.SysTeamGroupClassService;
import com.example.server.user.service.UserService;
import com.example.server.utils.FileUtils;
import com.example.server.utils.ImportUtil;
import com.example.server.utils.TreeFieldUtils;
import com.example.server.utils.UUIDUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -41,12 +50,14 @@
    @Autowired
    private DjJdgzNetworkLevel3ListService djJdgzNetworkLevel3ListService;
    @Autowired
    private DjJdgzNetworkLevel3Service djJdgzNetworkLevel3Service;
    @Autowired
    private UserService sysUserService;
    @Autowired
    private SysTeamGroupClassService sysTeamGroupClassService;
    public List<DjJdgzTrackRecord> getList(Long level1NetworkId, Integer status) {
    public List<DjJdgzTrackRecord> getList(Long level1NetworkId, Long deptId, Long teamId, Long cabinId, String type, Integer status, String name) {
        Long userId = null;
       /* Map adminRole = sysUserService.adminRole();
        Object isTyRole = adminRole.get("isTyRole");
@@ -54,7 +65,7 @@
        if (isTyRole.equals(true) || isYwzRole.equals(true)) {
            userId =  UserContext.getUser().getId();
        }*/
        List<DjJdgzTrackRecord> list = baseDao.getList(level1NetworkId, status, userId);
        List<DjJdgzTrackRecord> list = baseDao.getList(level1NetworkId,deptId,teamId,cabinId,type, status, name);
        /*if (list != null && list.size() > 0) {
            sysOssService.setListOsses(list, "ProjectProgressFileUpload");
        }*/
@@ -205,7 +216,7 @@
    public void exportExcel(String filePath, String teamgroupId, Long level1NetworkId,
                            Long level3NetworkId, Long level3NodeId, Integer status, Date beginDate,
                            Date endDate, Integer istq) {
                            Date endDate, Integer istq, List<ExcelColumnDto> columnDto) {
        List<ExprotExcelDto> dtos = new ArrayList<>();
   /*     Map<String, String> keywordMap = dailyPlanService.getReplacement();
        String keywordT = keywordMap.get("ting");*/
@@ -225,26 +236,6 @@
        ExprotExcelDto dto = new ExprotExcelDto();
        dto.setSheetName("跟踪记录明细");
        List<ExcelColumnDto> columnDto = new ArrayList<>();
        columnDto.add(new ExcelColumnDto("一级节点", "Level1NodeName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("二级节点", "Level2NodeName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("项目名称", "Level3NetworkName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("当前节点", "Level3NodeName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("专业", "TeamGroupName", 20, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("总承修单位及负责人", "GeneralRepair", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("分承修单位及负责人", "Repair", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("跟踪方式", "trackMethodStr", 10, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("助修人", "TrackPerson", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("厂方", "TrackedPerson", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("跟踪地点", "TrackLocation", 10, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("节点进展", "status", 10, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("脱期风险", "hasDelayRiskStr", 10, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("预计完成时间", "EstimatedCompletionTime", 15, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("存在问题", "Problem", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("后续计划", "FollowupPlan", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("备注", "Remark", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("填写时间", "UpdateDate", 15, HorizontalAlignment.CENTER));
        List<DjJdgzTrackRecord> list = baseDao.getdata(teamgroupId, level1NetworkId, level3NetworkId, level3NodeId, status, beginDate, endDate, istq);
@@ -306,4 +297,238 @@
    public List<DjJdgzTrackRecord> getListByImport(Long level1Id, Long level2Id, Long level2NodeId, String selectedIds) {
        return baseDao.getListByImport(level1Id,level2Id,level2NodeId,selectedIds);
    }
    public String importDiagramFromExcel(String path) {
        String result = "true";
        Integer sum = 0; // æ€»å…±çš„æ¡æ•°
        Integer suc = 0; // æˆåŠŸçš„æ¡æ•°
        Integer err = 0; // å¤±è´¥çš„æ¡æ•°
        Map<String, Object> errMap = new HashMap<>();
        MultipartFile mutFile = null;
        try {
            mutFile = FileUtils.convertFileToMultipartFile(path);
        } catch (IOException e) {
            e.printStackTrace();
        }
        String sheetName = null;
        int row1 = 0;
        try {
            // èŽ·å–å¯¼å…¥æ–‡ä»¶çš„åŽç¼€å
            String fileName = mutFile.getOriginalFilename();
            Workbook workbook = null;
            //解决excel版本问题
            if (fileName != null && fileName.endsWith(".xls")) {
                workbook = new HSSFWorkbook(mutFile.getInputStream());
            } else if (fileName != null && fileName.endsWith(".xlsx")) {
                workbook = new XSSFWorkbook(mutFile.getInputStream());
            }
            assert workbook != null; //断言如果[boolean表达式]为true,则程序继续执行。 å¦‚果为false,则程序抛出AssertionError,并终止执行。
            Sheet sheet = workbook.getSheetAt(0);
            int num = sheet.getLastRowNum(); // ä¸€å…±æœ‰å¤šå°‘行
            sheetName = sheet.getSheetName(); //获取当前sheet名称
            sum = sum + num;
            Map<String, Integer> trackMethodMap = new HashMap<>();
            trackMethodMap.put("线下", 0);
            trackMethodMap.put("电话", 1);
            Map<String, Integer> statusMap = new HashMap<>();
            statusMap.put("进行中", 0);
            statusMap.put("已完成", 1);
            Map<String, Integer> hasDelayRiskMap = new HashMap<>();
            hasDelayRiskMap.put("有", 1);
            hasDelayRiskMap.put("无", 0);
            for (int j = 2; j <= num; j++) {
                int sort = 0;
                DjJdgzTrackRecord data = new DjJdgzTrackRecord();
                boolean isErr = false;
                row1 = j + 1;
                String pattern = "yyyy-MM-dd";
                Row row = sheet.getRow(j);
                String idStr = ImportUtil.getCellValue(row, 0, pattern);
                String dataDate = ImportUtil.getCellValue(row, 1, pattern);
                String name = ImportUtil.getCellValue(row, 2, pattern);
                String progressName = ImportUtil.getCellValue(row, 3, pattern);
                String trackMethodStr = ImportUtil.getCellValue(row, 4, pattern);
                String trackLocationStr = ImportUtil.getCellValue(row, 5, pattern);
                String currentStatusStr = ImportUtil.getCellValue(row, 6, pattern);
                String hasDelayRiskStr = ImportUtil.getCellValue(row, 7, pattern);
                String estimatedCompletionTimeStr = ImportUtil.getCellValue(row, 8, pattern);
                String problemStr = ImportUtil.getCellValue(row, 9, pattern);
                String followupPlanStr = ImportUtil.getCellValue(row, 10, pattern);
                String remarkStr = ImportUtil.getCellValue(row, 11, pattern);
                String trackPersonStr = ImportUtil.getCellValue(row, 12, pattern);
                String trackPersonContact = ImportUtil.getCellValue(row, 13, pattern);
                String trackPersonUnit = ImportUtil.getCellValue(row, 14, pattern);
                String trackedPerson = ImportUtil.getCellValue(row, 15, pattern);
                String trackedPersonContact = ImportUtil.getCellValue(row, 16, pattern);
                String trackedPersonUnit = ImportUtil.getCellValue(row, 17, pattern);
                String generalRepairUnit = ImportUtil.getCellValue(row, 18, pattern);
                String generalRepairUnitDirector = ImportUtil.getCellValue(row, 19, pattern);
                String generalRepairUnitContact = ImportUtil.getCellValue(row, 20, pattern);
                String repairUnit = ImportUtil.getCellValue(row, 21, pattern);
                String repairUnitDirector = ImportUtil.getCellValue(row, 22, pattern);
                String repairUnitContact = ImportUtil.getCellValue(row, 23, pattern);
                DjJdgzNetworkLevel3 level3 = djJdgzNetworkLevel3Service.get(Long.parseLong(idStr));
                Long level1NetworkId = level3.getLevel1NetworkId();
                Long id = UUIDUtil.generateId();
                if (StringUtils.isEmpty(dataDate)) {
                    result = "第" + j + "行" + "录入时间不能为空";
                    isErr = true;
                    continue;
                } else {
                    int weekNo = this.getWeekNo(level1NetworkId);
                    data.setWeekNo(weekNo);
                    data.setLevel1NetworkId(level1NetworkId);
                    data.setLevel3NetworkId(level3.getId());
                }
                if (StringUtils.isEmpty(name)) {
                    result = "第" + j + "行" + "设备名称不能为空";
                    isErr = true;
                    continue;
                } else {
                    data.setId(id);
                    data.setLevel3NetworkName(name);
                }
                if (StringUtils.isEmpty(progressName)) {
                    result = "第" + j + "行" + "节点名称不能为空";
                    isErr = true;
                    continue;
                } else {
                    List<DjJdgzNetworkLevel3List> list = djJdgzNetworkLevel3ListService.getList(level3.getId());
                    for (DjJdgzNetworkLevel3List item : list) {
                        if(item.getProcessName().equals(progressName)){
                            data.setLevel3NodeId(item.getId());
                            data.setEstimatedCompletionTime(item.getRequiredCompletionTime());
                            break;
                        }
                    }
                    data.setProcessName(progressName);
                }
                if (StringUtils.isEmpty(trackMethodStr)) {
                    data.setTrackMethod(0);
                } else {
                    data.setTrackMethod(trackMethodMap.get(trackMethodStr));
                }
                if (StringUtils.isNotBlank(trackLocationStr)) {
                    data.setTrackLocation(trackLocationStr);
                }
                if (StringUtils.isEmpty(currentStatusStr)) {
                    data.setCurrentStatus(0);
                } else {
                    data.setCurrentStatus(statusMap.get(currentStatusStr));
                }
                if (StringUtils.isEmpty(hasDelayRiskStr)) {
                    data.setHasDelayRisk(0);
                } else {
                    data.setHasDelayRisk(hasDelayRiskMap.get(hasDelayRiskStr));
                }
                if (StringUtils.isNotBlank(estimatedCompletionTimeStr)) {
                    if (estimatedCompletionTimeStr.matches("[0-9/]+")) {
                        estimatedCompletionTimeStr = estimatedCompletionTimeStr.replace("/", "-");
                        data.setEstimatedCompletionTime(estimatedCompletionTimeStr);
                    } else if (estimatedCompletionTimeStr.matches("[0-9.]+")) {
                        estimatedCompletionTimeStr = estimatedCompletionTimeStr.replace(".", "-");
                        data.setEstimatedCompletionTime(estimatedCompletionTimeStr);
                    } else if (estimatedCompletionTimeStr.matches("[0-9-]+")) {
                        data.setEstimatedCompletionTime(estimatedCompletionTimeStr);
                    } else {
                        result = "第" + j + "行" + "第" + 1 + "个" + "预计完成时间日期格式不规范";
                        isErr = true;
                    }
                }
                if (StringUtils.isNotBlank(problemStr)) {
                    data.setProblem(problemStr);
                }
                if (StringUtils.isNotBlank(followupPlanStr)) {
                    data.setFollowupPlan(followupPlanStr);
                }
                if (StringUtils.isNotBlank(remarkStr)) {
                    data.setRemark(remarkStr);
                }
                if (StringUtils.isNotBlank(trackPersonStr)) {
                    data.setTrackPerson(trackPersonStr);
                }
                if (StringUtils.isNotBlank(trackPersonContact)) {
                    data.setTrackPersonContact(trackPersonContact);
                }
                if (StringUtils.isNotBlank(trackPersonUnit)) {
                    data.setTrackPersonUnit(trackPersonUnit);
                }
                if (StringUtils.isNotBlank(trackedPerson)) {
                    data.setTrackPerson(trackPersonStr);
                }
                if (StringUtils.isNotBlank(trackedPersonContact)) {
                    data.setTrackPersonContact(trackPersonContact);
                }
                if (StringUtils.isNotBlank(trackedPersonUnit)) {
                    data.setTrackPersonUnit(trackPersonUnit);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                    data.setGeneralRepairUnit(generalRepairUnit);
                }
                if (StringUtils.isNotBlank(generalRepairUnitContact)) {
                    data.setGeneralRepairUnitContact(generalRepairUnitContact);
                }
                if (StringUtils.isNotBlank(generalRepairUnitDirector)) {
                    data.setGeneralRepairUnitDirector(generalRepairUnitDirector);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                    data.setRepairUnit(repairUnit);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                    data.setRepairUnitContact(repairUnitContact);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                    data.setRepairUnitDirector(repairUnitDirector);
                }
                if (!isErr) {
                    data.setIsUpdate(false);
                    this.save(data);
                }
                if (isErr) {
                    err++;
                    continue;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            result = "导入" + row1 + "行数据时检测到异常,中断导入操作。";
        }
        suc = sum - err;
        return result;
    }
    public void retract(Long id) {
        baseDao.retract(id);
    }
}
src/main/java/com/example/server/teamGroup/model/SysTeamGroupClass.java
@@ -34,10 +34,10 @@
    @ApiModelProperty(value = "名称")
    private String name;
    @ApiModelProperty(value = "分类(A/B)")
    private String classType;
    @TableField(exist = false)
    @ApiModelProperty(value = "类型)")
    private String type;
src/main/java/com/example/server/utils/DownLoadTmpFile.java
@@ -91,7 +91,7 @@
                Row row = sheet.createRow(num);
                Cell cell = row.createCell(0);
                cell.setCellValue(list.get(i).getId());
                cell.setCellValue(list.get(i).getId().toString());
                cell = row.createCell(1);
                cell.setCellValue(date);
@@ -137,7 +137,7 @@
                }
                cell = row.createCell(20);
                if (StringUtils.isNotBlank(list.get(i).getGeneralRepairUnitContact())) {
                    cell.setCellValue(list.get(i).getGeneralRepairUnitDirector());
                    cell.setCellValue(list.get(i).getGeneralRepairUnitContact());
                }
                cell = row.createCell(21);
                if (StringUtils.isNotBlank(list.get(i).getRepairUnit())) {
src/main/resources/application.yml
@@ -1,6 +1,3 @@
server:
  port: 8080
logging:
  level:
    com.example: debug
src/main/resources/db/csiczb1.db
Binary files differ
src/main/resources/logback-spring.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- æ—¥å¿—根目录-->
    <property name="LOG_PATH" value="../logs"/>
    <property name="LOG_PATH" value="./log"/>
    <!-- é¡¹ç›®å   -->
    <property name="PROJECT_NAME" value="progress_track"/>
    <!-- å®šä¹‰æŽ§åˆ¶å°è¾“出格式颜色 æ—¥å¿—文件格式 -->
src/main/resources/mapper/cabin/CabinDao.xml
@@ -11,5 +11,7 @@
        SELECT
            null AS id,
            '' AS name
        ORDER BY
            id
    </select>
</mapper>
src/main/resources/mapper/menu/MenuDao.xml
@@ -7,14 +7,17 @@
    </update>
    <select id="getList" resultType="com.example.server.menu.model.Menu">
        select a.id,a.pid,a.menu_name
        from menu a
        where
        SELECT a.id, a.pid, a.menu_name
        FROM menu a
        WHERE
            a.is_delete = 0
            <if test="site!='工作组'">
                and menu_name not like '%管理%'
            AND (
            menu_name NOT LIKE '%管理%'
            OR menu_name = '三级网络图管理'
            )
            </if>
        order by sort
        ORDER BY sort;
    </select>
</mapper>
src/main/resources/mapper/progressTrack/DjJdgzHandoverDao.xml
@@ -7,7 +7,7 @@
        SELECT
            a.*,
            b.project_name,
            GROUP_CONCAT(c.name) AS fileName-- ä½¿ç”¨ GROUP_CONCAT æ‹¼æŽ¥ c.name
            GROUP_CONCAT(c.name) AS fileName
        FROM
            dj_jdgz_handover a
                LEFT JOIN dj_jdgz_network_level1 b
src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml
@@ -2,6 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.server.progressTrack.dao.DjJdgzTrackRecordDao">
    <update id="retract">
        UPDATE dj_jdgz_track_record
        SET CURRENT_STATUS = 0
        WHERE LEVEL3_NETWORK_ID = (
            SELECT LEVEL3_NETWORK_ID FROM dj_jdgz_track_record WHERE id = ${id}
        )
          AND create_date >= (
            SELECT create_date FROM dj_jdgz_track_record WHERE id = ${id}
        );
    </update>
    <select id="getList" resultType="com.example.server.progressTrack.model.DjJdgzTrackRecord">
        SELECT
@@ -59,9 +69,6 @@
        WHERE
        a.IS_DELETE = 0
        and a.network_id != 10000
        <if test="userId!=null">
            AND a.TEAMGROUP_ID in (select teamgroup from sys_user where is_delete=0 and user_id=#{userId})
        </if>
        <if test="status==1">
            AND b.CURRENT_STATUS = 1
        </if>
@@ -74,6 +81,21 @@
        AND f.IS_DELETE = 0
        AND g.IS_DELETE = 0
        AND g.id = ${level1NetworkId}
        <if test="deptId!=null">
            and c.dept_id = ${deptId}
        </if>
        <if test="teamId!=null">
            and c.TEAMGROUP_ID = ${teamId}
        </if>
        <if test="cabinId!=null">
            and c.cabin_id LIKE '%${cabinId}%'
        </if>
        <if test="type!=null and type!=''">
            and c.type = #{type}
        </if>
        <if test="name!=null and name!=''">
            and c.name LIKE '%${name}%'
        </if>
        <if test="status==0">
            GROUP BY
            c.id
@@ -89,8 +111,8 @@
        select GENERAL_REPAIR_UNIT || ',' || GENERAL_REPAIR_UNIT_DIRECTOR || ',' ||
               GENERAL_REPAIR_UNIT_CONTACT                                              AS generalRepair,
               REPAIR_UNIT || ',' || REPAIR_UNIT_DIRECTOR || ',' || REPAIR_UNIT_CONTACT AS `repair`,
               track_person || ',' || track_person_contact                              AS trackPerson,
               tracked_person || ',' || tracked_person_contact                          AS trackedPerson,
               track_person || ',' || track_person_unit || ',' || track_person_contact  AS trackPerson,
               tracked_person || ',' || tracked_person_unit || ',' || tracked_person_contact  AS trackedPerson,
               track_method,
               track_location,
               CURRENT_STATUS,
@@ -194,8 +216,8 @@
        b.GENERAL_REPAIR_UNIT|| ',' || b.GENERAL_REPAIR_UNIT_DIRECTOR|| ',' ||
        b.GENERAL_REPAIR_UNIT_CONTACT AS generalRepair,
        b.REPAIR_UNIT|| ',' || b.REPAIR_UNIT_DIRECTOR|| ',' || b.REPAIR_UNIT_CONTACT AS `repair`,
        b.track_person|| ',' || b.track_person_contact AS trackPerson,
        b.tracked_person|| ',' || b.tracked_person_contact AS trackedPerson,
        b.track_person|| ',' || b.track_person_unit || ',' || b.track_person_contact AS trackPerson,
        b.tracked_person|| ',' || b.tracked_person_unit || ',' || b.tracked_person_contact AS trackedPerson,
        b.track_method,
        b.track_location,
        b.track_location,
@@ -213,7 +235,7 @@
        LEFT JOIN dj_jdgz_network_level2 e ON e.id = d.NETWORK_ID
        LEFT JOIN dj_jdgz_network_level1_list f ON f.id = e.LEVEL1_NODE_ID
        LEFT JOIN dj_jdgz_network_level1 g ON g.id = c.LEVEL1_NETWORK_ID
        LEFT JOIN dj_sys_teamgroup_class h ON h.id = a.TEAMGROUP_ID
        LEFT JOIN dj_sys_teamgroup_class h ON h.id = c.TEAMGROUP_ID
        WHERE
        a.IS_DELETE = 0
        and a.network_id != 10000
src/main/resources/mapper/progressTrack/ExportRecord.xml
New file
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.server.progressTrack.dao.ExportRecordDao">
    <select id="getList" resultType="com.example.server.progressTrack.model.ExportRecord">
        select a.*, b.user_name
        from export_record a
                 left join sys_user b on b.user_id = a.creator
    </select>
</mapper>
src/main/resources/mapper/progressTrack/ImportRecord.xml
New file
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.server.progressTrack.dao.ImportRecordDao">
    <select id="getList" resultType="com.example.server.progressTrack.model.ImportRecord">
        select a.*, b.user_name
        from import_record a
        left join sys_user b on b.user_id = a.creator
    </select>
</mapper>
src/main/resources/templateFile/Èý¼¶ÍøÂçͼµ¼ÈëÄ£°å.xlsx
Binary files differ
src/main/resources/templateFile/¸ú×ټǼµ¼ÈëÄ£°å.xlsx
Binary files differ
target/classes/mapper/progressTrack/DjJdgzShipDao.xml
File was deleted