From efce7ce3e63712ecc8b4c3039a73b508fc3ea880 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期一, 28 四月 2025 10:20:37 +0800
Subject: [PATCH] 修改

---
 src/main/java/com/example/client/service/Level1AddOrUpdate.java                            |    2 
 src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java                       |   16 
 src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3ListService.java |   16 
 src/main/resources/templateFile/跟踪记录导入模板.xlsx                                              |    0 
 src/main/java/com/example/server/progressTrack/service/DjJdgzDismantTrackService.java      |    2 
 src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1ListService.java |    2 
 src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3.java              |    3 
 src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml                     |    2 
 src/main/java/com/example/server/progressTrack/Dto/TableNodeDto.java                       |    8 
 src/main/java/com/example/client/utils/CustomPanel.java                                    |   62 +++
 src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml                         |   70 +++
 src/main/java/com/example/client/service/Level3ViewService.java                            |    6 
 src/main/java/com/example/client/service/Level2AddOrUpdate.java                            |    2 
 src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel2ListService.java |    2 
 src/main/resources/templateFile/三级网络图导入模板.xlsx                                             |    0 
 src/main/java/com/example/client/service/DismantTrackService.java                          |   16 
 src/main/java/com/example/client/service/SubunitService.java                               |   16 
 src/main/java/com/example/client/service/TrackRecordManageService.java                     |    3 
 src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3Dao.java             |    8 
 src/main/java/com/example/client/service/ImportLevel3Service.java                          |    4 
 src/main/java/com/example/client/utils/ColorDescriptionComboBox.java                       |    8 
 src/main/java/com/example/client/service/Level3ManageService.java                          |   96 ++++-
 src/main/java/com/example/client/service/StatisProductService.java                         |   84 +++-
 src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1Service.java     |   66 +++
 src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2ListDao.xml                     |    2 
 src/main/java/com/example/server/progressTrack/service/NetWorkDiagramService.java          |   32 +
 src/main/java/com/example/server/progressTrack/Dto/StatistProductDto.java                  |    6 
 src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java     |  146 +++++--
 src/main/resources/db/csiczb1.db                                                           |    0 
 src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java               |    2 
 src/main/java/com/example/client/service/Level1ViewService.java                            |    4 
 src/main/java/com/example/client/service/ImportTrackRecordService.java                     |    4 
 src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java       |    7 
 src/main/java/com/example/client/service/Level2ViewService.java                            |   32 +
 src/main/java/com/example/client/service/Level3View2Service.java                           |  293 +++++++++++++---
 src/main/java/com/example/client/service/StatisReportsService.java                         |   11 
 src/main/java/com/example/server/DataSync/service/DataSyncService.java                     |   11 
 src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3ListDao.java         |    2 
 src/main/java/com/example/client/service/Level3AddOrUpdate.java                            |    4 
 src/main/java/com/example/server/progressTrack/model/DjJdgzTrackRecord.java                |    4 
 src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml                           |   14 
 41 files changed, 821 insertions(+), 247 deletions(-)

diff --git a/src/main/java/com/example/client/service/DismantTrackService.java b/src/main/java/com/example/client/service/DismantTrackService.java
index 916b802..28c1c83 100644
--- a/src/main/java/com/example/client/service/DismantTrackService.java
+++ b/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);
diff --git a/src/main/java/com/example/client/service/ImportLevel3Service.java b/src/main/java/com/example/client/service/ImportLevel3Service.java
index 33556db..a937a15 100644
--- a/src/main/java/com/example/client/service/ImportLevel3Service.java
+++ b/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());
diff --git a/src/main/java/com/example/client/service/ImportTrackRecordService.java b/src/main/java/com/example/client/service/ImportTrackRecordService.java
index bab2ebc..afa9004 100644
--- a/src/main/java/com/example/client/service/ImportTrackRecordService.java
+++ b/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);
diff --git a/src/main/java/com/example/client/service/Level1AddOrUpdate.java b/src/main/java/com/example/client/service/Level1AddOrUpdate.java
index c57ff3b..2e0c0c5 100644
--- a/src/main/java/com/example/client/service/Level1AddOrUpdate.java
+++ b/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);
diff --git a/src/main/java/com/example/client/service/Level1ViewService.java b/src/main/java/com/example/client/service/Level1ViewService.java
index 3280d15..f2535c4 100644
--- a/src/main/java/com/example/client/service/Level1ViewService.java
+++ b/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 {
diff --git a/src/main/java/com/example/client/service/Level2AddOrUpdate.java b/src/main/java/com/example/client/service/Level2AddOrUpdate.java
index 60bc7c0..6bedfa1 100644
--- a/src/main/java/com/example/client/service/Level2AddOrUpdate.java
+++ b/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);
diff --git a/src/main/java/com/example/client/service/Level2ViewService.java b/src/main/java/com/example/client/service/Level2ViewService.java
index da28ef8..54b7a21 100644
--- a/src/main/java/com/example/client/service/Level2ViewService.java
+++ b/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()));
diff --git a/src/main/java/com/example/client/service/Level3AddOrUpdate.java b/src/main/java/com/example/client/service/Level3AddOrUpdate.java
index 85bb745..4a55e11 100644
--- a/src/main/java/com/example/client/service/Level3AddOrUpdate.java
+++ b/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);
diff --git a/src/main/java/com/example/client/service/Level3ManageService.java b/src/main/java/com/example/client/service/Level3ManageService.java
index fdf9ad3..c3153ab 100644
--- a/src/main/java/com/example/client/service/Level3ManageService.java
+++ b/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);
 
diff --git a/src/main/java/com/example/client/service/Level3View2Service.java b/src/main/java/com/example/client/service/Level3View2Service.java
index 548b587..803e1c5 100644
--- a/src/main/java/com/example/client/service/Level3View2Service.java
+++ b/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
@@ -43,19 +39,31 @@
     private List<ColumnDto> columnDto;
 
 
-    public JPanel createTable(Integer width, Integer height,JFrame frame) {
+    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", "姝e父瀹屾垚"));
         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 "姝e父瀹屾垚";
             case "#006400":
-                return "瓒呮湡瀹屾垚";
+                return tableNodeDto.getCqText();
             default:
                 return "鏈紑濮�";
         }
     }
 
+
 }
 
 
diff --git a/src/main/java/com/example/client/service/Level3ViewService.java b/src/main/java/com/example/client/service/Level3ViewService.java
index c2c3954..69449c7 100644
--- a/src/main/java/com/example/client/service/Level3ViewService.java
+++ b/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);
                 }
             }
         });
diff --git a/src/main/java/com/example/client/service/StatisProductService.java b/src/main/java/com/example/client/service/StatisProductService.java
index 51bd380..1402c22 100644
--- a/src/main/java/com/example/client/service/StatisProductService.java
+++ b/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,29 +33,72 @@
             }
         });
 
-        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];
-        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()][4];
 
-        String[][] body = new String[list.size()][9];
+            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());
+            }
 
-        for (int i = 0; i < list.size(); i++) {
-            StatistProductDto data =list.get(i);
-            body[i][0] = data.getName();
-            body[i][1] = String.valueOf(data.getCxsl());
-            body[i][2] = String.valueOf(data.getFjsl());
-            body[i][3] = String.valueOf(data.getJdsl());
-            body[i][4] = String.valueOf(data.getFcsl());
-            body[i][5] = String.valueOf(data.getHzsl());
-            body[i][6] = 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()][7];
+
+            for (int i = 0; i < list.size(); i++) {
+                StatistProductDto data = list.get(i);
+                body[i][0] = data.getName();
+                body[i][1] = String.valueOf(data.getCxsl());
+                body[i][2] = String.valueOf(data.getFjsl());
+                body[i][3] = String.valueOf(data.getJdsl());
+                body[i][4] = String.valueOf(data.getFcsl());
+                body[i][5] = String.valueOf(data.getHzsl());
+                body[i][6] = String.valueOf(data.getWcsl());
+            }
+
+            JScrollPane scrollTable = new JScrollPane(new ComplexTable(headerRows, body, 210));
+            frame1.add(scrollTable);
+            frame1.setVisible(true);
         }
-
-        JScrollPane scrollTable = new JScrollPane(new ComplexTable(headerRows , body,210));
-        frame1.add(scrollTable);
-        frame1.setVisible(true);
     }
 
 }
diff --git a/src/main/java/com/example/client/service/StatisReportsService.java b/src/main/java/com/example/client/service/StatisReportsService.java
index 0a8033f..20551da 100644
--- a/src/main/java/com/example/client/service/StatisReportsService.java
+++ b/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);
     }
diff --git a/src/main/java/com/example/client/service/SubunitService.java b/src/main/java/com/example/client/service/SubunitService.java
index fa0276d..50476ba 100644
--- a/src/main/java/com/example/client/service/SubunitService.java
+++ b/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);
diff --git a/src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java b/src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java
index 71a6b97..4e40d08 100644
--- a/src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java
+++ b/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("璐熻矗浜�");
@@ -341,9 +349,9 @@
                 data.setProblem(problem.getText());
                 data.setFollowupPlan(plan.getText());
                 data.setRemark(remark.getText());
-                Long id = djJdgzTrackRecordService.save(data,"save");
+                Long id = djJdgzTrackRecordService.save(data, "save");
                 uploadFile.save(id);
-                List<DjJdgzTrackRecord> list = djJdgzTrackRecordService.getList(level1Id, level3.getDeptId(), null, null, level3.getType(), 0,0, null);
+                List<DjJdgzTrackRecord> list = djJdgzTrackRecordService.getList(level1Id, level3.getDeptId(), null, null, level3.getType(), 0, 0, null);
                 CommonTable.refreshTable(list, columnDto, table);
                 trackRecordManageService.tableModelListener(table, jFrame, list);
                 frame1.dispose();
diff --git a/src/main/java/com/example/client/service/TrackRecordManageService.java b/src/main/java/com/example/client/service/TrackRecordManageService.java
index 6c1f7a9..ecc2ee0 100644
--- a/src/main/java/com/example/client/service/TrackRecordManageService.java
+++ b/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));
diff --git a/src/main/java/com/example/client/utils/ColorDescriptionComboBox.java b/src/main/java/com/example/client/utils/ColorDescriptionComboBox.java
index b9754cd..6669f9d 100644
--- a/src/main/java/com/example/client/utils/ColorDescriptionComboBox.java
+++ b/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); // 璁剧疆榛樿鏂囨湰
                 }
             }
         });
diff --git a/src/main/java/com/example/client/utils/CustomPanel.java b/src/main/java/com/example/client/utils/CustomPanel.java
new file mode 100644
index 0000000..0e7c3dd
--- /dev/null
+++ b/src/main/java/com/example/client/utils/CustomPanel.java
@@ -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", "姝e父瀹屾垚"),
+                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) {
+            // 瑙f瀽棰滆壊浠g爜骞剁粯鍒跺渾褰�
+            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; // 鏇存柊缁樺埗浣嶇疆
+        }
+    }
+}
diff --git a/src/main/java/com/example/server/DataSync/service/DataSyncService.java b/src/main/java/com/example/server/DataSync/service/DataSyncService.java
index 029b576..51348b7 100644
--- a/src/main/java/com/example/server/DataSync/service/DataSyncService.java
+++ b/src/main/java/com/example/server/DataSync/service/DataSyncService.java
@@ -66,10 +66,12 @@
         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();
+            massage[0] = "鐢ㄦ埛鍙栨秷淇濆瓨锛岀▼搴忛��鍑恒��" + new Date();
             tips.setText(tips.getText() + massage[0]);
         } else {
             final WaitUtil waitUtil = new WaitUtil(imgPath, "鏁版嵁姝e湪瀵煎叆锛岃绋嶅��");
@@ -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);
@@ -230,7 +235,7 @@
             syncTable("dj_jdgz_ship");
             syncTable("dj_jdgz_dismant_track");
         }
-        ImportRecord data =new ImportRecord();
+        ImportRecord data = new ImportRecord();
         data.setImportSite(otherSite);
         importRecordDao.insert(data);
         List<ImportRecord> list = importRecordDao.getList();
diff --git a/src/main/java/com/example/server/progressTrack/Dto/StatistProductDto.java b/src/main/java/com/example/server/progressTrack/Dto/StatistProductDto.java
index 6996c36..310526c 100644
--- a/src/main/java/com/example/server/progressTrack/Dto/StatistProductDto.java
+++ b/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;
 }
diff --git a/src/main/java/com/example/server/progressTrack/Dto/TableNodeDto.java b/src/main/java/com/example/server/progressTrack/Dto/TableNodeDto.java
index 13899e3..d02ef3f 100644
--- a/src/main/java/com/example/server/progressTrack/Dto/TableNodeDto.java
+++ b/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;
+
 }
diff --git a/src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3Dao.java b/src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3Dao.java
index fc5f467..2079aab 100644
--- a/src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3Dao.java
+++ b/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);
 }
diff --git a/src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3ListDao.java b/src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3ListDao.java
index cfa2a39..0338ae1 100644
--- a/src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3ListDao.java
+++ b/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);
 
diff --git a/src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java b/src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java
index 90c2ee6..48ebf03 100644
--- a/src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java
+++ b/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);
 }
diff --git a/src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3.java b/src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3.java
index 9003534..1491499 100644
--- a/src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3.java
+++ b/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;
 
diff --git a/src/main/java/com/example/server/progressTrack/model/DjJdgzTrackRecord.java b/src/main/java/com/example/server/progressTrack/model/DjJdgzTrackRecord.java
index cc421a7..a37eed8 100644
--- a/src/main/java/com/example/server/progressTrack/model/DjJdgzTrackRecord.java
+++ b/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)
diff --git a/src/main/java/com/example/server/progressTrack/service/DjJdgzDismantTrackService.java b/src/main/java/com/example/server/progressTrack/service/DjJdgzDismantTrackService.java
index c4a2a04..cdef401 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzDismantTrackService.java
+++ b/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();
 
 
diff --git a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1ListService.java b/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1ListService.java
index 1a1f037..eacd465 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1ListService.java
+++ b/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) {
diff --git a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1Service.java b/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1Service.java
index 90b163a..9049fed 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1Service.java
+++ b/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,19 +15,30 @@
 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;
 
 
 /**
  * dj_jdgz_network_level1
  *
- * @author zt generator 
+ * @author zt generator
  * @since 1.0.0 2024-12-17
  */
 @Service
 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);
@@ -49,7 +62,7 @@
         return list;
     }
 
-    public JComboBoxItem[] getProjectList(){
+    public JComboBoxItem[] getProjectList() {
         JComboBoxItem[] list = baseDao.getProjectList();
         return list;
     }
@@ -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;
+    }
 }
diff --git a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel2ListService.java b/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel2ListService.java
index 19d4d01..bd35894 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel2ListService.java
+++ b/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);
     }
 
     /**
diff --git a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3ListService.java b/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3ListService.java
index 5fc33a3..fdfa59e 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3ListService.java
+++ b/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) {
diff --git a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java b/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java
index a7ae88b..c17dd52 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java
+++ b/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;
-                if (isealCabinStr.equals("鏄�")){
+                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()]);
diff --git a/src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java b/src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java
index 26d6fd0..391d936 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java
+++ b/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);
+    }
 }
diff --git a/src/main/java/com/example/server/progressTrack/service/NetWorkDiagramService.java b/src/main/java/com/example/server/progressTrack/service/NetWorkDiagramService.java
index 78a5b2a..4cc3de7 100644
--- a/src/main/java/com/example/server/progressTrack/service/NetWorkDiagramService.java
+++ b/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()] + ";";
-                    graphObject = graph.insertVertex(parent, idValue, text, x, y, width, height,
-                            "whiteSpace=wrap;labelWidth=60;" + fontColor + mxConstants.STYLE_SHAPE + "=" + mxConstants.SHAPE_ELLIPSE);
+                    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("/"));
diff --git a/src/main/resources/db/csiczb1.db b/src/main/resources/db/csiczb1.db
index 98fbf5d..f7a61aa 100644
--- a/src/main/resources/db/csiczb1.db
+++ b/src/main/resources/db/csiczb1.db
Binary files differ
diff --git a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2ListDao.xml b/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2ListDao.xml
index 440d63b..5065892 100644
--- a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2ListDao.xml
+++ b/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
diff --git a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml b/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml
index 47735e6..8ff478e 100644
--- a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml
+++ b/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>
diff --git a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml b/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml
index 67560a6..fa406ef 100644
--- a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml
+++ b/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"
diff --git a/src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml b/src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml
index 7206048..f4883e6 100644
--- a/src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml
+++ b/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>
diff --git "a/src/main/resources/templateFile/\344\270\211\347\272\247\347\275\221\347\273\234\345\233\276\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" "b/src/main/resources/templateFile/\344\270\211\347\272\247\347\275\221\347\273\234\345\233\276\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
index cce8df0..a37484c 100644
--- "a/src/main/resources/templateFile/\344\270\211\347\272\247\347\275\221\347\273\234\345\233\276\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
+++ "b/src/main/resources/templateFile/\344\270\211\347\272\247\347\275\221\347\273\234\345\233\276\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git "a/src/main/resources/templateFile/\350\267\237\350\270\252\350\256\260\345\275\225\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" "b/src/main/resources/templateFile/\350\267\237\350\270\252\350\256\260\345\275\225\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
index 03ebad5..3d161b5 100644
--- "a/src/main/resources/templateFile/\350\267\237\350\270\252\350\256\260\345\275\225\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
+++ "b/src/main/resources/templateFile/\350\267\237\350\270\252\350\256\260\345\275\225\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
Binary files differ

--
Gitblit v1.9.1