jinlin
2025-04-28 efce7ce3e63712ecc8b4c3039a73b508fc3ea880
修改
40个文件已修改
1个文件已添加
1016 ■■■■ 已修改文件
src/main/java/com/example/client/service/DismantTrackService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/ImportLevel3Service.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/ImportTrackRecordService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level1AddOrUpdate.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level1ViewService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level2AddOrUpdate.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level2ViewService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level3AddOrUpdate.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level3ManageService.java 96 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level3View2Service.java 291 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level3ViewService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/StatisProductService.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/StatisReportsService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/SubunitService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/TrackRecordManageService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/utils/ColorDescriptionComboBox.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/utils/CustomPanel.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/DataSync/service/DataSyncService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/Dto/StatistProductDto.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/Dto/TableNodeDto.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3Dao.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3ListDao.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/model/DjJdgzTrackRecord.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzDismantTrackService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1ListService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1Service.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel2ListService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3ListService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/NetWorkDiagramService.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/db/csiczb1.db 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2ListDao.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templateFile/三级网络图导入模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templateFile/跟踪记录导入模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/DismantTrackService.java
@@ -62,7 +62,7 @@
        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(null);
        JComboBoxItem[] cabinList = cabinService.getList();
        String[] typeList = new String[]{
                "","改装", "加装", "换装", "修理","改进性修理"
                "","改换装","修理","改进性修理","不复装设备"
        };
        List<DjJdgzShip> shipList = djJdgzShipService.getList();
        Map<String, Long> shipMap = new HashMap<>();
@@ -114,7 +114,7 @@
        top.add(query, new GBC(6, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        List<ColumnDto> columnDto = new ArrayList<>();
        list = level3Service.getList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0],null, null);
        list = level3Service.getList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0],null, null,null);
        if (list == null || list.size() == 0) {
            JOptionPane.showMessageDialog(null, "还未录入三级网络图数据", "提示", JOptionPane.WARNING_MESSAGE);
            return null;
@@ -140,7 +140,7 @@
                String type = comboBox4.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null, null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null, null,null);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
@@ -179,7 +179,7 @@
                        String type = comboBox4.getSelectedItem().toString();
                        Long shipId = shipMap.get(content);
                        list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null,null);
                        list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null,null,null);
                        CommonTable.refreshTable(list, columnDto, subTable);
                        subTable.setRowHeight(25);
@@ -209,7 +209,7 @@
                String type = comboBox4.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null, null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null, null,null);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
@@ -237,7 +237,7 @@
                String type = comboBox4.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null,null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null,null,null);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
@@ -265,7 +265,7 @@
                String type = comboBox4.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null, null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null, null,null);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
@@ -288,7 +288,7 @@
        query.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                list = level3Service.getList(null, null, null, null, null,null, sb.getText());
                list = level3Service.getList(null, null, null, null, null,null,null, sb.getText());
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
src/main/java/com/example/client/service/ImportLevel3Service.java
@@ -303,9 +303,9 @@
                                JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(null);
                                JComboBoxItem[] cabinList = cabinService.getList();
                                String[] typeList = new String[]{
                                        "","改装", "加装", "换装", "修理","改进性修理"
                                        "","改换装","修理","改进性修理","不复装设备"
        };
                                List<DjJdgzNetworkLevel3> list = level3Service.getList(null, deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0],0,null);
                                List<DjJdgzNetworkLevel3> list = level3Service.getList(null, deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0],0,0,null);
                                CommonTable.refreshTable(list, columnDto, subTable);
                                level3ManageService.tableModelListener(list, subTable, jFrame);
                                System.out.println("导入成功时间" + new Date());
src/main/java/com/example/client/service/ImportTrackRecordService.java
@@ -92,9 +92,11 @@
        JLabel label1 = new JLabel("一级网络图节点");
        JComboBox<JComboBoxItem> comboBox1 = new JComboBox<>();
        comboBox1.setModel(new DefaultComboBoxModel<>(level2List));
        comboBox1.setSelectedIndex(-1);
        JLabel label2 = new JLabel("二级网络图节点");
        JComboBox<JComboBoxItem> comboBox2 = new JComboBox<>(level2NodeList);
        comboBox2.setSelectedIndex(-1);
        comboBox2.setRenderer(new DefaultListCellRenderer() {
            @Override
            public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
@@ -331,7 +333,7 @@
                                JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(null);
                                JComboBoxItem[] cabinList = cabinService.getList();
                                String[] typeList = new String[]{
                "","改装", "加装", "换装", "修理","改进性修理"
                "","改换装","修理","改进性修理","不复装设备"
        };
                                List<DjJdgzTrackRecord> list = djJdgzTrackRecordService.getList(level1Id[0], deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], 0,0, null);
                                CommonTable.refreshTable(list, columnDto, subTable);
src/main/java/com/example/client/service/Level1AddOrUpdate.java
@@ -126,7 +126,7 @@
        frame1.setVisible(true);
        mxGraph graph = new mxGraph();
        graph = netWorkDiagramService.getCsDiagram(graph,data.getContent(),null,diagram.getWidth(),diagram.getHeight());
        graph = netWorkDiagramService.getCsDiagram(graph,data.getContent(),null,diagram.getWidth(),diagram.getHeight(),null);
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
        graphComponent.setDragEnabled(false);
src/main/java/com/example/client/service/Level1ViewService.java
@@ -100,7 +100,7 @@
        String json = list.get(0).getContent();
        List<NetworkNodeStatusDto> nodeStatusList = level1Service.getNodeStatusData(list.get(0).getId());
        graph = netWorkDiagramService.getCsDiagram(graph, json, nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height);
        graph = netWorkDiagramService.getCsDiagram(graph, json, nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height,null);
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
@@ -129,7 +129,7 @@
                    int r = subTable.getSelectedRow();
                    DjJdgzNetworkLevel1 data = list.get(r);
                    List<NetworkNodeStatusDto> nodeStatusList = level1Service.getNodeStatusData(data.getId());
                    mxGraph csDiagram = 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,null);
                    if (nodeStatusList != null && nodeStatusList.size() > 0) {
                        graph2[0] = csDiagram;
                    } else {
src/main/java/com/example/client/service/Level2AddOrUpdate.java
@@ -170,7 +170,7 @@
        mxGraph graph = new mxGraph();
        DjJdgzNetworkLevel2 djJdgzNetworkLevel2 = level2Service.get(data.getId());
        graph = netWorkDiagramService.getCsDiagram(graph,djJdgzNetworkLevel2.getContent(),null,diagram.getWidth(),diagram.getHeight());
        graph = netWorkDiagramService.getCsDiagram(graph,djJdgzNetworkLevel2.getContent(),null,diagram.getWidth(),diagram.getHeight(),null);
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
        graphComponent.setDragEnabled(false);
src/main/java/com/example/client/service/Level2ViewService.java
@@ -3,6 +3,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.DiagramNodeDto;
import com.example.server.progressTrack.Dto.NetworkNodeStatusDto;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel1;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel2;
@@ -11,6 +12,7 @@
import com.example.server.progressTrack.service.NetWorkDiagramService;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -25,6 +27,8 @@
public class Level2ViewService {
    @Autowired
    private DjJdgzNetworkLevel2Service level2Service;
    @Autowired
    private DjJdgzNetworkLevel1Service level1Service;
    @Autowired
    private NetWorkDiagramService netWorkDiagramService;
@@ -41,7 +45,7 @@
        // åˆ›å»ºå­è¡¨æ ¼
        List<ColumnDto> columnDto = new ArrayList<>();
        List<DjJdgzNetworkLevel2> list = level2Service.getList(null);
        List<DjJdgzNetworkLevel1> list = level1Service.getList(null);
        //columnDto.add(new ColumnDto("ID", "id", -1, null,false));
        if (list == null || list.size() == 0) {
            JOptionPane.showMessageDialog(null, "还未录入二级网络图数据", "提示", JOptionPane.WARNING_MESSAGE);
@@ -49,8 +53,8 @@
        }
        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));
        columnDto.add(new ColumnDto("工程", "ProjectName", 270, null, false, null, null));
        //columnDto.add(new ColumnDto("一级节点", "processName", 125, null, false, null, null));
        JTable subTable = CommonTable.createCommonTable(list, columnDto);
        subTable.setRowHeight(25);
@@ -86,10 +90,14 @@
        panel.add(hSplitPane, BorderLayout.CENTER);
        mxGraph graph = new mxGraph();
        String json = list.get(0).getContent();
        List<NetworkNodeStatusDto> nodeStatusList = level2Service.getNodeStatusData(list.get(0).getId());
        graph = netWorkDiagramService.getCsDiagram(graph, json, nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height);
        List<DiagramNodeDto> list2 = level1Service.getNodeList(list.get(0).getId());
        List<DiagramNodeDto> list22 = level1Service.getNodeList2(list.get(0).getId());
        String json = netWorkDiagramService.createSimpleDiagram(list2);
        List<NetworkNodeStatusDto> nodeStatusList = level1Service.getNodeStatus(list.get(0).getId());
        graph = netWorkDiagramService.getCsDiagram(graph, json, nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height,list22);
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
@@ -116,10 +124,14 @@
                if (e.getButton() == MouseEvent.BUTTON1) {
                    // å¾—到选中的行列的索引值
                    int r = subTable.getSelectedRow();
                    DjJdgzNetworkLevel2 data = list.get(r);
                    List<NetworkNodeStatusDto> nodeStatusList = level2Service.getNodeStatusData(data.getId());
                    mxGraph csDiagram = netWorkDiagramService.getCsDiagram(graph2[0], data.getContent(), nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height);
                    if (nodeStatusList != null && nodeStatusList.size() > 0) {
                    List<DiagramNodeDto> list2 = level1Service.getNodeList(list.get(r).getId());
                    String json = netWorkDiagramService.createSimpleDiagram(list2);
                    List<NetworkNodeStatusDto> nodeStatusList = level1Service.getNodeStatus(list.get(r).getId());
                    List<DiagramNodeDto> list22 = level1Service.getNodeList2(list.get(r).getId());
                    mxGraph csDiagram = netWorkDiagramService.getCsDiagram(graph2[0], json, nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height,list22);
                    if (StringUtils.isNotBlank(json)) {
                        graph2[0] = csDiagram;
                    } else {
                        graph2[0].removeCells(graph2[0].getChildVertices(graph2[0].getDefaultParent()));
src/main/java/com/example/client/service/Level3AddOrUpdate.java
@@ -69,7 +69,7 @@
        List<ColumnDto> columnDto = new ArrayList<>();
        List<DjJdgzNetworkLevel3List> list = level3ListService.getList(data.getId());
        if (list.size() == 0) {
            list = level3ListService.getDefult();
            list = level3ListService.getDefult(data.getType());
        }
        for (DjJdgzNetworkLevel3List item : list) {
            if (item.getTeamgroupId() == null) {
@@ -140,7 +140,7 @@
        frame1.setVisible(true);
        mxGraph graph = new mxGraph();
        graph = netWorkDiagramService.getCsDiagram(graph, data.getContent(), null, diagram.getWidth(), diagram.getHeight());
        graph = netWorkDiagramService.getCsDiagram(graph, data.getContent(), null, diagram.getWidth(), diagram.getHeight(),null);
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
        graphComponent.setDragEnabled(false);
src/main/java/com/example/client/service/Level3ManageService.java
@@ -75,7 +75,7 @@
        JComboBoxItem[] cabinList = cabinService.getList();
        JComboBoxItem[] deptList = sysTeamGroupClassService.getDeptList();
        String[] typeList = new String[]{
                "","改装", "加装", "换装", "修理","改进性修理"
                "","改换装","修理","改进性修理","不复装设备"
        };
        JComboBoxItem[] isealCabin = {
                new JComboBoxItem(10000L, ""),
@@ -109,6 +109,10 @@
        JComboBox<JComboBoxItem> comboBox5 = new JComboBox<>(isealCabin);
        comboBox5.setPreferredSize(new Dimension(185, 28));
        JLabel JLabel6 = new JLabel("是否联调");
        JComboBox<JComboBoxItem> comboBox6 = new JComboBox<>(isealCabin);
        comboBox6.setPreferredSize(new Dimension(185, 28));
        JTextField sb = new JTextField(16);
        JButton query = new JButton("查询");
@@ -128,12 +132,14 @@
        topJpanel.add(JLabel5, new GBC(0, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(comboBox5, new GBC(1, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(sb, new GBC(2, 1, 2, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(query, new GBC(4, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(btnInsert, new GBC(5, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(btnImport, new GBC(6, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(JLabel6, new GBC(2, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(comboBox6, new GBC(3, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(sb, new GBC(4, 1, 2, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(query, new GBC(6, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(btnInsert, new GBC(7, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(btnImport, new GBC(8, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        list = level3Service.getList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], Math.toIntExact(isealCabin[0].getId()), null);
        list = level3Service.getList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], Math.toIntExact(isealCabin[0].getId()),Math.toIntExact(isealCabin[0].getId()), null);
        List<TableButton> buttonList = new ArrayList<>();
        buttonList.add(new TableButton("edit", "编辑"));
        buttonList.add(new TableButton("del", "删除"));
@@ -141,16 +147,17 @@
        columnDto = new ArrayList<>();
        //columnDto.add(new ColumnDto("ID", "id", -1, null,false));
        columnDto.add(new ColumnDto("序号", "", 100, "autoCreate", false, null, null));
        columnDto.add(new ColumnDto("序号", "", 80, "autoCreate", false, null, null));
        //columnDto.add(new ColumnDto("工程", "ProjectName", 150, null, false, null, null));
        columnDto.add(new ColumnDto("部门", "deptId", 176, "dict", false, null, deptList));
        columnDto.add(new ColumnDto("专业", "teamgroupId", 176, "dict", false, null, teamList));
        columnDto.add(new ColumnDto("舱室", "cabinId", 100, "dict", false, null, cabinList));
        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", 80, "dict", false, null, cabinList));
        columnDto.add(new ColumnDto("类别", "type", 120, null, false, null, null));
        columnDto.add(new ColumnDto("一级网络图节点名称", "level1NodeName", 185, null, false, null, null));
        columnDto.add(new ColumnDto("二级网络图节点名称", "level2NodeName", 185, null, false, null, null));
        columnDto.add(new ColumnDto("三级网络图名称", "name", 176, null, false, null, null));
        columnDto.add(new ColumnDto("是否影响封舱", "isealCabin", 176, "dict", false, null, isealCabin));
        columnDto.add(new ColumnDto("是否影响封舱", "isealCabin", 160, "dict", false, null, isealCabin));
        columnDto.add(new ColumnDto("是否联调", "islt", 100, "dict", false, null, isealCabin));
        columnDto.add(new ColumnDto("操作", "", 190, "", true, buttonList, null));
        table = CommonTable.createCommonTable(list, columnDto);
@@ -171,9 +178,10 @@
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isCabin = (JComboBoxItem) comboBox5.getSelectedItem();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),Math.toIntExact(isLt.getId()),null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
@@ -199,9 +207,10 @@
                        JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                        JComboBoxItem isCabin = (JComboBoxItem) comboBox5.getSelectedItem();
                        String type = comboBox4.getSelectedItem().toString();
                        JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                        Long shipId = shipMap.get(content);
                        list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),null);
                        list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),Math.toIntExact(isLt.getId()),null);
                        CommonTable.refreshTable(list, columnDto, table);
                        table.setRowHeight(25);
@@ -222,8 +231,10 @@
                JComboBoxItem isCabin = (JComboBoxItem) comboBox5.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),Math.toIntExact(isLt.getId()),null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
@@ -240,9 +251,10 @@
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                JComboBoxItem isCabin = (JComboBoxItem) comboBox5.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),Math.toIntExact(isLt.getId()),null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
@@ -259,9 +271,10 @@
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                JComboBoxItem isCabin = (JComboBoxItem) comboBox5.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),Math.toIntExact(isLt.getId()),null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
@@ -280,8 +293,31 @@
                JComboBoxItem isCabin = (JComboBoxItem) comboBox5.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),Math.toIntExact(isLt.getId()),null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                tableModelListener(list, table, jFrame);
            }
        });
        comboBox6.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                String content = comboBox.getSelectedItem().toString();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                JComboBoxItem isCabin = (JComboBoxItem) comboBox5.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()),Math.toIntExact(isLt.getId()),null);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
@@ -295,7 +331,7 @@
        query.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                list = level3Service.getList(null, null, null, null, null,null, sb.getText());
                list = level3Service.getList(null, null, null, null, null,null,null, sb.getText());
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
@@ -346,7 +382,7 @@
    public void insert(JFrame jFrame,DjJdgzNetworkLevel3 data) {
        JFrame frame1 = new JFrame("新增三级网络图");
        frame1.setSize(500, 460);
        frame1.setSize(500, 500);
        frame1.setResizable(true);
        frame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        frame1.setLocationRelativeTo(null);
@@ -366,7 +402,7 @@
        JComboBoxItem[] cabinList = cabinService.getList();
        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(null);
        String[] typeList = new String[]{
                "","改装", "加装", "换装", "修理","改进性修理"
                "","改换装","修理","改进性修理","不复装设备"
        };
        JComboBoxItem[] isealCabin = {
                new JComboBoxItem(0L, "否"),
@@ -450,6 +486,13 @@
            comboBox7.setSelectedItem(BoxIteUtils.GetSelectItemById(isealCabin, Long.valueOf(data.getIsealCabin())));
        }
        JLabel JLabel789 = new JLabel("是否联调");
        JComboBox<JComboBoxItem> comboBox78 = new JComboBox<>(isealCabin);
        comboBox78.setPreferredSize(new Dimension(185, 28));
        if (data.getIslt()!=null){
            comboBox78.setSelectedItem(BoxIteUtils.GetSelectItemById(isealCabin, Long.valueOf(data.getIslt())));
        }
        JLabel JLabel8 = new JLabel("三级网络图名称");
        JTextField level3Name = new JTextField(16);
        if (StringUtils.isNotBlank(data.getName())){
@@ -526,11 +569,14 @@
        frame1.add(comboBox6, new GBC(1, 6, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel78, new GBC(0, 7, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(comboBox7, new GBC(1, 7, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel789, new GBC(0, 8, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(comboBox78, new GBC(1, 8, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(JLabel8, new GBC(0, 8, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(level3Name, new GBC(1, 8, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(btnSave, new GBC(0, 9, 2, 1).setWeight(1, 0));
        frame1.add(JLabel8, new GBC(0, 9, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        frame1.add(level3Name, new GBC(1, 9, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        frame1.add(btnSave, new GBC(0, 10, 2, 1).setWeight(1, 0));
        btnSave.addActionListener((e) -> {
            JComboBoxItem level1 = (JComboBoxItem) comboBox0.getSelectedItem();
@@ -539,6 +585,7 @@
            JComboBoxItem dept = (JComboBoxItem) comboBox3.getSelectedItem();
            JComboBoxItem team = (JComboBoxItem) comboBox4.getSelectedItem();
            JComboBoxItem isealCabinItem = (JComboBoxItem) comboBox7.getSelectedItem();
            JComboBoxItem iltItem = (JComboBoxItem) comboBox78.getSelectedItem();
            Set<JComboBoxItem> selectedItems = comboBox5.getSelectedItems();
            StringBuilder selectedIds = new StringBuilder();
            for (JComboBoxItem item : selectedItems) {
@@ -551,6 +598,7 @@
            data.setLevel2NodeId(level2Node.getId());
            data.setName(name);
            data.setIsealCabin(Math.toIntExact(isealCabinItem.getId()));
            data.setIslt(Math.toIntExact(iltItem.getId()));
            data.setDeptId(dept.getId());
            data.setTeamgroupId(team.getId());
            data.setTeamgroupName(team.getName());
@@ -562,7 +610,7 @@
                level3Service.insert(data);
            }
            list = level3Service.getList(level1Data.getShipId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], Math.toIntExact(isealCabin[0].getId()), null);
            list = level3Service.getList(level1Data.getShipId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], Math.toIntExact(isealCabin[0].getId()),Math.toIntExact(isealCabin[0].getId()), null);
            CommonTable.refreshTable(list, columnDto, table);
            table.setRowHeight(25);
src/main/java/com/example/client/service/Level3View2Service.java
@@ -2,26 +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.*;
import com.example.server.cabin.service.CabinService;
import com.example.server.progressTrack.Dto.TableNodeDto;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel1;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
import com.example.server.progressTrack.model.DjJdgzShip;
import com.example.server.progressTrack.service.*;
import com.example.server.teamGroup.service.SysTeamGroupClassService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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.*;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -46,16 +42,28 @@
    public JPanel createTable(Integer width, Integer height,JFrame frame) {
        JPanel panel = new JPanel(new BorderLayout());
        JPanel topJpanel = new JPanel();
        JPanel topJpanel1 = new JPanel(new BorderLayout());
        topJpanel1.setPreferredSize(new Dimension(width, 150));
        topJpanel1.setBackground(Color.WHITE);
        JPanel topJpanel2 = new JPanel();
        CustomPanel customPanel = new CustomPanel();
        customPanel.setPreferredSize(new Dimension(width, 50));
        customPanel.setBackground(Color.WHITE);
        topJpanel1.add(topJpanel2, BorderLayout.CENTER);
        topJpanel1.add(customPanel, BorderLayout.SOUTH);
        GridBagLayout layout = new GridBagLayout();
        topJpanel.setLayout(layout);
        topJpanel.setPreferredSize(new Dimension(width, 100));
        topJpanel.setBackground(Color.WHITE);
        topJpanel2.setLayout(layout);
        topJpanel2.setPreferredSize(new Dimension(width, 100));
        topJpanel2.setBackground(Color.WHITE);
        JPanel centerJpanel = new JPanel();
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(95,frame)));
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(145, frame)));
        centerJpanel.setBackground(Color.WHITE);
        panel.add(topJpanel, BorderLayout.NORTH);
        panel.add(topJpanel1, BorderLayout.NORTH);
        panel.add(centerJpanel, BorderLayout.CENTER);
        List<DjJdgzShip> shipList = djJdgzShipService.getList();
@@ -63,7 +71,13 @@
        JComboBoxItem[] cabinList = cabinService.getList();
        JComboBoxItem[] deptList = sysTeamGroupClassService.getDeptList();
        String[] typeList = new String[]{
                "","改装", "加装", "换装", "修理","改进性修理"
                "修理", "改换装", "改进性修理", "不复装设备"
        };
        JComboBoxItem[] isealCabin = {
                new JComboBoxItem(10000L, ""),
                new JComboBoxItem(0L, "否"),
                new JComboBoxItem(1L, "是"),
        };
        JLabel JLabel0 = new JLabel("工程");
@@ -88,12 +102,21 @@
        JComboBox<String> comboBox4 = new JComboBox<>(typeList);
        comboBox4.setPreferredSize(new Dimension(185, 28));
        JLabel JLabel5 = new JLabel("是否影响封舱");
        JComboBox<JComboBoxItem> comboBox56 = new JComboBox<>(isealCabin);
        comboBox56.setPreferredSize(new Dimension(185, 28));
        JLabel JLabel6 = new JLabel("是否联调");
        JComboBox<JComboBoxItem> comboBox6 = new JComboBox<>(isealCabin);
        comboBox6.setPreferredSize(new Dimension(185, 28));
        JTextField sb = new JTextField(16);
        JButton query = new JButton("查询");
        List<ColorDescription> colorDescriptions = new ArrayList<>();
        colorDescriptions.add(new ColorDescription("", "全部"));
        colorDescriptions.add(new ColorDescription("#3498DB", "进行中"));
        colorDescriptions.add(new ColorDescription("#F1C40F", "临期"));
        colorDescriptions.add(new ColorDescription("#F1C40F", "临期(7天)"));
        colorDescriptions.add(new ColorDescription("#E74C3C", "逾期"));
        colorDescriptions.add(new ColorDescription("#2ECC71", "正常完成"));
        colorDescriptions.add(new ColorDescription("#006400", "超期完成"));
@@ -102,35 +125,31 @@
        ColorDescriptionComboBox comboBox5 = new ColorDescriptionComboBox(colorDescriptions);
        JButton btnTjz = new JButton("设备进度统计总表");
        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));
        topJpanel2.add(JLabel0, new GBC(0, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel2.add(comboBox, new GBC(1, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(JLabel1, new GBC(2, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel2.add(comboBox1, new GBC(3, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(JLabel2, new GBC(4, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel2.add(comboBox2, new GBC(5, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(JLabel3, new GBC(6, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel2.add(comboBox3, new GBC(7, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(JLabel4, new GBC(8, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel2.add(comboBox4, new GBC(9, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        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));
        topJpanel.add(btnTjz, new GBC(5, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(JLabel5, new GBC(0, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel2.add(comboBox56, new GBC(1, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(JLabel6, new GBC(2, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(comboBox6, new GBC(3, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(sb, new GBC(4, 1, 2, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel2.add(query, new GBC(6, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(comboBox5, new GBC(7, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel2.add(btnTjz, new GBC(9, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        list = level3Service.getNodeList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], null);
        list = level3Service.getNodeList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], Math.toIntExact(isealCabin[0].getId()), Math.toIntExact(isealCabin[0].getId()), null);
        columnDto = new ArrayList<>();
        //columnDto.add(new ColumnDto("ID", "id", -1, null,false));
        columnDto.add(new ColumnDto("序号", "", 227, "autoCreate", false, null, null));
        //columnDto.add(new ColumnDto("工程", "ProjectName", 150, null, false, null, null));
        columnDto.add(new ColumnDto("设备名称", "name", 227, null, true, null, null));
        columnDto.add(new ColumnDto("设备拆卸出舱", "time1Color", 227, "Circle", true, null, null));
        columnDto.add(new ColumnDto("设备分交", "time2Color", 227, "Circle", true, null, null));
        columnDto.add(new ColumnDto("拆检鉴定", "time3Color", 227, "Circle", true, null, null));
        columnDto.add(new ColumnDto("设备返厂", "time4Color", 227, "Circle", true, null, null));
        columnDto.add(new ColumnDto("回装", "time5Color", 227, "Circle", true, null, null));
        columnDto = getColumnDtoByType(typeList[0]);
        table = CommonTable.createCommonTable(list, columnDto);
        table.setRowHeight(25);
@@ -148,9 +167,27 @@
                int row = table.rowAtPoint(point);
                int column = table.columnAtPoint(point);
                if (row <= list.size() && column > 1) {
                if (row <= list.size() && column > 3) {
                    List<TableNodeDto> filteredData = list;
                    if (comboBox5.getSelectedItem() instanceof String) {
                    } else {
                        ColorDescription selectedColorDescription = (ColorDescription) comboBox5.getSelectedItem();
                        if (selectedColorDescription != null) {
                            String selectedHexColor = selectedColorDescription.getHexColor();
                            if (StringUtils.isNotBlank(selectedHexColor)) {
                                filteredData = list.stream()
                                        .filter(dto -> dto.getTime1Color() != null && dto.getTime1Color().equals(selectedHexColor) ||
                                                dto.getTime2Color() != null && dto.getTime2Color().equals(selectedHexColor) ||
                                                dto.getTime3Color() != null && dto.getTime3Color().equals(selectedHexColor) ||
                                                dto.getTime4Color() != null && dto.getTime4Color().equals(selectedHexColor) ||
                                                dto.getTime5Color() != null && dto.getTime5Color().equals(selectedHexColor))
                                        .collect(Collectors.toList());
                            }
                        }
                    }
                    String hexColor = (String) table.getValueAt(row, column);
                    String tooltip = getTooltipText(hexColor);
                    String tooltip = getTooltipText(hexColor, filteredData.get(row));
                    table.setToolTipText(tooltip);
                } else {
                    table.setToolTipText(null);
@@ -167,15 +204,16 @@
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isCabin = (JComboBoxItem) comboBox56.getSelectedItem();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null);
                list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()), Math.toIntExact(isLt.getId()), null);
                columnDto = getColumnDtoByType(type);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            }
        });
        comboBox1.addItemListener(new ItemListener() {
@@ -195,8 +233,12 @@
                        JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                        String type = comboBox4.getSelectedItem().toString();
                        JComboBoxItem isCabin = (JComboBoxItem) comboBox56.getSelectedItem();
                        JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                        Long shipId = shipMap.get(content);
                        list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null);
                        list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()), Math.toIntExact(isLt.getId()), null);
                        columnDto = getColumnDtoByType(type);
                        CommonTable.refreshTable(list, columnDto, table);
                        table.setRowHeight(25);
@@ -215,10 +257,13 @@
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isCabin = (JComboBoxItem) comboBox56.getSelectedItem();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null);
                list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()), Math.toIntExact(isLt.getId()), null);
                columnDto = getColumnDtoByType(type);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
@@ -234,8 +279,12 @@
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isCabin = (JComboBoxItem) comboBox56.getSelectedItem();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null);
                list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()), Math.toIntExact(isLt.getId()), null);
                columnDto = getColumnDtoByType(type);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
@@ -252,9 +301,58 @@
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, null);
                JComboBoxItem isCabin = (JComboBoxItem) comboBox56.getSelectedItem();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()), Math.toIntExact(isLt.getId()), null);
                columnDto = getColumnDtoByType(type);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            }
        });
        comboBox56.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                String content = comboBox.getSelectedItem().toString();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isCabin = (JComboBoxItem) comboBox56.getSelectedItem();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()), Math.toIntExact(isLt.getId()), null);
                columnDto = getColumnDtoByType(type);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            }
        });
        comboBox6.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
                String content = comboBox.getSelectedItem().toString();
                JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
                JComboBoxItem team = (JComboBoxItem) comboBox2.getSelectedItem();
                JComboBoxItem cabin = (JComboBoxItem) comboBox3.getSelectedItem();
                String type = comboBox4.getSelectedItem().toString();
                JComboBoxItem isCabin = (JComboBoxItem) comboBox56.getSelectedItem();
                JComboBoxItem isLt = (JComboBoxItem) comboBox6.getSelectedItem();
                Long shipId = shipMap.get(content);
                list = level3Service.getNodeList(shipId, dept.getId(), team.getId(), cabin.getId(), type, Math.toIntExact(isCabin.getId()), Math.toIntExact(isLt.getId()), null);
                columnDto = getColumnDtoByType(type);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
@@ -266,8 +364,9 @@
        query.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                list = level3Service.getNodeList(null, null, null, null, null, sb.getText());
                String type = comboBox4.getSelectedItem().toString();
                list = level3Service.getNodeList(null, null, null, null, type, null, null, sb.getText());
                columnDto = getColumnDtoByType(type);
                CommonTable.refreshTable(list, columnDto, table);
                table.setRowHeight(25);
@@ -287,7 +386,42 @@
            public void actionPerformed(ActionEvent e) {
                String content = comboBox.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                statisProductService.createTable(frame,shipId);
                String type = comboBox4.getSelectedItem().toString();
                statisProductService.createTable(frame, shipId, type);
            }
        });
        comboBox5.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    if (comboBox5.getSelectedItem() instanceof String) {
                        return;
                    }
                    ColorDescription selectedColorDescription = (ColorDescription) comboBox5.getSelectedItem();
                    if (selectedColorDescription != null) {
                        String selectedHexColor = selectedColorDescription.getHexColor();
                        if (StringUtils.isNotBlank(selectedHexColor)) {
                            List<TableNodeDto> filteredData = list.stream()
                                    .filter(dto -> dto.getTime1Color() != null && dto.getTime1Color().equals(selectedHexColor) ||
                                            dto.getTime2Color() != null && dto.getTime2Color().equals(selectedHexColor) ||
                                            dto.getTime3Color() != null && dto.getTime3Color().equals(selectedHexColor) ||
                                            dto.getTime4Color() != null && dto.getTime4Color().equals(selectedHexColor) ||
                                            dto.getTime5Color() != null && dto.getTime5Color().equals(selectedHexColor))
                                    .collect(Collectors.toList());
                            CommonTable.refreshTable(filteredData, columnDto, table);
                        }else{
                            String type = comboBox4.getSelectedItem().toString();
                            list = level3Service.getNodeList(null, null, null, null, type, null, null, sb.getText());
                            columnDto = getColumnDtoByType(type);
                            CommonTable.refreshTable(list, columnDto, table);
                            table.setRowHeight(25);
                            table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                        }
                    }
                }
            }
        });
@@ -295,13 +429,13 @@
        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, Compute.ComputeHeightWithScroll(95,frame)));
        scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(145, frame)));
        centerJpanel.add(scrollPane);
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(95,frame)));
                scrollPane.setPreferredSize(new Dimension(width - 20,Compute.ComputeHeightWithScroll(95,frame)));
                centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(145, frame)));
                scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(145, frame)));
                centerJpanel.revalidate();
                centerJpanel.repaint();
                scrollPane.revalidate();
@@ -311,24 +445,65 @@
        return panel;
    }
    private JComboBoxItem[] createIsealCabinItems() {
        return new JComboBoxItem[]{
                new JComboBoxItem(10000L, ""),
                new JComboBoxItem(0L, "否"),
                new JComboBoxItem(1L, "是")
        };
    }
    private static String getTooltipText(String hexColor) {
    private List<ColumnDto> getColumnDtoByType(String type) {
        List<ColumnDto> columns = new ArrayList<>();
        if ("修理".equals(type)) {
            columns.add(new ColumnDto("序号", "", 100, "autoCreate", false, null, null));
            columns.add(new ColumnDto("设备名称", "name", 327, null, true, null, null));
            columns.add(new ColumnDto("是否影响封舱", "isealCabin", 160, "dict", false, null, createIsealCabinItems()));
            columns.add(new ColumnDto("是否联调", "islt", 100, "dict", false, null, createIsealCabinItems()));
            columns.add(new ColumnDto("设备拆卸出舱", "time1Color", 187, "Circle", true, null, null));
            columns.add(new ColumnDto("设备分交", "time2Color", 187, "Circle", true, null, null));
            columns.add(new ColumnDto("拆检鉴定", "time3Color", 187, "Circle", true, null, null));
            columns.add(new ColumnDto("设备返厂", "time4Color", 187, "Circle", true, null, null));
            columns.add(new ColumnDto("回装", "time5Color", 187, "Circle", true, null, null));
        } else if ("改换装".equals(type) || "改进性修理".equals(type)) {
            columns.add(new ColumnDto("序号", "", 144, "autoCreate", false, null, null));
            columns.add(new ColumnDto("设备名称", "name", 320, null, true, null, null));
            columns.add(new ColumnDto("是否影响封舱", "isealCabin", 320, "dict", false, null, createIsealCabinItems()));
            columns.add(new ColumnDto("是否联调", "islt", 144, "dict", false, null, createIsealCabinItems()));
            columns.add(new ColumnDto("设备到厂", "time1Color", 320, "Circle", true, null, null));
            columns.add(new ColumnDto("设备安装", "time2Color", 320, "Circle", true, null, null));
        } else if ("不复装设备".equals(type)) {
            columns.add(new ColumnDto("序号", "", 100, "autoCreate", false, null, null));
            columns.add(new ColumnDto("设备名称", "name", 320, null, true, null, null));
            columns.add(new ColumnDto("是否影响封舱", "isealCabin", 160, "dict", false, null, createIsealCabinItems()));
            columns.add(new ColumnDto("是否联调", "islt", 100, "dict", false, null, createIsealCabinItems()));
            columns.add(new ColumnDto("拆卸出舱", "time1Color", 155, "Circle", true, null, null));
            columns.add(new ColumnDto("入库", "time2Color", 155, "Circle", true, null, null));
            columns.add(new ColumnDto("存放位置", "time3Color", 155, "Circle", true, null, null));
            columns.add(new ColumnDto("移交T队", "time4Color", 155, "Circle", true, null, null));
            columns.add(new ColumnDto("备注", "remark", 300, null, false, null, null));
        }
        return columns;
    }
    private static String getTooltipText(String hexColor, TableNodeDto tableNodeDto) {
        switch (hexColor) {
            case "#3498DB":
                return "进行中";
            case "#F1C40F":
                return "临期";
                return tableNodeDto.getLqText();
            case "#E74C3C":
                return "逾期";
                return tableNodeDto.getYqText();
            case "#2ECC71":
                return "正常完成";
            case "#006400":
                return "超期完成";
                return tableNodeDto.getCqText();
            default:
                return "未开始";
        }
    }
}
src/main/java/com/example/client/service/Level3ViewService.java
@@ -41,7 +41,7 @@
        // åˆ›å»ºå­è¡¨æ ¼
        List<ColumnDto> columnDto = new ArrayList<>();
        List<DjJdgzNetworkLevel3> list = level3Service.getList(null, null, null, null, null,null,null);
        List<DjJdgzNetworkLevel3> list = level3Service.getList(null, null, null, null, null,null,null,null);
        //columnDto.add(new ColumnDto("ID", "id", -1, null,false));
@@ -81,7 +81,7 @@
        List<NetworkNodeStatusDto> nodeStatusList = level3Service.getNodeStatusData(id);
        graph = netWorkDiagramService.getCsDiagram(graph, json, nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height);
        graph = netWorkDiagramService.getCsDiagram(graph, json, nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height,null);
        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        graphComponent.setConnectable(false);
@@ -110,7 +110,7 @@
                    int r = subTable.getSelectedRow();
                    DjJdgzNetworkLevel3 data = list.get(r);
                    List<NetworkNodeStatusDto> nodeStatusList = level3Service.getNodeStatusData(data.getId());
                    graph2[0] = netWorkDiagramService.getCsDiagram(graph2[0], data.getContent(), nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height);
                    graph2[0] = netWorkDiagramService.getCsDiagram(graph2[0], data.getContent(), nodeStatusList, diagram.getPreferredSize().width, diagram.getPreferredSize().height,null);
                }
            }
        });
src/main/java/com/example/client/service/StatisProductService.java
@@ -18,7 +18,8 @@
public class StatisProductService {
    @Autowired
    DjJdgzNetworkLevel3Service djJdgzNetworkLevel3Service;
    public void createTable(JFrame jFrame, Long level1Id) {
    public void createTable(JFrame jFrame, Long level1Id, String type) {
        JFrame frame1 = new JFrame("设备进度统计总表");
        frame1.setSize(1500, 800);
        frame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
@@ -32,14 +33,56 @@
            }
        });
        List<StatistProductDto> list = djJdgzNetworkLevel3Service.getStatist(level1Id);
        List<StatistProductDto> list = djJdgzNetworkLevel3Service.getStatist(level1Id, type);
        if (type.equals("改进性修理") || type.equals("改换装")) {
            Object[][] headerRows = new Object[2][4];
            headerRows[0] = new Object[]{"部门/专业", "各节点的设备个数", ComplexTable.mergeCellX, "节点全部完成个数"};
            //此处2-5是不会显示出来的,因为1-4向下合并了一行 + å‘右合并了一列  ï¼Œ è€Œ2-5被这个矩形范围包括了
            headerRows[1] = new Object[]{ComplexTable.mergeCellY, "设备到厂", "设备安装", ComplexTable.mergeCellY};
        Object[][] headerRows = new Object[2][9];
            String[][] body = new String[list.size()][4];
            for (int i = 0; i < list.size(); i++) {
                StatistProductDto data = list.get(i);
                body[i][0] = data.getName();
                body[i][1] = String.valueOf(data.getDcsl());
                body[i][2] = String.valueOf(data.getAzsl());
                body[i][3] = String.valueOf(data.getWcsl());
            }
            JScrollPane scrollTable = new JScrollPane(new ComplexTable(headerRows, body, 367));
            frame1.add(scrollTable);
            frame1.setVisible(true);
        } else if (type.equals("不复装设备")) {
            Object[][] headerRows = new Object[2][6];
            headerRows[0] = new Object[]{"部门/专业", "各节点的设备个数",  ComplexTable.mergeCellX, ComplexTable.mergeCellX, ComplexTable.mergeCellX, "节点全部完成个数"};
            //此处2-5是不会显示出来的,因为1-4向下合并了一行 + å‘右合并了一列  ï¼Œ è€Œ2-5被这个矩形范围包括了
            headerRows[1] = new Object[]{ComplexTable.mergeCellY, "拆卸出舱", "入库", "存放位置","移交T队", ComplexTable.mergeCellY};
            String[][] body = new String[list.size()][6];
            for (int i = 0; i < list.size(); i++) {
                StatistProductDto data = list.get(i);
                body[i][0] = data.getName();
                body[i][1] = String.valueOf(data.getCcsl());
                body[i][2] = String.valueOf(data.getRksl());
                body[i][3] = String.valueOf(data.getCfsl());
                body[i][4] = String.valueOf(data.getYjsl());
                body[i][5] = String.valueOf(data.getWcsl());
            }
            JScrollPane scrollTable = new JScrollPane(new ComplexTable(headerRows, body, 245));
            frame1.add(scrollTable);
            frame1.setVisible(true);
        } else if (type.equals("修理")) {
            Object[][] headerRows = new Object[2][7];
        headerRows[0] = new Object[]{"部门/专业","各节点的设备个数", ComplexTable.mergeCellX,ComplexTable.mergeCellX,ComplexTable.mergeCellX,ComplexTable.mergeCellX,"节点全部完成个数"};
        //此处2-5是不会显示出来的,因为1-4向下合并了一行 + å‘右合并了一列  ï¼Œ è€Œ2-5被这个矩形范围包括了
        headerRows[1] = new Object[]{ComplexTable.mergeCellY, "设备拆卸出舱","设备分交","拆检鉴定","设备返厂","回装",ComplexTable.mergeCellY};
        String[][] body = new String[list.size()][9];
            String[][] body = new String[list.size()][7];
        for (int i = 0; i < list.size(); i++) {
            StatistProductDto data =list.get(i);
@@ -56,5 +99,6 @@
        frame1.add(scrollTable);
        frame1.setVisible(true);
    }
    }
}
src/main/java/com/example/client/service/StatisReportsService.java
@@ -114,8 +114,7 @@
    private void reportRecord(int column, Long level1NetworkId,Long teamgroupId) {
        JFrame frame1 = new JFrame("记录");
        frame1.setSize(500, 400);
        frame1.setResizable(false);
        frame1.setSize(1000, 500);
        frame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        frame1.setLocationRelativeTo(null);
        frame1.setVisible(true);
@@ -124,9 +123,9 @@
        List<ColumnDto> columnDto = new ArrayList<>();
        //columnDto.add(new ColumnDto("ID", "id", -1, null,false));
        columnDto.add(new ColumnDto("序号", "", (500  - 10) / 3, "autoCreate", false, null, null));
        columnDto.add(new ColumnDto("设备名称", "name", (500  - 10) / 3, null, false, null, null));
        columnDto.add(new ColumnDto("节点名称", "processName", (500  - 10) / 3, null, false, null, null));
        columnDto.add(new ColumnDto("序号", "", 50, "autoCreate", false, null, null));
        columnDto.add(new ColumnDto("设备名称", "name", 770, null, false, null, null));
        columnDto.add(new ColumnDto("节点名称", "processName", 160, null, false, null, null));
        JTable table = CommonTable.createCommonTable(list, columnDto);
        table.setRowHeight(25);
@@ -136,7 +135,7 @@
        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(500 - 20, 400));
        scrollPane.setPreferredSize(new Dimension(1000 - 20, 400));
        frame1.add(scrollPane);
    }
src/main/java/com/example/client/service/SubunitService.java
@@ -66,7 +66,7 @@
        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(null);
        JComboBoxItem[] cabinList = cabinService.getList();
        String[] typeList = new String[]{
                "","改装", "加装", "换装", "修理","改进性修理"
                "","改换装","修理","改进性修理","不复装设备"
        };
        List<DjJdgzShip> shipList = djJdgzShipService.getList();
        Map<String, Long> shipMap = new HashMap<>();
@@ -120,7 +120,7 @@
        jLeft.add(top, BorderLayout.NORTH);
        List<ColumnDto> columnDto = new ArrayList<>();
        list = level3Service.getList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0],null,null);
        list = level3Service.getList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0],null,null,null);
        if (list == null || list.size() == 0) {
            JOptionPane.showMessageDialog(null, "还未录入三级网络图数据", "提示", JOptionPane.WARNING_MESSAGE);
@@ -147,7 +147,7 @@
                String type = comboBox4.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null,null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null,null,null);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
@@ -185,7 +185,7 @@
                        String type = comboBox4.getSelectedItem().toString();
                        Long shipId = shipMap.get(content);
                        list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null,null);
                        list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null,null,null);
                        CommonTable.refreshTable(list, columnDto, subTable);
                        subTable.setRowHeight(25);
@@ -215,7 +215,7 @@
                String type = comboBox4.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null,null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null,null,null);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
@@ -243,7 +243,7 @@
                String type = comboBox4.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null,null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null,null,null);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
@@ -271,7 +271,7 @@
                String type = comboBox4.getSelectedItem().toString();
                Long shipId = shipMap.get(content);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null,null);
                list = level3Service.getList(shipId, dept.getId(), team.getId(), cabin.getId(), type,null,null,null);
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
@@ -294,7 +294,7 @@
        query.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                list = level3Service.getList(null, null, null, null, null,null,sb.getText());
                list = level3Service.getList(null, null, null, null, null,null,null,sb.getText());
                CommonTable.refreshTable(list, columnDto, subTable);
                subTable.setRowHeight(25);
src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java
@@ -7,6 +7,7 @@
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;
@@ -37,8 +38,15 @@
    private UploadFile uploadFile;
    @Autowired
    private DjJdgzDismantTrackService djJdgzDismantTrackService;
    @Autowired
    private DjJdgzNetworkLevel3ListService djJdgzNetworkLevel3ListService;
    public void openDialog(DjJdgzTrackRecord data, JFrame jFrame, Long level1Id, List<ColumnDto> columnDto, JTable table) {
        if (StringUtils.isBlank(data.getLevel3NodeName())) {
            DjJdgzNetworkLevel3List djJdgzNetworkLevel3List = djJdgzNetworkLevel3ListService.get(data.getLevel3NodeId());
            data.setLevel3NodeName(djJdgzNetworkLevel3List.getProcessName());
            data.setProcessName(djJdgzNetworkLevel3List.getProcessName());
        }
        JFrame frame1 = new JFrame(data.getLevel3NetworkName() + "跟踪记录");
        frame1.setSize(1200, 800);
        frame1.setResizable(false);
@@ -156,8 +164,8 @@
        JLabel JLabel10 = new JLabel("分承修单位");
        JTextField repairUnitDesc = new JTextField(16);
        if (StringUtils.isNotBlank(data.getRepairUnitContact())) {
            repairUnitDesc.setText(data.getRepairUnitContact());
        if (StringUtils.isNotBlank(data.getRepairUnit())) {
            repairUnitDesc.setText(data.getRepairUnit());
        }
        JLabel JLabel11 = new JLabel("负责人");
src/main/java/com/example/client/service/TrackRecordManageService.java
@@ -79,7 +79,7 @@
        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(null);
        String[] typeList = new String[]{
                "","改装", "加装", "换装", "修理","改进性修理"
                "","改换装","修理","改进性修理","不复装设备"
        };
        JComboBoxItem[] isealCabin = {
                new JComboBoxItem(10000L, ""),
@@ -330,6 +330,7 @@
        columnDto.add(new ColumnDto("二级节点", "level2NodeName", 120, null, false, null, null));
        columnDto.add(new ColumnDto("设备名称", "level3NetworkName", 120, null, false, null, null));
        columnDto.add(new ColumnDto("是否影响封舱", "isealCabin", 180, "dict", false, null, isealCabin));
        columnDto.add(new ColumnDto("是否联调", "islt", 180, "dict", false, null, isealCabin));
        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));
src/main/java/com/example/client/utils/ColorDescriptionComboBox.java
@@ -48,9 +48,11 @@
            @Override
            public void setItem(Object anObject) {
                // ç¦ç”¨è‡ªåŠ¨æ›´æ–°ç¼–è¾‘å™¨æ–‡æœ¬çš„è¡Œä¸º
                if (textField != null) {
                    textField.setText(defaultText); // å§‹ç»ˆæ˜¾ç¤ºé»˜è®¤æ–‡æœ¬
                if (anObject instanceof ColorDescription) {
                    ColorDescription cd = (ColorDescription) anObject;
                    textField.setText(cd.getDescription()); // è®¾ç½®ç¼–辑器文本为描述
                } else {
                    textField.setText(defaultText); // è®¾ç½®é»˜è®¤æ–‡æœ¬
                }
            }
        });
src/main/java/com/example/client/utils/CustomPanel.java
New file
@@ -0,0 +1,62 @@
package com.example.client.utils;
import javax.swing.*;
import java.awt.*;
public class CustomPanel extends JPanel {
    private static final int DIAMETER = 20; // åœ†çš„直径
    private static final int SPACING = 10;  // åœ†å’Œæ–‡å­—之间的间距
    private static class CircleInfo {
        String colorCode;
        String text;
        CircleInfo(String colorCode, String text) {
            this.colorCode = colorCode;
            this.text = text;
        }
    }
    public CustomPanel() {
        // æ·»åŠ å¤šä¸ªåœ†å½¢å’Œæ–‡å­—ä¿¡æ¯
        CircleInfo[] circleInfos = new CircleInfo[]{
                new CircleInfo("#3498DB", "进行中"),
                new CircleInfo("#F1C40F", "临期(7天)"),
                new CircleInfo("#E74C3C", "逾期"),
                new CircleInfo("#2ECC71", "正常完成"),
                new CircleInfo("#006400", "超期完成")
        };
        setCircleInfos(circleInfos);
    }
    private CircleInfo[] circleInfos;
    public void setCircleInfos(CircleInfo[] circleInfos) {
        this.circleInfos = circleInfos;
        revalidate();
        repaint();
    }
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        int x = 140; // èµ·å§‹ç»˜åˆ¶ä½ç½®
        int y = (getHeight() - DIAMETER) / 2; // åž‚直居中
        for (CircleInfo circleInfo : circleInfos) {
            // è§£æžé¢œè‰²ä»£ç å¹¶ç»˜åˆ¶åœ†å½¢
            Color color = Color.decode(circleInfo.colorCode);
            g.setColor(color);
            g.fillOval(x, y, DIAMETER, DIAMETER);
            // è®¾ç½®æ–‡å­—颜色和字体,并绘制文字
            g.setColor(Color.BLACK);
            g.setFont(new Font("宋体", Font.BOLD, 20));
            x += DIAMETER + SPACING; // æ›´æ–°ç»˜åˆ¶ä½ç½®
            g.drawString(circleInfo.text, x, y + DIAMETER / 2 + 5);
            x += g.getFontMetrics().stringWidth(circleInfo.text) + 20; // æ›´æ–°ç»˜åˆ¶ä½ç½®
        }
    }
}
src/main/java/com/example/server/DataSync/service/DataSyncService.java
@@ -66,7 +66,9 @@
        String mySite = (String) UserAndSiteUtils.get("site", "site");
        // å¼¹å‡ºæ–‡ä»¶é€‰æ‹©æ¡†ï¼Œè®©ç”¨æˆ·é€‰æ‹©ä¿å­˜ZIP文件的路径
        String outputZipPath = showSaveFileDialog(mySite + "同步数据包.zip");
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String outputZipPath = showSaveFileDialog(dateFormat.format(new Date()) + mySite + "同步数据包.zip");
        if (outputZipPath == null) {
            massage[0] = "用户取消保存,程序退出。"+ new Date();
@@ -154,6 +156,9 @@
            Path sourceDir = Paths.get(UnzipPath + "life-protection");
            Path targetDir = Paths.get(localPath + "life-protection");
            if (!Files.exists(sourceDir)) {
                Files.createDirectories(sourceDir);
            }
            // å¦‚果目标文件夹不存在,创建它
            if (!Files.exists(targetDir)) {
                Files.createDirectories(targetDir);
src/main/java/com/example/server/progressTrack/Dto/StatistProductDto.java
@@ -14,4 +14,10 @@
    private Integer fcsl;
    private Integer hzsl;
    private Integer wcsl;
    private Integer ccsl;
    private Integer rksl;
    private Integer cfsl;
    private Integer yjsl;
    private Integer dcsl;
    private Integer azsl;
}
src/main/java/com/example/server/progressTrack/Dto/TableNodeDto.java
@@ -18,6 +18,9 @@
    @ApiModelProperty(value = "当前状态")
    private Integer currentStatus;
    private Integer islt;
    private Integer isealCabin;
    private String processName;
    private String name;
@@ -27,4 +30,9 @@
    private String time4Color;
    private String time5Color;
    private String yqText;
    private String lqText;
    private String cqText;
    private String remark;
}
src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3Dao.java
@@ -21,7 +21,7 @@
@Mapper
public interface DjJdgzNetworkLevel3Dao extends BaseDao<DjJdgzNetworkLevel3> {
    List<DjJdgzNetworkLevel3> getList(Long shipId, Long deptId, Long teamId, Long cabinId, String type,Integer isealCabin,String name);
    List<DjJdgzNetworkLevel3> getList(Long shipId, Long deptId, Long teamId, Long cabinId, String type,Integer isealCabin,Integer isLt,String name);
    List<NetworkNodeStatusDto> getNodeStatusData(Long id);
    void deleteLevel3(Long id);
@@ -35,7 +35,9 @@
    JComboBoxItem[] getListByExport(Long projectId, Long deptId, Long teamId);
    List<TableNodeDto> getNodeList(Long shipId, Long deptId, Long teamId, Long cabinId, String type, String name);
    List<TableNodeDto> getNodeList(Long shipId, Long deptId, Long teamId, Long cabinId, String type,Integer isCabin,Integer islt, String name);
    List<StatistProductDto> getStatist(Long level1Id);
    List<StatistProductDto> getStatist(Long level1Id,String type);
    String getRemark(Long networkId, String type);
}
src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3ListDao.java
@@ -28,7 +28,7 @@
    List<DjJdgzNetworkLevel3List> getNextNode(Integer sort, Long networkId);
    List<DjJdgzNetworkLevel3List> getDefult();
    List<DjJdgzNetworkLevel3List> getDefult(Long defultId);
    List<DiagramNode2Dto> getAllNodeLevel3ByProject(Long level1NetworkId, Long userId);
src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java
@@ -41,4 +41,6 @@
    List<ReportRecordDto> getReportRecord(Long level1NetworkId, int column, Long teamgroupId);
    Long getIsExit(Long level3NetworkId, String processName);
    List<DjJdgzTrackRecord> getName(Long level3NetworkId);
}
src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3.java
@@ -34,6 +34,9 @@
    @ApiModelProperty(value = "是否影响封舱")
    private Integer isealCabin;
    @ApiModelProperty(value = "是否联调")
    private Integer islt;
    @ApiModelProperty(value = "班组专业ID")
    private Long teamgroupId;
src/main/java/com/example/server/progressTrack/model/DjJdgzTrackRecord.java
@@ -122,6 +122,10 @@
    @TableField(exist = false)
    @ApiModelProperty(value = "")
    private Integer islt;
    @TableField(exist = false)
    @ApiModelProperty(value = "")
    private Integer trackNum;
    @TableField(exist = false)
src/main/java/com/example/server/progressTrack/service/DjJdgzDismantTrackService.java
@@ -93,7 +93,7 @@
            sheetName = sheet.getSheetName(); //获取当前sheet名称
            sum = sum + num;
            List<DjJdgzNetworkLevel3> list = djJdgzNetworkLevel3Service.getList(null, null, null, null, null,null,null);
            List<DjJdgzNetworkLevel3> list = djJdgzNetworkLevel3Service.getList(null, null, null, null, null,null,null,null);
            JComboBoxItem[] list1 = cabinService.getList();
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1ListService.java
@@ -78,7 +78,7 @@
        data.setContent(simpleDiagram);
        djJdgzNetworkLevel1Service.update(data);
        netWorkDiagramService.getCsDiagram(graph,simpleDiagram,null,jPanel.getWidth(),jPanel.getHeight());
        netWorkDiagramService.getCsDiagram(graph,simpleDiagram,null,jPanel.getWidth(),jPanel.getHeight(),null);
    }
    public String getDiagram(Long networkId) {
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1Service.java
@@ -2,9 +2,12 @@
import com.example.client.dto.JComboBoxItem;
import com.example.client.service.BaseService;
import com.example.server.progressTrack.Dto.DiagramNodeDto;
import com.example.server.progressTrack.Dto.NetworkNodeStatusDto;
import com.example.server.progressTrack.Dto.ProjectDto;
import com.example.server.progressTrack.dao.DjJdgzNetworkLevel1Dao;
import com.example.server.progressTrack.dao.DjJdgzNetworkLevel1ListDao;
import com.example.server.progressTrack.dao.DjJdgzNetworkLevel2ListDao;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel1;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
@@ -12,7 +15,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -25,6 +31,14 @@
public class DjJdgzNetworkLevel1Service extends BaseService<DjJdgzNetworkLevel1Dao, DjJdgzNetworkLevel1> {
    @Autowired
    NetWorkDiagramService netWorkDiagramService;
    @Autowired
    private DjJdgzNetworkLevel1ListService djJdgzNetworkLevel1ListService;
    @Autowired
    private DjJdgzNetworkLevel1ListDao djJdgzNetworkLevel1ListDao;
    @Autowired
    private DjJdgzNetworkLevel2ListDao djJdgzNetworkLevel2ListDao;
    @Autowired
    private DjJdgzNetworkLevel2Service djJdgzNetworkLevel2Service;
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
@@ -38,7 +52,6 @@
    /**
     * èŽ·å–èŠ‚ç‚¹çŠ¶æ€æ•°æ®
     *
     */
    public List<NetworkNodeStatusDto> getNodeStatusData(Long id) {
        baseDao.setLevel1StatusNull(id);
@@ -97,4 +110,49 @@
        String statusDiagram = netWorkDiagramService.getStatusDiagram(json, null, nodeStatusData);
        return statusDiagram;
    }
    public List<DiagramNodeDto> getNodeList(Long id) {
        List<DiagramNodeDto> nodeList = djJdgzNetworkLevel1ListDao.getNodeList(id);
        JComboBoxItem[] level2List = djJdgzNetworkLevel2Service.getLevel2List(id);
        for (JComboBoxItem item : level2List) {
            List<DiagramNodeDto> nodeList2 = djJdgzNetworkLevel2ListDao.getNodeList(item.getId());
            nodeList.addAll(nodeList2);
        }
        Collections.sort(nodeList, new Comparator<DiagramNodeDto>() {
            @Override
            public int compare(DiagramNodeDto n1, DiagramNodeDto n2) {
                try {
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                    Date date1 = sdf.parse(n1.getRequiredCompletion());
                    Date date2 = sdf.parse(n2.getRequiredCompletion());
                    return date1.compareTo(date2);
                } catch (ParseException e) {
                    throw new IllegalArgumentException("Invalid date format. Please use the format 'yyMMdd'.", e);
                }
            }
        });
        return nodeList;
    }
    public List<NetworkNodeStatusDto> getNodeStatus(Long id) {
        List<NetworkNodeStatusDto> nodeStatusList = this.getNodeStatusData(id);
        JComboBoxItem[] level2List = djJdgzNetworkLevel2Service.getLevel2List(id);
        for (JComboBoxItem item : level2List) {
            List<NetworkNodeStatusDto> nodeStatusList2 = djJdgzNetworkLevel2Service.getNodeStatusData(item.getId());
            nodeStatusList.addAll(nodeStatusList2);
        }
        return nodeStatusList;
    }
    public List<DiagramNodeDto> getNodeList2(Long id) {
        List<DiagramNodeDto> nodeList2 =new ArrayList<>();
        JComboBoxItem[] level2List = djJdgzNetworkLevel2Service.getLevel2List(id);
        for (JComboBoxItem item : level2List) {
            nodeList2 = djJdgzNetworkLevel2ListDao.getNodeList(item.getId());
        }
        return nodeList2;
    }
}
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel2ListService.java
@@ -99,7 +99,7 @@
        DjJdgzNetworkLevel2 level2 = djJdgzNetworkLevel2Service.get(networkId);
        level2.setContent(simpleDiagram);
        djJdgzNetworkLevel2Service.update(level2);
        netWorkDiagramService.getCsDiagram(graph,simpleDiagram,null,jPanel.getWidth(),jPanel.getHeight());
        netWorkDiagramService.getCsDiagram(graph,simpleDiagram,null,jPanel.getWidth(),jPanel.getHeight(),null);
    }
    /**
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3ListService.java
@@ -1,5 +1,6 @@
package com.example.server.progressTrack.service;
import com.example.client.dto.ColumnDto;
import com.example.client.dto.JComboBoxItem;
import com.example.client.service.BaseService;
import com.example.server.progressTrack.Dto.DiagramMajorDto;
@@ -16,6 +17,7 @@
import org.springframework.stereotype.Service;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -63,8 +65,16 @@
        return djJdgzNetworkLevel3List;
    }
    public List<DjJdgzNetworkLevel3List> getDefult() {
        return baseDao.getDefult();
    public List<DjJdgzNetworkLevel3List> getDefult(String type) {
        Long defultId = null;
        if (type.equals("改进性修理")||type.equals("改换装")){
            defultId = 10002L;
           } else if (type.equals("不复装设备")) {
            defultId = 10001L;
        }else if (type.equals("修理")) {
            defultId = 10000L;
        }
        return baseDao.getDefult(defultId);
    }
    public void save(List<DjJdgzNetworkLevel3List> list, Long networkId, JPanel jPanel, mxGraph graph) {
        //baseDao.deleteAll(networkId);
@@ -83,7 +93,7 @@
        data.setContent(simpleDiagram);
        djJdgzNetworkLevel3Service.update(data);
        netWorkDiagramService.getCsDiagram(graph,simpleDiagram,null,jPanel.getWidth(),jPanel.getHeight());
        netWorkDiagramService.getCsDiagram(graph,simpleDiagram,null,jPanel.getWidth(),jPanel.getHeight(),null);
    }
    public JComboBoxItem[] getListBothItem(Long networkId) {
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java
@@ -51,8 +51,8 @@
    @Value("${zt.oss.local-path}")
    private String path;
    public List<StatistProductDto> getStatist(Long level1Id) {
        return baseDao.getStatist(level1Id);
    public List<StatistProductDto> getStatist(Long level1Id,String type) {
        return baseDao.getStatist(level1Id,type);
    }
    enum StatusEnum {zy, jxz, lq, yq, zcwc, cqwc}
@@ -60,8 +60,8 @@
    String[] fillColorArr = {"#e5e5e5", "#3498DB", "#F1C40F", "#E74C3C", "#2ECC71", "#006400"};
    String[] fontColorArr = {"#e5e5e5", "#3498DB", "#F1C40F", "#E74C3C", "#2ECC71", "#006400"};
    public List<DjJdgzNetworkLevel3> getList(Long shipId, Long deptId, Long teamId, Long cabinId, String type,Integer isealCabin, String name) {
        List<DjJdgzNetworkLevel3> list = baseDao.getList(shipId, deptId, teamId, cabinId, type,isealCabin, name);
    public List<DjJdgzNetworkLevel3> getList(Long shipId, Long deptId, Long teamId, Long cabinId, String type, Integer isealCabin,Integer isLt, String name) {
        List<DjJdgzNetworkLevel3> list = baseDao.getList(shipId, deptId, teamId, cabinId, type, isealCabin,isLt, name);
        return list;
    }
@@ -135,13 +135,6 @@
            sheetName = sheet.getSheetName(); //获取当前sheet名称
            sum = sum + num;
            Map<Integer, String> mapProcessName = new HashMap<>();
            mapProcessName.put(1, "设备拆卸出舱");
            mapProcessName.put(2, "设备分交");
            mapProcessName.put(3, "拆检鉴定");
            mapProcessName.put(4, "设备返厂");
            mapProcessName.put(5, "回装");
            Map<String, String> mapTeamGroup = sysTeamGroupClassService.getMapGroup(false, "hld");
            JComboBoxItem[] cabinList = cabinService.getList();
            JComboBoxItem[] deptList = sysTeamGroupClassService.getDeptList();
@@ -173,25 +166,30 @@
                String name = ImportUtil.getCellValue(row, 0, pattern);
                String isealCabinStr = ImportUtil.getCellValue(row, 1, pattern);
                String deptStr = ImportUtil.getCellValue(row, 2, pattern);
                String teamGroupStr = ImportUtil.getCellValue(row, 3, pattern);
                String cabinStr = ImportUtil.getCellValue(row, 4, pattern);
                String typeStr = ImportUtil.getCellValue(row, 5, pattern);
                String time1 = ImportUtil.getCellValue(row, 6, pattern);
                String time2 = ImportUtil.getCellValue(row, 7, pattern);
                String time3 = ImportUtil.getCellValue(row, 8, pattern);
                String time4 = ImportUtil.getCellValue(row, 9, pattern);
                String time5 = ImportUtil.getCellValue(row, 10, pattern);
                String repairUnit = ImportUtil.getCellValue(row, 11, pattern);
                String repairUnitDirector = ImportUtil.getCellValue(row, 12, pattern);
                String repairUnitContact = ImportUtil.getCellValue(row, 13, pattern);
                String generalRepairUnit = ImportUtil.getCellValue(row, 14, pattern);
                String generalRepairUnitDirector = ImportUtil.getCellValue(row, 15, pattern);
                String generalRepairUnitContact = ImportUtil.getCellValue(row, 16, pattern);
                String isltStr = ImportUtil.getCellValue(row, 2, pattern);
                String deptStr = ImportUtil.getCellValue(row, 3, pattern);
                String teamGroupStr = ImportUtil.getCellValue(row, 4, pattern);
                String cabinStr = ImportUtil.getCellValue(row, 5, pattern);
                String typeStr = ImportUtil.getCellValue(row, 6, pattern);
                String time1 = ImportUtil.getCellValue(row, 7, pattern);
                String time2 = ImportUtil.getCellValue(row, 8, pattern);
                String time3 = ImportUtil.getCellValue(row, 9, pattern);
                String time4 = ImportUtil.getCellValue(row, 10, pattern);
                String time5 = ImportUtil.getCellValue(row, 11, pattern);
                String repairUnit = ImportUtil.getCellValue(row, 12, pattern);
                String repairUnitDirector = ImportUtil.getCellValue(row, 13, pattern);
                String repairUnitContact = ImportUtil.getCellValue(row, 14, pattern);
                String generalRepairUnit = ImportUtil.getCellValue(row, 15, pattern);
                String generalRepairUnitDirector = ImportUtil.getCellValue(row, 16, pattern);
                String generalRepairUnitContact = ImportUtil.getCellValue(row, 17, pattern);
                Integer isealCabin = 0;
                Integer islt = 0;
                if (isealCabinStr.equals("是")){
                    isealCabin = 1;
                }
                if (isltStr.equals("是")) {
                    islt = 1;
                }
                Long id = UUIDUtil.generateId();
@@ -207,6 +205,7 @@
                    data.setLevel2NetworkId(level2NetworkId);
                    data.setLevel2NodeId(level2NodeId);
                    data.setIsealCabin(isealCabin);
                    data.setIslt(islt);
                }
                if (StringUtils.isEmpty(deptStr)) {
@@ -270,21 +269,29 @@
                }
                if (StringUtils.isNotBlank(time1)) {
                    String Pname = "";
                    if (typeStr.equals("改换装")||typeStr.equals("改进性修理")){
                        Pname = "设备到厂";
                    }else if(typeStr.equals("修理")){
                        Pname = "设备拆卸出舱";
                    }else if(typeStr.equals("不复装设备")){
                        Pname = "拆卸出舱";
                    }
                    if (time1.matches("[0-9/]+")) {
                        time1 = time1.replace("/", "-");
                        node.setRequiredCompletionTime(time1);
                        node.setProcessName(mapProcessName.get(1));
                        node.setProcessName(Pname);
                        node.setSort(1);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time1.matches("[0-9.]+")) {
                        time1 = time1.replace(".", "-");
                        node.setRequiredCompletionTime(time1);
                        node.setProcessName(mapProcessName.get(1));
                        node.setProcessName(Pname);
                        node.setSort(1);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time1.matches("[0-9-]+")) {
                        node.setRequiredCompletionTime(time1);
                        node.setProcessName(mapProcessName.get(1));
                        node.setProcessName(Pname);
                        node.setSort(1);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else {
@@ -297,20 +304,28 @@
                    if (node.getId() != null) {
                        node.setId(null);
                    }
                    String Pname = "";
                    if (typeStr.equals("改换装")||typeStr.equals("改进性修理")){
                        Pname = "设备安装";
                    }else if(typeStr.equals("修理")){
                        Pname = "设备分交";
                    }else if(typeStr.equals("不复装设备")){
                        Pname = "入库";
                    }
                    if (time2.matches("[0-9/]+")) {
                        node.setRequiredCompletionTime(time2);
                        node.setProcessName(mapProcessName.get(2));
                        node.setProcessName(Pname);
                        node.setSort(2);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time2.matches("[0-9.]+")) {
                        time2 = time2.replace(".", "-");
                        node.setRequiredCompletionTime(time2);
                        node.setProcessName(mapProcessName.get(2));
                        node.setProcessName(Pname);
                        node.setSort(2);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time2.matches("[0-9-]+")) {
                        node.setRequiredCompletionTime(time2);
                        node.setProcessName(mapProcessName.get(2));
                        node.setProcessName(Pname);
                        node.setSort(2);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else {
@@ -323,21 +338,27 @@
                    if (node.getId() != null) {
                        node.setId(null);
                    }
                    String Pname = "";
                    if(typeStr.equals("修理")){
                        Pname = "拆检鉴定";
                    }else if(typeStr.equals("不复装设备")){
                        Pname = "存放位置";
                    }
                    if (time3.matches("[0-9/]+")) {
                        time3 = time3.replace("/", "-");
                        node.setRequiredCompletionTime(time3);
                        node.setProcessName(mapProcessName.get(3));
                        node.setProcessName(Pname);
                        node.setSort(3);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time3.matches("[0-9.]+")) {
                        time3 = time3.replace(".", "-");
                        node.setRequiredCompletionTime(time3);
                        node.setProcessName(mapProcessName.get(3));
                        node.setProcessName(Pname);
                        node.setSort(3);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time3.matches("[0-9-]+")) {
                        node.setRequiredCompletionTime(time3);
                        node.setProcessName(mapProcessName.get(3));
                        node.setProcessName(Pname);
                        node.setSort(3);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else {
@@ -350,21 +371,27 @@
                    if (node.getId() != null) {
                        node.setId(null);
                    }
                    String Pname = "";
                    if(typeStr.equals("修理")){
                        Pname = "设备返厂";
                    }else if(typeStr.equals("不复装设备")){
                        Pname = "移交T队";
                    }
                    if (time4.matches("[0-9/]+")) {
                        time4 = time4.replace("/", "-");
                        node.setRequiredCompletionTime(time4);
                        node.setProcessName(mapProcessName.get(4));
                        node.setProcessName(Pname);
                        node.setSort(4);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time4.matches("[0-9.]+")) {
                        time4 = time4.replace(".", "-");
                        node.setRequiredCompletionTime(time4);
                        node.setProcessName(mapProcessName.get(4));
                        node.setProcessName(Pname);
                        node.setSort(4);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time4.matches("[0-9-]+")) {
                        node.setRequiredCompletionTime(time4);
                        node.setProcessName(mapProcessName.get(4));
                        node.setProcessName(Pname);
                        node.setSort(4);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else {
@@ -380,18 +407,18 @@
                    if (time5.matches("[0-9/]+")) {
                        time5 = time5.replace("/", "-");
                        node.setRequiredCompletionTime(time5);
                        node.setProcessName(mapProcessName.get(5));
                        node.setProcessName("回装");
                        node.setSort(5);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time5.matches("[0-9.]+")) {
                        time5 = time5.replace(".", "-");
                        node.setRequiredCompletionTime(time5);
                        node.setProcessName(mapProcessName.get(5));
                        node.setProcessName("回装");
                        node.setSort(5);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else if (time5.matches("[0-9-]+")) {
                        node.setRequiredCompletionTime(time5);
                        node.setProcessName(mapProcessName.get(5));
                        node.setProcessName("回装");
                        node.setSort(5);
                        DjJdgzNetworkLevel3ListService.insert(node);
                    } else {
@@ -449,8 +476,8 @@
        return list;
    }
    public List<TableNodeDto> getNodeList(Long shipId, Long deptId, Long teamId, Long cabinId, String type, String name) {
        List<TableNodeDto> list = baseDao.getNodeList(shipId, deptId, teamId, cabinId, type, name);
    public List<TableNodeDto> getNodeList(Long shipId, Long deptId, Long teamId, Long cabinId, String type,Integer isCabin,Integer islt, String name) {
        List<TableNodeDto> list = baseDao.getNodeList(shipId, deptId, teamId, cabinId, type,isCabin,islt, name);
        Map<Long, StatusEnum> statusMap = new HashMap<>();
        Date today = new Date();
@@ -472,8 +499,12 @@
            if (node.getCurrentStatus() == null || node.getCurrentStatus() == 0) {
                if (today.after(requiredCompletionDate)) {
                    statusMap.put(node.getId(), StatusEnum.yq);
                    int days = (int) ((today.getTime() - requiredCompletionDate.getTime()) / (1000 * 60 * 60 * 24));
                    node.setYqText("要求时间为" + sdf.format(requiredCompletionDate) + "已逾期" + days + "天");
                } else if ((requiredCompletionDate.getTime() - today.getTime()) / (1000 * 60 * 60 * 24) < 7) {
                    statusMap.put(node.getId(), StatusEnum.lq);
                    int days = (int) ((requiredCompletionDate.getTime() - today.getTime()) / (1000 * 60 * 60 * 24));
                    node.setLqText("要求时间为" + sdf.format(requiredCompletionDate) + "还有" + days + "天临期");
                } else {
                    statusMap.put(node.getId(), StatusEnum.jxz);
                }
@@ -481,6 +512,8 @@
                // å·²å®Œæˆ
                if (node.getActualCompletion() != null && actualCompletionDate.after(requiredCompletionDate)) {
                    statusMap.put(node.getId(), StatusEnum.cqwc);
                    int days = (int) ((today.getTime() - requiredCompletionDate.getTime()) / (1000 * 60 * 60 * 24));
                    node.setCqText("要求时间为" + sdf.format(requiredCompletionDate) + "超期" + days + "天完成");
                } else {
                    statusMap.put(node.getId(), StatusEnum.zcwc);
                }
@@ -495,20 +528,37 @@
            } else {
                data = new TableNodeDto();
                String remark = baseDao.getRemark(node.getNetworkId(),type);
                if (StringUtils.isNotBlank(remark)){
                    data.setRemark(remark);
                }
                data.setName(node.getName());
                data.setNetworkId(node.getNetworkId());
                data.setIsealCabin(node.getIsealCabin());
                data.setIslt(node.getIslt());
                dataList.add(data);
                oldId = node.getNetworkId();
            }
            status = statusMap.get(node.getId());
            if (node.getProcessName().equals("设备拆卸出舱")) {
            if (StringUtils.isNotBlank(node.getLqText())) {
                data.setLqText(node.getLqText());
            }
            if (StringUtils.isNotBlank(node.getYqText())) {
                data.setYqText(node.getYqText());
            }
            if (StringUtils.isNotBlank(node.getCqText())) {
                data.setCqText(node.getCqText());
            }
            if (node.getProcessName().equals("设备拆卸出舱")||node.getProcessName().equals("设备到厂")||node.getProcessName().equals("拆卸出舱")) {
                data.setTime1Color(fillColorArr[status.ordinal()]);
            } else if (node.getProcessName().equals("设备分交")) {
            } else if (node.getProcessName().equals("设备分交")||node.getProcessName().equals("设备安装")||node.getProcessName().equals("入库")) {
                data.setTime2Color(fillColorArr[status.ordinal()]);
            } else if (node.getProcessName().equals("拆检鉴定")) {
            } else if (node.getProcessName().equals("拆检鉴定")||node.getProcessName().equals("存放位置")) {
                data.setTime3Color(fillColorArr[status.ordinal()]);
            } else if (node.getProcessName().equals("设备返厂")) {
            } else if (node.getProcessName().equals("设备返厂")||node.getProcessName().equals("移交T队")) {
                data.setTime4Color(fillColorArr[status.ordinal()]);
            } else if (node.getProcessName().equals("回装")) {
                data.setTime5Color(fillColorArr[status.ordinal()]);
src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java
@@ -129,7 +129,8 @@
        if (djJdgzTrackRecord.getCurrentStatus() == 1) {
            DjJdgzNetworkLevel3List nextNode = djJdgzNetworkLevel3ListService.getNextNode(djJdgzTrackRecord.getLevel3NodeId(), djJdgzTrackRecord.getLevel3NetworkId());
            if (nextNode != null) {
            Long oldId = baseDao.getIsExit(nextNode.getNetworkId(),nextNode.getProcessName());
            if (nextNode != null && oldId == null) {
                DjJdgzTrackRecord data = new DjJdgzTrackRecord();
                data.setLevel3NodeId(nextNode.getId());
                data.setProcessName(nextNode.getProcessName());
@@ -543,4 +544,8 @@
    public List<ReportRecordDto> getReportRecord(Long level1NetworkId, int column, Long teamgroupId) {
        return baseDao.getReportRecord(level1NetworkId, column, teamgroupId);
    }
    public List<DjJdgzTrackRecord> getName(Long level3NetworkId) {
        return baseDao.getName(level3NetworkId);
    }
}
src/main/java/com/example/server/progressTrack/service/NetWorkDiagramService.java
@@ -4,7 +4,6 @@
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;;
import cn.hutool.json.XML;
import com.example.client.service.BaseService;
import com.example.client.utils.UUIDUtil;
import com.example.server.progressTrack.Dto.*;
@@ -13,7 +12,6 @@
import com.example.server.utils.TimeUtils;
import com.mxgraph.util.mxConstants;
import com.mxgraph.view.mxGraph;
import com.mxgraph.view.mxStylesheet;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -1187,10 +1185,11 @@
        return result;
    }
    public mxGraph getCsDiagram(mxGraph graph, String json, List<NetworkNodeStatusDto> nodeStatusList, Integer panelWidth, Integer panelHeight) {
    public mxGraph getCsDiagram(mxGraph graph, String json, List<NetworkNodeStatusDto> nodeStatusList, Integer panelWidth, Integer panelHeight, List<DiagramNodeDto> list) {
        if (StringUtils.isBlank(json)) {
            return graph;
        }
        Map<Long, StatusEnum> statusMap = new HashMap<>();
        if (nodeStatusList != null) {
            Date today = new Date();
@@ -1311,7 +1310,7 @@
                if ("1888761224410202114".equals(idValue)) {
                    System.out.println(2222);
                }
                Object insertVertex = createInsertVertex(graph, jsonArray.getJSONObject(i), defX, defY, status);
                Object insertVertex = createInsertVertex(graph, jsonArray.getJSONObject(i), defX, defY, status, list);
                map.put(idValue, insertVertex);
            }
        }
@@ -1449,7 +1448,7 @@
        return graph;
    }
    public Object createInsertVertex(mxGraph graph, JSONObject jsonObject, Integer defX, Integer defY, StatusEnum status) {
    public Object createInsertVertex(mxGraph graph, JSONObject jsonObject, Integer defX, Integer defY, StatusEnum status, List<DiagramNodeDto> list) {
        Object parent = graph.getDefaultParent();
        String shapeValue = jsonObject.get("shape").toString();
        Object graphObject = null;
@@ -1457,7 +1456,7 @@
            case "custom-circle":
            case "custom-circle1":
                String text = (String) JsonUtils2.getJsonValueByPath(jsonObject, "attrs/text/text".split("/"));
                //String title = (String) JsonUtils2.getJsonValueByPath(jsonObject, "attrs/title/text".split("/"));
                String title = (String) JsonUtils2.getJsonValueByPath(jsonObject, "attrs/title/text".split("/"));
                String idValue = jsonObject.get("id").toString();
                Integer x = (Integer) JsonUtils2.getJsonValueByPath(jsonObject, "position/x".split("/")) + defX;
@@ -1466,8 +1465,21 @@
                Integer height = (Integer) JsonUtils2.getJsonValueByPath(jsonObject, "size/height".split("/"));
                if (status != null) {
                    String fontColor = "fontColor=" + fillColorArr[status.ordinal()] + ";";
                    if (list != null && list.size() > 0) {
                        for (DiagramNodeDto node : list) {
                            if (text.equals(node.getProcessName())){
                                graphObject = graph.insertVertex(parent, idValue, text, x, y, width, height,
                                        "whiteSpace=wrap;labelWidth=60;" + fontColor );
                                break;
                            }else{
                    graphObject = graph.insertVertex(parent, idValue, text, x, y, width, height,
                            "whiteSpace=wrap;labelWidth=60;" + fontColor + mxConstants.STYLE_SHAPE + "=" + mxConstants.SHAPE_ELLIPSE);
                            }
                        }
                    }else{
                        graphObject = graph.insertVertex(parent, idValue, text, x, y, width, height,
                                "whiteSpace=wrap;labelWidth=60;" + fontColor + mxConstants.STYLE_SHAPE + "=" + mxConstants.SHAPE_ELLIPSE);
                    }
                } else {
                    if ("开始".equals(text) || "结束".equals(text)) {
                        graphObject = graph.insertVertex(parent, idValue, "", x + width / 4, y + height / 4, width / 2, height / 2,
@@ -1477,9 +1489,9 @@
                                "whiteSpace=wrap;labelWidth=60;" + mxConstants.STYLE_SHAPE + "=" + mxConstants.SHAPE_ELLIPSE);
                    }
                }
                /*if (StringUtils.isNotBlank(title)) {
                if (StringUtils.isNotBlank(title)) {
                    createText(graph, title, x, y, width, height);
                }*/
                }
                break;
            case "custom-rect":
                String label = (String) JsonUtils2.getJsonValueByPath(jsonObject, "attrs/label/textWrap/text".split("/"));
src/main/resources/db/csiczb1.db
Binary files differ
src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2ListDao.xml
@@ -100,7 +100,7 @@
            and a.level1_node_id = ${level1NodeId}
    </select>
    <select id="getNodeList" resultType="com.example.server.progressTrack.Dto.DiagramNodeDto">
        select a.*
        select a.*,a.REQUIRED_COMPLETION_TIME as REQUIRED_COMPLETION
        from dj_jdgz_network_level2_list a
        where
        a.is_delete = 0
src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml
@@ -52,8 +52,11 @@
        <if test="isealCabin!=10000 and isealCabin!=null">
            and a.iseal_cabin = ${isealCabin}
        </if>
        <if test="isLt!=10000 and isLt!=null">
            and a.islt = ${isLt}
        </if>
        <if test="type!=null and type!=''">
            and a.type = #{type}
            and a.type = '${type}'
        </if>
        <if test="name!=null and name!=''">
            and a.name LIKE '%${name}%'
@@ -98,35 +101,46 @@
    </select>
    <select id="getNodeList" resultType="com.example.server.progressTrack.Dto.TableNodeDto">
        SELECT
        b.name,
        a.NETWORK_ID,
        a.process_name,
        a.ID, a.REQUIRED_COMPLETION_TIME, a.ACTUAL_COMPLETION, a.CURRENT_STATUS
        FROM `dj_jdgz_network_level3_list` a
        LEFT JOIN dj_jdgz_network_level3 b on b.ID = a.NETWORK_ID
        LEFT JOIN dj_jdgz_network_level1 c on c.ID = b.LEVEL1_NETWORK_ID
        c.name,
        b.NETWORK_ID,
        b.process_name,
        c.islt,
        c.iseal_cabin,
        b.ID, b.REQUIRED_COMPLETION_TIME, b.ACTUAL_COMPLETION, b.CURRENT_STATUS
        FROM dj_jdgz_track_record a
        LEFT JOIN dj_jdgz_network_level3_list b on b.ID = a.LEVEL3_NODE_ID
        LEFT JOIN dj_jdgz_network_level3 c on c.ID = b.NETWORK_ID
        LEFT JOIN dj_jdgz_network_level1 d on d.ID = c.LEVEL1_NETWORK_ID
        where
        a.is_delete = 0
        and b.is_delete = 0
        and c.is_delete = 0
        and d.is_delete = 0
        <if test="shipId!=null">
            and c.ship_id = ${shipId}
            and d.ship_id = ${shipId}
        </if>
        <if test="deptId!=null">
            and b.dept_id = ${deptId}
            and c.dept_id = ${deptId}
        </if>
        <if test="teamId!=null">
            and b.TEAMGROUP_ID = ${teamId}
            and c.TEAMGROUP_ID = ${teamId}
        </if>
        <if test="cabinId!=null">
            and b.cabin_id = ${cabinId}
            and c.cabin_id = ${cabinId}
        </if>
        <if test="isCabin!=10000 and isCabin!=null">
            and c.iseal_cabin = ${isCabin}
        </if>
        <if test="islt!=10000 and islt!=null">
            and c.islt = ${islt}
        </if>
        <if test="type!=null and type!=''">
            and b.type = #{type}
            and c.type = '${type}'
        </if>
        <if test="name!=null and name!=''">
            and b.name LIKE '%${name}%'
            and c.name LIKE '%${name}%'
        </if>
        ORDER BY NETWORK_ID
    </select>
    <select id="getStatist" resultType="com.example.server.progressTrack.Dto.StatistProductDto">
        SELECT
@@ -138,6 +152,12 @@
            COUNT(DISTINCT CASE WHEN fvp.process_name = '拆检鉴定' THEN b.id END) AS jdsl,
            COUNT(DISTINCT CASE WHEN fvp.process_name = '设备返厂' THEN b.id END) AS fcsl,
            COUNT(DISTINCT CASE WHEN fvp.process_name = '回装' THEN b.id END) AS hzsl,
            COUNT(DISTINCT CASE WHEN fvp.process_name = '拆卸出舱' THEN b.id END) AS ccsl,
            COUNT(DISTINCT CASE WHEN fvp.process_name = '入库' THEN b.id END) AS rksl,
            COUNT(DISTINCT CASE WHEN fvp.process_name = '存放位置' THEN b.id END) AS cfsl,
            COUNT(DISTINCT CASE WHEN fvp.process_name = '移交T队' THEN b.id END) AS yjsl,
            COUNT(DISTINCT CASE WHEN fvp.process_name = '设备到厂' THEN b.id END) AS dcsl,
            COUNT(DISTINCT CASE WHEN fvp.process_name = '设备安装' THEN b.id END) AS azsl,
            COUNT(DISTINCT CASE WHEN all_complete.network_id IS NOT NULL THEN b.id END) AS wcsl
        FROM
            dj_sys_teamgroup_class a
@@ -170,6 +190,10 @@
                    network_id
                FROM
                    dj_jdgz_network_level3_list
                LEFT JOIN dj_jdgz_network_level3 ON dj_jdgz_network_level3_list.network_id = dj_jdgz_network_level3.id
                where dj_jdgz_network_level3_list.is_delete = 0
                and dj_jdgz_network_level3.is_delete = 0
                and dj_jdgz_network_level3.type = '${type}'
                GROUP BY
                    network_id
                HAVING
@@ -182,6 +206,24 @@
        ORDER BY
            sort;
    </select>
    <select id="getRemark" resultType="java.lang.String">
        SELECT
            b.remark
        FROM
            dj_jdgz_track_record b
                LEFT JOIN dj_jdgz_network_level3 a ON b.LEVEL3_NETWORK_ID = a.ID
        WHERE
            a.is_delete = 0
          AND b.is_delete = 0
          AND a.id = ${networkId}
          AND a.type = '${type}'
          AND b.remark IS NOT NULL
        ORDER BY
            ABS((julianday('now') - julianday(b.CREATE_DATE)) * 86400) desc,
            ABS((julianday('now') - julianday(b.UPDATE_DATE)) * 86400) desc
            LIMIT 1;
    </select>
</mapper>
src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml
@@ -35,7 +35,7 @@
        select a.sort, a.process_name
        from dj_jdgz_network_level3_list a
        where a.is_delete = 0
          and a.network_id = 10000
          and a.network_id = ${defultId}
        ORDER BY sort
    </select>
    <select id="getAllNodeLevel3ByProject"
src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml
@@ -36,6 +36,7 @@
        c.dept_id,
        c.cabin_id,
        c.iseal_cabin,
        c.islt,
        c.type,
        c.`NAME` as level3NetworkName,
        a.PROCESS_NAME AS level3NodeName,
@@ -515,5 +516,18 @@
              AND is_delete = 0
        )
    </select>
    <select id="getName" resultType="com.example.server.progressTrack.model.DjJdgzTrackRecord">
        SELECT
            PROCESS_NAME
        FROM
            dj_jdgz_track_record
        WHERE
            is_delete = 0
          AND LEVEL3_NETWORK_ID = ${level3NetworkId}
        GROUP BY
            PROCESS_NAME
        ORDER BY
            CREATE_DATE ,UPDATE_DATE
    </select>
</mapper>
src/main/resources/templateFile/Èý¼¶ÍøÂçͼµ¼ÈëÄ£°å.xlsx
Binary files differ
src/main/resources/templateFile/¸ú×ټǼµ¼ÈëÄ£°å.xlsx
Binary files differ