From 66f0597bf6a1e79540c6bc51dedf561c22f3bdb5 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期二, 13 五月 2025 17:49:26 +0800
Subject: [PATCH] 修改

---
 src/main/java/com/example/client/service/Level3ManageService.java                          |   15 +
 src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java                       |    2 
 src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1Service.java     |    2 
 src/main/java/com/example/server/progressTrack/Dto/Level3ExportCloum.java                  |   17 +
 src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3List.java          |    3 
 src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3ListService.java |    2 
 src/main/java/com/example/server/progressTrack/service/NetWorkDiagramService.java          |    3 
 src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java     |   81 ++++++
 src/main/resources/db/csiczb1.db                                                           |    0 
 src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java               |    6 
 src/main/java/com/example/client/utils/TranslateToPlainStrUtils.java                       |   29 ++
 src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml                     |    4 
 src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java       |  150 ++++++-------
 src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml                         |   40 +++
 src/main/java/com/example/client/service/Level3View2Service.java                           |  137 ++++++++++++
 src/main/java/com/example/client/service/TeamGroupAddOrUpdate.java                         |    3 
 src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2Dao.xml                         |    3 
 src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml                           |  107 +++++----
 src/main/java/com/example/client/service/TrackRecordManageService.java                     |    2 
 src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3Dao.java             |    3 
 20 files changed, 462 insertions(+), 147 deletions(-)

diff --git a/src/main/java/com/example/client/service/Level3ManageService.java b/src/main/java/com/example/client/service/Level3ManageService.java
index c3153ab..f74e8db 100644
--- a/src/main/java/com/example/client/service/Level3ManageService.java
+++ b/src/main/java/com/example/client/service/Level3ManageService.java
@@ -16,6 +16,7 @@
 
 import javax.swing.*;
 import javax.swing.event.TableModelEvent;
+import javax.swing.plaf.basic.BasicComboBoxRenderer;
 import javax.swing.table.DefaultTableModel;
 import java.awt.*;
 import java.awt.event.*;
@@ -428,6 +429,20 @@
 
         JLabel JLabel3 = new JLabel("浜岀骇缃戠粶鍥捐妭鐐�");
         JComboBox<JComboBoxItem> comboBox2 = new JComboBox<>();
+        comboBox2.setRenderer(new BasicComboBoxRenderer() {
+            @Override
+            public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+                super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+
+                // 璁剧疆宸ュ叿鎻愮ず
+                if (value != null) {
+                    setText(value.toString());
+                    setToolTipText(value.toString()); // 璁剧疆宸ュ叿鎻愮ず涓哄畬鏁寸殑閫夐」鏂囨湰
+                }
+
+                return this;
+            }
+        });
         comboBox2.setPreferredSize(new Dimension(185, 28));
         if (data.getLevel2NodeId()!=null){
             JComboBoxItem[] level2NodeList = level2ListService.getNode(data.getLevel2NetworkId());
diff --git a/src/main/java/com/example/client/service/Level3View2Service.java b/src/main/java/com/example/client/service/Level3View2Service.java
index 803e1c5..d941c42 100644
--- a/src/main/java/com/example/client/service/Level3View2Service.java
+++ b/src/main/java/com/example/client/service/Level3View2Service.java
@@ -3,6 +3,7 @@
 import com.example.client.dto.ColumnDto;
 import com.example.client.dto.JComboBoxItem;
 import com.example.client.utils.*;
+import com.example.server.ExportExcel.dto.ExcelColumnDto;
 import com.example.server.cabin.service.CabinService;
 import com.example.server.progressTrack.Dto.TableNodeDto;
 import com.example.server.progressTrack.model.DjJdgzShip;
@@ -15,6 +16,7 @@
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
+import java.io.File;
 import java.util.List;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -37,6 +39,8 @@
     private List<TableNodeDto> list;
     private Map<String, Long> shipMap = new HashMap<>();
     private List<ColumnDto> columnDto;
+    @Autowired
+    private DjJdgzNetworkLevel1Service djJdgzNetworkLevel1Service;
 
 
     public JPanel createTable(Integer width, Integer height, JFrame frame) {
@@ -124,6 +128,7 @@
         // 鍒涘缓涓嬫媺妗�
         ColorDescriptionComboBox comboBox5 = new ColorDescriptionComboBox(colorDescriptions);
         JButton btnTjz = new JButton("璁惧杩涘害缁熻鎬昏〃");
+        JButton btnExport = new JButton("瀵煎嚭");
 
         topJpanel2.add(JLabel0, new GBC(0, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
         topJpanel2.add(comboBox, new GBC(1, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
@@ -143,7 +148,9 @@
         topJpanel2.add(sb, new GBC(4, 1, 2, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
         topJpanel2.add(query, new GBC(6, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
         topJpanel2.add(comboBox5, new GBC(7, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
+        topJpanel2.add(btnExport, new GBC(8, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
         topJpanel2.add(btnTjz, new GBC(9, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
+
 
         list = level3Service.getNodeList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0], Math.toIntExact(isealCabin[0].getId()), Math.toIntExact(isealCabin[0].getId()), null);
 
@@ -390,6 +397,13 @@
                 statisProductService.createTable(frame, shipId, type);
             }
         });
+        btnExport.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                frame.setEnabled(false);
+                export(frame);
+            }
+        });
 
         comboBox5.addItemListener(new ItemListener() {
             @Override
@@ -445,6 +459,129 @@
 
         return panel;
     }
+
+    private void export(JFrame jFrame) {
+        JFrame frame1 = new JFrame("瀵煎嚭涓夌骇缃戠粶鍥剧姸鎬�");
+        frame1.setSize(300, 400);
+        frame1.setResizable(true);
+        frame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+        frame1.setLocationRelativeTo(null);
+        frame1.setVisible(true);
+        frame1.addWindowListener(new WindowAdapter() {
+            //娣诲姞绗簩涓晫闈㈢殑鍏抽棴浜嬩欢:
+            public void windowClosing(WindowEvent e) {
+                //娣诲姞浜嬩欢:
+                jFrame.setEnabled(true);//灏嗕富鐣岄潰鍐嶈缃负鍙搷浣滅殑
+            }
+        });
+        GridBagLayout layout = new GridBagLayout();
+        frame1.setLayout(layout);
+
+        JComboBoxItem[] projectList = djJdgzNetworkLevel1Service.getProjectList();
+        JComboBoxItem[] deptList = sysTeamGroupClassService.getDeptList();
+
+        String[] typeList = new String[]{
+                "","杩涜涓�","涓存湡","閫炬湡","姝e父瀹屾垚","瓒呮湡瀹屾垚"
+        };
+
+        JLabel JLabel1 = new JLabel("宸ョ▼");
+        JComboBox<JComboBoxItem> comboBox0 = new JComboBox<>(projectList);
+        comboBox0.setPreferredSize(new Dimension(200, 28));
+        comboBox0.setSelectedIndex(-1);
+
+        JLabel JLabel4 = new JLabel("閮ㄩ棬");
+        JComboBox<JComboBoxItem> comboBox3 = new JComboBox<>(deptList);
+        comboBox3.setPreferredSize(new Dimension(200, 28));
+
+        JComboBoxItem[] teamList1 = sysTeamGroupClassService.getTeamList(deptList[0].getId());
+
+        JLabel JLabel5 = new JLabel("涓撲笟");
+        JComboBox<JComboBoxItem> comboBox4 = new JComboBox<>(teamList1);
+        comboBox4.setPreferredSize(new Dimension(200, 28));
+
+        JLabel JLabel7 = new JLabel("鐘舵��");
+        JComboBox<String> comboBox6 = new JComboBox<>(typeList);
+        comboBox6.setPreferredSize(new Dimension(200, 28));
+
+        comboBox3.addItemListener(new ItemListener() {
+            @Override
+            public void itemStateChanged(ItemEvent e) {
+                if (e.getStateChange() == ItemEvent.SELECTED) {
+                    JComboBoxItem selectedItem = (JComboBoxItem) comboBox3.getSelectedItem();
+                    if (selectedItem != null) {
+                        long selectedId = selectedItem.getId();
+
+                        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(selectedId);
+                        comboBox4.setModel(new DefaultComboBoxModel<>(teamList));
+                        comboBox4.setSelectedIndex(-1);
+                    }
+                }
+            }
+        });
+
+        JButton btnExport = new JButton("瀵煎嚭");
+
+        frame1.add(JLabel1, new GBC(0, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
+        frame1.add(comboBox0, new GBC(1, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
+
+        frame1.add(JLabel4, new GBC(0, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
+        frame1.add(comboBox3, new GBC(1, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
+
+        frame1.add(JLabel5, new GBC(0, 2, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
+        frame1.add(comboBox4, new GBC(1, 2, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
+
+        frame1.add(JLabel7, new GBC(0, 3, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
+        frame1.add(comboBox6, new GBC(1, 3, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
+
+        frame1.add(btnExport, new GBC(0, 4, 2, 1).setWeight(1, 0));
+
+        btnExport.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                JComboBoxItem projectItem = (JComboBoxItem) comboBox0.getSelectedItem();
+                JComboBoxItem deptItem = (JComboBoxItem) comboBox3.getSelectedItem();
+                JComboBoxItem teamGroupItem = (JComboBoxItem) comboBox4.getSelectedItem();
+                String statusItem = comboBox6.getSelectedItem().toString();
+
+                Long level1NetworkId = null;
+                Long deptId = null;
+                Long teamGroupId = null;
+                String status = null;
+
+                if (projectItem != null) {
+                    level1NetworkId = projectItem.getId();
+                } else {
+                    JOptionPane.showMessageDialog(null, "娌℃湁閫夋嫨宸ョ▼", "鎻愮ず", JOptionPane.WARNING_MESSAGE);
+                    return;
+                }
+                if (deptId != null) {
+                    deptId = deptItem.getId();
+                }
+                if (teamGroupItem != null) {
+                    teamGroupId = teamGroupItem.getId();
+                }
+
+                if (StringUtils.isNotBlank(statusItem)) {
+                    status = statusItem;
+                }
+
+                String fileName = "涓夌骇缃戠粶鍥剧姸鎬�.xlsx";
+                JFileChooser fileChooser = new JFileChooser();
+                fileChooser.setSelectedFile(new File(fileName));
+                int result = fileChooser.showSaveDialog(frame1);
+
+                if (result == JFileChooser.APPROVE_OPTION) {
+                    File selectedFile = fileChooser.getSelectedFile();
+                    level3Service.exportExcel(selectedFile.getPath(), level1NetworkId,deptId, teamGroupId, status);
+                    JOptionPane.showMessageDialog(frame1, "鏂囦欢瀵煎嚭鎴愬姛");
+                } else {
+                    JOptionPane.showMessageDialog(frame1, "鏂囦欢瀵煎嚭鍙栨秷");
+                }
+            }
+        });
+
+    }
+
     private JComboBoxItem[] createIsealCabinItems() {
         return new JComboBoxItem[]{
                 new JComboBoxItem(10000L, ""),
diff --git a/src/main/java/com/example/client/service/TeamGroupAddOrUpdate.java b/src/main/java/com/example/client/service/TeamGroupAddOrUpdate.java
index 3f56a13..ce383a8 100644
--- a/src/main/java/com/example/client/service/TeamGroupAddOrUpdate.java
+++ b/src/main/java/com/example/client/service/TeamGroupAddOrUpdate.java
@@ -117,6 +117,9 @@
                 if (type.equals("閮ㄩ棬")) {
                     data.setPid(0L);
                     sortMax = sysTeamGroupClassService.getSortMax(0L);
+                    if (sortMax == null) {
+                        sortMax = 100;
+                    }
                     data.setSort(sortMax + 100);
                 } else {
                     data.setPid(dept.getId());
diff --git a/src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java b/src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java
index 4e40d08..9624b4d 100644
--- a/src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java
+++ b/src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java
@@ -351,7 +351,7 @@
                 data.setRemark(remark.getText());
                 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(), level3.getTeamgroupId(), null, null, 0, null, 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 ecc2ee0..a1a6e77 100644
--- a/src/main/java/com/example/client/service/TrackRecordManageService.java
+++ b/src/main/java/com/example/client/service/TrackRecordManageService.java
@@ -408,7 +408,7 @@
 
                 // 妫�鏌ユ槸鍚︾偣鍑讳簡鏈夋晥鍗曞厓鏍�
                 if (row >= 0 && column >= 0) {
-                    if (column == 14) { // 鍒楃储寮曚粠0寮�濮�
+                    if (column == 15) { // 鍒楃储寮曚粠0寮�濮�
                         // 鑾峰彇璇ュ崟鍏冩牸鐨勫��
                         Object cellValue = table.getValueAt(row, column);
                         Integer value = Integer.parseInt(cellValue.toString());
diff --git a/src/main/java/com/example/client/utils/TranslateToPlainStrUtils.java b/src/main/java/com/example/client/utils/TranslateToPlainStrUtils.java
new file mode 100644
index 0000000..ef61314
--- /dev/null
+++ b/src/main/java/com/example/client/utils/TranslateToPlainStrUtils.java
@@ -0,0 +1,29 @@
+package com.example.client.utils;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.math.BigDecimal;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class TranslateToPlainStrUtils {
+    public static String translateToPlainStr(String number) {
+        if (StringUtils.isBlank(number) ) {
+            return number;
+        }
+        String regEx = "^([\\+|-]?\\d+(.{0}|.\\d+))[Ee]{1}([\\+|-]?\\d+)$";
+        // 缂栬瘧姝e垯琛ㄨ揪寮�
+        Pattern pattern = Pattern.compile(regEx);
+
+        Matcher matcher = pattern.matcher(number);
+        // 瀛楃涓叉槸鍚︿笌姝e垯琛ㄨ揪寮忕浉鍖归厤
+        boolean rs = matcher.matches();
+        // 鍒ゆ柇鏄惁涓哄瓧绗︿覆鐨勭瀛﹁鏁版硶
+        if (rs) {
+            // 绉戝璁℃暟娉曡浆鏁板瓧
+            BigDecimal originValue = new BigDecimal(number);
+            return originValue.toPlainString();
+        }
+        return number;
+    }
+}
diff --git a/src/main/java/com/example/server/progressTrack/Dto/Level3ExportCloum.java b/src/main/java/com/example/server/progressTrack/Dto/Level3ExportCloum.java
new file mode 100644
index 0000000..7beafcb
--- /dev/null
+++ b/src/main/java/com/example/server/progressTrack/Dto/Level3ExportCloum.java
@@ -0,0 +1,17 @@
+package com.example.server.progressTrack.Dto;
+
+import lombok.Data;
+
+@Data
+public class Level3ExportCloum {
+    String deptName;
+    String teamName;
+    Long deptId;
+    Long teamgroupId;
+    String name;
+    String processName;
+    String requiredCompletionTime;
+    String actualCompletion;
+    String status;
+    Integer currentStatus;
+}
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 2079aab..05fc6b8 100644
--- a/src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3Dao.java
+++ b/src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3Dao.java
@@ -2,6 +2,7 @@
 
 import com.example.client.dto.JComboBoxItem;
 import com.example.server.dao.BaseDao;
+import com.example.server.progressTrack.Dto.Level3ExportCloum;
 import com.example.server.progressTrack.Dto.NetworkNodeStatusDto;
 import com.example.server.progressTrack.Dto.StatistProductDto;
 import com.example.server.progressTrack.Dto.TableNodeDto;
@@ -40,4 +41,6 @@
     List<StatistProductDto> getStatist(Long level1Id,String type);
 
     String getRemark(Long networkId, String type);
+
+    List<Level3ExportCloum> getdata(Long level1NetworkId, Long deptId, Long teamGroupId, String status);
 }
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 48ebf03..b488912 100644
--- a/src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java
+++ b/src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java
@@ -3,12 +3,12 @@
 import com.example.server.dao.BaseDao;
 import com.example.server.progressTrack.Dto.ReportRecordDto;
 import com.example.server.progressTrack.Dto.StatistReportsDto;
+import com.example.server.progressTrack.model.DjJdgzNetworkLevel3List;
 import com.example.server.progressTrack.model.DjJdgzTrackRecord;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 
 /**
@@ -40,7 +40,9 @@
 
     List<ReportRecordDto> getReportRecord(Long level1NetworkId, int column, Long teamgroupId);
 
-    Long getIsExit(Long level3NetworkId, String processName);
+    Long getIsExit(Long level3NetworkId, String processName, Integer weekNo);
 
     List<DjJdgzTrackRecord> getName(Long level3NetworkId);
+
+    DjJdgzNetworkLevel3List isExistTrackRecord(Integer sort, Long level3NetworkId);
 }
diff --git a/src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3List.java b/src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3List.java
index 558a90e..45239c7 100644
--- a/src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3List.java
+++ b/src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3List.java
@@ -64,6 +64,7 @@
 	private String name;
 
 	@TableField(exist = false)
-	private List<DjJdgzNetworkLevel3List> dataList;
+	@ApiModelProperty(value = "")
+	private Long trackRecordId;
 
 }
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 9049fed..21ddecb 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1Service.java
+++ b/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1Service.java
@@ -151,7 +151,7 @@
         List<DiagramNodeDto> nodeList2 =new ArrayList<>();
         JComboBoxItem[] level2List = djJdgzNetworkLevel2Service.getLevel2List(id);
         for (JComboBoxItem item : level2List) {
-            nodeList2 = djJdgzNetworkLevel2ListDao.getNodeList(item.getId());
+            nodeList2.addAll(djJdgzNetworkLevel2ListDao.getNodeList(item.getId()));
         }
         return nodeList2;
     }
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 fdfa59e..8ec2288 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3ListService.java
+++ b/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3ListService.java
@@ -56,7 +56,7 @@
 
     public DjJdgzNetworkLevel3List getNextNode(Long nodeId, Long networkId) {
         DjJdgzNetworkLevel3List djJdgzNetworkLevel3List =new DjJdgzNetworkLevel3List();
-        List<DjJdgzNetworkLevel3List> list = baseDao.getNextNode(this.get(nodeId).getSort()+1,networkId);
+        List<DjJdgzNetworkLevel3List> list = baseDao.getNextNode(this.get(nodeId).getSort(),networkId);
         if(list.size()>0){
             djJdgzNetworkLevel3List = list.get(0);
         }else{
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 c17dd52..c9748b3 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java
+++ b/src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java
@@ -2,19 +2,26 @@
 
 import com.example.client.dto.JComboBoxItem;
 import com.example.client.service.BaseService;
+import com.example.client.utils.TranslateToPlainStrUtils;
+import com.example.server.ExportExcel.dto.ExcelColumnDto;
+import com.example.server.ExportExcel.dto.ExprotExcelDto;
+import com.example.server.ExportExcel.method.ExcelExport;
 import com.example.server.cabin.service.CabinService;
+import com.example.server.progressTrack.Dto.Level3ExportCloum;
 import com.example.server.progressTrack.Dto.NetworkNodeStatusDto;
 import com.example.server.progressTrack.Dto.StatistProductDto;
 import com.example.server.progressTrack.Dto.TableNodeDto;
 import com.example.server.progressTrack.dao.DjJdgzNetworkLevel3Dao;
 import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
 import com.example.server.progressTrack.model.DjJdgzNetworkLevel3List;
+import com.example.server.progressTrack.model.DjJdgzTrackRecord;
 import com.example.server.teamGroup.service.SysTeamGroupClassService;
 import com.example.server.utils.FileUtils;
 import com.example.server.utils.ImportUtil;
 import com.example.server.utils.UUIDUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -53,6 +60,69 @@
 
     public List<StatistProductDto> getStatist(Long level1Id,String type) {
         return baseDao.getStatist(level1Id,type);
+    }
+
+    public void exportExcel(String path, Long level1NetworkId, Long deptId, Long teamGroupId, String status) {
+        List<ExprotExcelDto> dtos = new ArrayList<>();
+        ExprotExcelDto dto = new ExprotExcelDto();
+        dto.setSheetName("璁惧鑺傜偣鐘舵�佽褰�");
+
+        List<Level3ExportCloum> list = baseDao.getdata(level1NetworkId, deptId, teamGroupId, status);
+        Date today = new Date();
+        for (Level3ExportCloum data :list){
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                Date requiredCompletionDate = null;
+                Date actualCompletionDate = null;
+                try {
+                    if (StringUtils.isNotBlank(data.getRequiredCompletionTime())) {
+                        requiredCompletionDate = sdf.parse(data.getRequiredCompletionTime());
+                    }
+                    if (StringUtils.isNotBlank(data.getActualCompletion())) {
+                        actualCompletionDate = sdf.parse(data.getActualCompletion());
+                    }
+
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+                if (data.getCurrentStatus() == null || data.getCurrentStatus() == 0) {
+                    if (today.after(requiredCompletionDate)) {
+                        int days = (int) ((today.getTime() - requiredCompletionDate.getTime()) / (1000 * 60 * 60 * 24));
+                        data.setStatus("宸查�炬湡" + days + "澶�");
+                    } else if ((requiredCompletionDate.getTime() - today.getTime()) / (1000 * 60 * 60 * 24) < 7) {
+                        int days = (int) ((requiredCompletionDate.getTime() - today.getTime()) / (1000 * 60 * 60 * 24));
+                        data.setStatus("杩樻湁" + days + "澶╀复鏈�");
+                    } else {
+                        data.setStatus("杩涜涓�");
+                    }
+                } else if (data.getCurrentStatus() == 1) {
+                    // 宸插畬鎴�
+                    if (data.getActualCompletion() != null && actualCompletionDate.after(requiredCompletionDate)) {
+                        int days = (int) ((actualCompletionDate.getTime() - requiredCompletionDate.getTime()) / (1000 * 60 * 60 * 24));
+                        data.setStatus("瓒呮湡" + days + "澶╁畬鎴�");
+                    } else {
+                        data.setStatus("姝e父瀹屾垚");
+                    }
+                }
+
+                data.setDeptName(sysTeamGroupClassService.get(data.getDeptId()).getName());
+                data.setTeamName(sysTeamGroupClassService.get(data.getTeamgroupId()).getName());
+        }
+        dto.setDataList(list);
+        List<ExcelColumnDto> columnDto2 = new ArrayList<>();
+        columnDto2.add(new ExcelColumnDto("閮ㄩ棬", "deptName", 25, HorizontalAlignment.CENTER));
+        columnDto2.add(new ExcelColumnDto("涓撲笟", "teamName", 25, HorizontalAlignment.CENTER));
+        columnDto2.add(new ExcelColumnDto("璁惧鍚嶇О", "name", 50, HorizontalAlignment.CENTER));
+        columnDto2.add(new ExcelColumnDto("鑺傜偣鍚嶇О", "processName", 25, HorizontalAlignment.CENTER));
+        columnDto2.add(new ExcelColumnDto("瑕佹眰瀹屾垚鏃堕棿", "requiredCompletionTime", 25, HorizontalAlignment.CENTER));
+        columnDto2.add(new ExcelColumnDto("鐘舵��", "status", 25, HorizontalAlignment.LEFT));
+        dto.setColumnDto(columnDto2);
+        dtos.add(dto);
+        try {
+            ExcelExport.getHSSFWorkbook(path, dtos);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
     }
 
     enum StatusEnum {zy, jxz, lq, yq, zcwc, cqwc}
@@ -435,6 +505,7 @@
                     data.setGeneralRepairUnit(generalRepairUnit);
                 }
                 if (StringUtils.isNotBlank(generalRepairUnitContact)) {
+                    generalRepairUnitContact = TranslateToPlainStrUtils.translateToPlainStr(generalRepairUnitContact);
                     data.setGeneralRepairUnitContact(generalRepairUnitContact);
                 }
                 if (StringUtils.isNotBlank(generalRepairUnitDirector)) {
@@ -444,6 +515,7 @@
                     data.setRepairUnit(repairUnit);
                 }
                 if (StringUtils.isNotBlank(repairUnitContact)) {
+                    repairUnitContact = TranslateToPlainStrUtils.translateToPlainStr(repairUnitContact);
                     data.setRepairUnitContact(repairUnitContact);
                 }
                 if (StringUtils.isNotBlank(repairUnitDirector)) {
@@ -512,7 +584,7 @@
                 // 宸插畬鎴�
                 if (node.getActualCompletion() != null && actualCompletionDate.after(requiredCompletionDate)) {
                     statusMap.put(node.getId(), StatusEnum.cqwc);
-                    int days = (int) ((today.getTime() - requiredCompletionDate.getTime()) / (1000 * 60 * 60 * 24));
+                    int days = (int) ((actualCompletionDate.getTime() - requiredCompletionDate.getTime()) / (1000 * 60 * 60 * 24));
                     node.setCqText("瑕佹眰鏃堕棿涓�" + sdf.format(requiredCompletionDate) + "瓒呮湡" + days + "澶╁畬鎴�");
                 } else {
                     statusMap.put(node.getId(), StatusEnum.zcwc);
@@ -568,11 +640,4 @@
 
         return dataList;
     }
-  /*  public void exportExcelTemplate(HttpServletResponse response, HttpServletRequest request) throws IOException {
-        String excelName="涓夌骇缃戠粶鍥炬壒閲忔ā鐗�";
-        String excelPath = path + "template/jx-model/" + excelName + ".xlsx"; //妯℃澘璺緞
-        File file = new File(excelPath);
-        excelName = excelName + "_" + DateUtil.now() + ".xlsx";
-        DownloadService.exportModelPath(excelPath, excelName, file, response, request);
-    }*/
 }
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 391d936..90d2886 100644
--- a/src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java
+++ b/src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java
@@ -1,5 +1,6 @@
 package com.example.server.progressTrack.service;
 
+import com.example.client.utils.TranslateToPlainStrUtils;
 import com.example.server.ExportExcel.dto.ExcelColumnDto;
 import com.example.client.service.BaseService;
 import com.example.server.ExportExcel.dto.ExprotExcelDto;
@@ -58,7 +59,7 @@
     private SysTeamGroupClassService sysTeamGroupClassService;
 
 
-    public List<DjJdgzTrackRecord> getList(Long level1NetworkId, Long deptId, Long teamId, Long cabinId, String type, Integer status,Integer isealCabin, String name) {
+    public List<DjJdgzTrackRecord> getList(Long level1NetworkId, Long deptId, Long teamId, Long cabinId, String type, Integer status, Integer isealCabin, String name) {
         Long userId = null;
        /* Map adminRole = sysUserService.adminRole();
         Object isTyRole = adminRole.get("isTyRole");
@@ -66,7 +67,7 @@
         if (isTyRole.equals(true) || isYwzRole.equals(true)) {
             userId =  UserContext.getUser().getId();
         }*/
-        List<DjJdgzTrackRecord> list = baseDao.getList(level1NetworkId, deptId, teamId, cabinId, type, status, isealCabin,name);
+        List<DjJdgzTrackRecord> list = baseDao.getList(level1NetworkId, deptId, teamId, cabinId, type, status, isealCabin, name);
         /*if (list != null && list.size() > 0) {
             sysOssService.setListOsses(list, "ProjectProgressFileUpload");
         }*/
@@ -76,18 +77,6 @@
                 Integer trackNum = baseDao.getTrackNum(data.getLevel3NodeId());
                 data.setActualCompletion(data.getEstimatedCompletionTime());
                 data.setTrackNum(trackNum);
-                int weekNo = this.getWeekNo(data.getLevel1NetworkId());
-                if (data.getWeekNo() != null) {
-                    if (data.getWeekNo() != weekNo) {
-                        data.setWeekNo(weekNo);
-                        data.setIsUpdate(false);
-                    } else {
-                        data.setIsUpdate(true);
-                    }
-                } else {
-                    data.setWeekNo(weekNo);
-                    data.setIsUpdate(false);
-                }
             }
         }
         return list;
@@ -102,64 +91,75 @@
         super.deleteLogic(ids);
     }
 
-    public Long save(DjJdgzTrackRecord djJdgzTrackRecord,String type) {
+    public Long save(DjJdgzTrackRecord djJdgzTrackRecord, String type) {
         Long id = null;
-        int weekNo = this.getWeekNo(djJdgzTrackRecord.getLevel1NetworkId());
-        LocalDate currentDate = LocalDate.now();
-        // 瀹氫箟鏃ユ湡鏍煎紡
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        // 灏嗗綋鍓嶆棩鏈熸牸寮忓寲涓哄瓧绗︿覆
-        String formattedDate = currentDate.format(formatter);
-        djJdgzTrackRecord.setUpdateDate(formattedDate);
-        if (djJdgzTrackRecord.getCurrentStatus() == 1 && type.equals("save")) {
-            //鏃堕棿姣旇緝
-            djJdgzTrackRecord.setEstimatedCompletionTime(formattedDate);
-        }
-        if (djJdgzTrackRecord.getIsUpdate()) {
-            this.update(djJdgzTrackRecord);
-            id = djJdgzTrackRecord.getId();
-        } else {
-            id = UUIDUtil.generateId();
-            djJdgzTrackRecord.setWeekNo(weekNo);
-            djJdgzTrackRecord.setId(id);
-            djJdgzTrackRecord.setCreateDate(formattedDate);
-            this.insert(djJdgzTrackRecord);
-            id = djJdgzTrackRecord.getId();
-        }
+        int weekNo = this.getWeekNo(djJdgzTrackRecord.getLevel1NetworkId(),new Date());
 
-        if (djJdgzTrackRecord.getCurrentStatus() == 1) {
-            DjJdgzNetworkLevel3List nextNode = djJdgzNetworkLevel3ListService.getNextNode(djJdgzTrackRecord.getLevel3NodeId(), djJdgzTrackRecord.getLevel3NetworkId());
-            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());
-                data.setLevel3NetworkId(djJdgzTrackRecord.getLevel3NetworkId());
-                data.setLevel3NetworkName(djJdgzTrackRecord.getLevel3NetworkName());
-                data.setEstimatedCompletionTime(nextNode.getRequiredCompletionTime());
-                data.setGeneralRepairUnit(djJdgzTrackRecord.getGeneralRepairUnit());
-                data.setGeneralRepairUnitContact(djJdgzTrackRecord.getGeneralRepairUnitContact());
-                data.setGeneralRepairUnitDirector(djJdgzTrackRecord.getGeneralRepairUnitDirector());
-                data.setRepairUnit(djJdgzTrackRecord.getRepairUnit());
-                data.setRepairUnitContact(djJdgzTrackRecord.getRepairUnitContact());
-                data.setRepairUnitDirector(djJdgzTrackRecord.getRepairUnitDirector());
-                data.setTrackMethod(1);
-                data.setWeekNo(weekNo);
-                data.setUpdateDate(formattedDate);
-                data.setCreateDate(formattedDate);
-                this.insert(data);
+        if (type.equals("import")) {
+            Long oldId = baseDao.getIsExit(djJdgzTrackRecord.getLevel3NetworkId(), djJdgzTrackRecord.getProcessName(), djJdgzTrackRecord.getWeekNo());
+            if (oldId != null) {
+                djJdgzTrackRecord.setId(oldId);
+                djJdgzTrackRecord.setIsUpdate(true);
+            } else {
+                djJdgzTrackRecord.setIsUpdate(false);
+            }
+        }else{
+            if (djJdgzTrackRecord.getWeekNo() != null && djJdgzTrackRecord.getWeekNo() == weekNo) {
+                djJdgzTrackRecord.setIsUpdate(true);
+            } else {
+                djJdgzTrackRecord.setWeekNo(weekNo);
+                djJdgzTrackRecord.setIsUpdate(false);
+            }
+            LocalDate currentDate = LocalDate.now();
+            // 瀹氫箟鏃ユ湡鏍煎紡
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            // 灏嗗綋鍓嶆棩鏈熸牸寮忓寲涓哄瓧绗︿覆
+            String formattedDate = currentDate.format(formatter);
+
+            if (djJdgzTrackRecord.getCurrentStatus() == 1) {
+                djJdgzTrackRecord.setEstimatedCompletionTime(formattedDate);
             }
         }
-        //鏀瑰彉涓夌骇缃戠粶鍥剧姸鎬�
+
+        if (djJdgzTrackRecord.getIsUpdate()) {
+            this.update(djJdgzTrackRecord);
+        } else {
+            djJdgzTrackRecord.setId(null);
+            if(type.equals("save")){
+                djJdgzTrackRecord.setWeekNo(weekNo);
+            }
+            this.insert(djJdgzTrackRecord);
+        }
+        id = djJdgzTrackRecord.getId();
+
         this.setLevel3Status(djJdgzTrackRecord.getLevel3NodeId(), djJdgzTrackRecord.getCurrentStatus(), djJdgzTrackRecord.getEstimatedCompletionTime());
+
+        if (djJdgzTrackRecord.getCurrentStatus() == 1) {
+            DjJdgzNetworkLevel3List nextNode = baseDao.isExistTrackRecord(djJdgzNetworkLevel3ListService.get(djJdgzTrackRecord.getLevel3NodeId()).getSort(), djJdgzTrackRecord.getLevel3NetworkId());
+            if (nextNode != null && nextNode.getTrackRecordId() == null) {
+                djJdgzTrackRecord.setId(null);
+                djJdgzTrackRecord.setLevel3NodeId(nextNode.getId());
+                djJdgzTrackRecord.setProcessName(nextNode.getProcessName());
+                djJdgzTrackRecord.setEstimatedCompletionTime(nextNode.getRequiredCompletionTime());
+                djJdgzTrackRecord.setWeekNo(weekNo);
+                djJdgzTrackRecord.setCurrentStatus(0);
+
+                djJdgzTrackRecord.setUpdateDate(null);
+                djJdgzTrackRecord.setCreateDate(null);
+                djJdgzTrackRecord.setCreator(null);
+                djJdgzTrackRecord.setUpdater(null);
+                this.insert(djJdgzTrackRecord);
+                this.setLevel3Status(djJdgzTrackRecord.getLevel3NodeId(), djJdgzTrackRecord.getCurrentStatus(), djJdgzTrackRecord.getEstimatedCompletionTime());
+            }
+        }
         return id;
+
     }
 
-    public int getWeekNo(Long level1NetworkId) {
+    public int getWeekNo(Long level1NetworkId,Date nowDate) {
         DjJdgzNetworkLevel1 level1Network = djJdgzNetworkLevel1Service.get(level1NetworkId);
         SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd");
-        String formattedDate = sdFormat.format(new Date());
-        Date nowDate = null;
+        String formattedDate = sdFormat.format(nowDate);
         Date startDate = null;
         try {
             nowDate = sdFormat.parse(formattedDate);
@@ -207,8 +207,8 @@
         if (isTyRole.equals(true) || isYwzRole.equals(true)) {
             userId = UserContext.getUser().getId();
         }*/
-        int weekNo = this.getWeekNo(level1NetworkId);
-        List<DjJdgzTrackRecord> data = baseDao.prompt(level1NetworkId, weekNo, userId,deptId,teamId,name);
+        int weekNo = this.getWeekNo(level1NetworkId,new Date());
+        List<DjJdgzTrackRecord> data = baseDao.prompt(level1NetworkId, weekNo, userId, deptId, teamId, name);
         for (DjJdgzTrackRecord record : data) {
             int i = weekNo - record.getWeekNo();
             record.setStatus(i + "鍛ㄦ湭瀹屾垚");
@@ -220,8 +220,6 @@
                             Long level3NetworkId, Long level3NodeId, Integer status, Date beginDate,
                             Date endDate, Integer istq, List<ExcelColumnDto> columnDto) {
         List<ExprotExcelDto> dtos = new ArrayList<>();
-   /*     Map<String, String> keywordMap = dailyPlanService.getReplacement();
-        String keywordT = keywordMap.get("ting");*/
 
         Map<Integer, String> trackMethodMap = new HashMap<>();
         trackMethodMap.put(0, "绾夸笅");
@@ -296,7 +294,8 @@
         }
     }
 
-    public List<DjJdgzTrackRecord> getListByImport(Long level1Id, Long level2Id, Long level2NodeId, String selectedIds) {
+    public List<DjJdgzTrackRecord> getListByImport(Long level1Id, Long level2Id, Long level2NodeId, String
+            selectedIds) {
         return baseDao.getListByImport(level1Id, level2Id, level2NodeId, selectedIds);
     }
 
@@ -388,7 +387,8 @@
                     isErr = true;
                     continue;
                 } else {
-                    int weekNo = this.getWeekNo(level1NetworkId);
+                    Date parsedDate = new SimpleDateFormat("yyyy-MM-dd").parse(dataDate);
+                    int weekNo = this.getWeekNo(level1NetworkId, parsedDate);
                     data.setWeekNo(weekNo);
                     data.setLevel1NetworkId(level1NetworkId);
                     data.setLevel3NetworkId(level3.getId());
@@ -473,6 +473,7 @@
                 }
 
                 if (StringUtils.isNotBlank(trackPersonContact)) {
+                    trackPersonContact = TranslateToPlainStrUtils.translateToPlainStr(trackPersonContact);
                     data.setTrackPersonContact(trackPersonContact);
                 }
 
@@ -485,6 +486,7 @@
                 }
 
                 if (StringUtils.isNotBlank(trackedPersonContact)) {
+                    trackedPersonContact = TranslateToPlainStrUtils.translateToPlainStr(trackedPersonContact);
                     data.setTrackedPersonContact(trackedPersonContact);
                 }
 
@@ -496,6 +498,7 @@
                 }
 
                 if (StringUtils.isNotBlank(generalRepairUnitContact)) {
+                    generalRepairUnitContact = TranslateToPlainStrUtils.translateToPlainStr(generalRepairUnitContact);
                     data.setGeneralRepairUnitContact(generalRepairUnitContact);
                 }
                 if (StringUtils.isNotBlank(generalRepairUnitDirector)) {
@@ -505,6 +508,7 @@
                     data.setRepairUnit(repairUnit);
                 }
                 if (StringUtils.isNotBlank(generalRepairUnit)) {
+                    generalRepairUnit = TranslateToPlainStrUtils.translateToPlainStr(generalRepairUnit);
                     data.setRepairUnitContact(repairUnitContact);
                 }
                 if (StringUtils.isNotBlank(generalRepairUnit)) {
@@ -512,15 +516,7 @@
                 }
 
                 if (!isErr) {
-                    Long oldId = baseDao.getIsExit(data.getLevel3NetworkId(),data.getProcessName());
-                    if (oldId!=null) {
-                        data.setId(oldId);
-                        data.setIsUpdate(true);
-                    }else{
-                        data.setIsUpdate(false);
-                    }
-
-                    this.save(data,"import");
+                    this.save(data, "import");
                 }
                 if (isErr) {
                     err++;
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 4cc3de7..cb75318 100644
--- a/src/main/java/com/example/server/progressTrack/service/NetWorkDiagramService.java
+++ b/src/main/java/com/example/server/progressTrack/service/NetWorkDiagramService.java
@@ -3,6 +3,7 @@
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONNull;
 import cn.hutool.json.JSONObject;;
 import com.example.client.service.BaseService;
 import com.example.client.utils.UUIDUtil;
@@ -1456,7 +1457,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 = JsonUtils2.getJsonValueByPath(jsonObject, "attrs/title/text".split("/")) instanceof JSONNull ? null : (String) JsonUtils2.getJsonValueByPath(jsonObject, "attrs/title/text".split("/"));
                 String idValue = jsonObject.get("id").toString();
 
                 Integer x = (Integer) JsonUtils2.getJsonValueByPath(jsonObject, "position/x".split("/")) + defX;
diff --git a/src/main/resources/db/csiczb1.db b/src/main/resources/db/csiczb1.db
index f7a61aa..919bf77 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/DjJdgzNetworkLevel2Dao.xml b/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2Dao.xml
index 293e84a..51302a6 100644
--- a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2Dao.xml
+++ b/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2Dao.xml
@@ -45,9 +45,6 @@
                 and b.ship_id = ${shipId}
             </if>
         </where>
-        <if test="orderBySql!=null">
-            ORDER BY ${orderBySql}
-        </if>
     </select>
     <select id="getLevel2List" resultType="com.example.client.dto.JComboBoxItem">
         select a.id,c.process_name as `name`
diff --git a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml b/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml
index 8ff478e..e017744 100644
--- a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml
+++ b/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml
@@ -224,6 +224,46 @@
 
             LIMIT 1;
     </select>
+    <select id="getdata" resultType="com.example.server.progressTrack.Dto.Level3ExportCloum">
+        select c.NAME,b.PROCESS_NAME,b.CURRENT_STATUS,b.REQUIRED_COMPLETION_TIME,b.ACTUAL_COMPLETION,c.dept_id,c.teamgroup_id
+        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 c.LEVEL1_NETWORK_ID = ${level1NetworkId}
+        and c.LEVEL1_NETWORK_ID = d.id
+        and b.IS_DELETE = 0
+        and b.NETWORK_ID = c.id
+        and c.IS_DELETE = 0
+        and d.IS_DELETE = 0
+        <if test="deptId!=null">
+            and c.DEPT_ID = ${deptId}
+        </if>
+        <if test="teamGroupId!=null">
+            and c.TEAMGROUP_ID = ${teamGroupId}
+        </if>
+        <if test="status!=null and status=='杩涜涓�'">
+            and (b.CURRENT_STATUS = 0 or b.CURRENT_STATUS is null)
+            and b.REQUIRED_COMPLETION_TIME &gt;= ( SELECT date( 'now', '-' || d.advent_day || ' days' ) )
+        </if>
+        <if test="status!=null and status=='涓存湡'">
+            and (b.CURRENT_STATUS = 0 or b.CURRENT_STATUS is null)
+            and b.REQUIRED_COMPLETION_TIME &lt; ( SELECT date( 'now', '-' || d.advent_day || ' days' ) )
+        </if>
+        <if test="status!=null and status=='閫炬湡'">
+            and (b.CURRENT_STATUS = 0 or b.CURRENT_STATUS is null)
+            and b.REQUIRED_COMPLETION_TIME &lt; ( SELECT datetime( 'now' ) )
+        </if>
+        <if test="status!=null and status=='姝e父瀹屾垚'">
+            and b.CURRENT_STATUS = 1
+            AND b.REQUIRED_COMPLETION_TIME &gt;= b.ACTUAL_COMPLETION
+        </if>
+        <if test="status!=null and status=='瓒呮湡瀹屾垚'">
+            and b.CURRENT_STATUS = 1
+            AND b.REQUIRED_COMPLETION_TIME &lt; b.ACTUAL_COMPLETION
+        </if>
+    </select>
 
 
 </mapper>
diff --git a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml b/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml
index fa406ef..aba92a8 100644
--- a/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml
+++ b/src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml
@@ -27,8 +27,8 @@
         from dj_jdgz_network_level3_list
         where is_delete = 0
           and network_id = ${networkId}
-          and sort = ${sort}
-        ORDER BY sort
+          and sort &gt; ${sort}
+        ORDER BY sort limit 1
     </select>
     <select id="getDefult"
             resultType="com.example.server.progressTrack.model.DjJdgzNetworkLevel3List">
diff --git a/src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml b/src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml
index f4883e6..22b7237 100644
--- a/src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml
+++ b/src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml
@@ -90,7 +90,7 @@
         <if test="deptId!=null">
             and c.dept_id = ${deptId}
         </if>
-        <if test="isealCabin!=10000">
+        <if test="isealCabin!=10000 and isealCabin!=null">
             and c.iseal_cabin = ${isealCabin}
         </if>
         <if test="teamId!=null">
@@ -137,38 +137,38 @@
     </select>
     <select id="getReport" resultType="com.example.server.progressTrack.Dto.StatistReportsDto">
         select d.*, e.name as teamGroupName
-        from (
-                 select TEAMGROUP_ID,
-                        count(1)                                                           as allNum,
-                        sum(case when status = 'zcjxz' or status = 'lq' then 1 else 0 end) as jxzNum,
-                        sum(case when status = 'lq' then 1 else 0 end)                     as lqNum,
-                        sum(case when status = 'yq' then 1 else 0 end)                     as yqNum,
-                        sum(case when status = 'zcwc' then 1 else 0 end)                   as zcwcNum,
-                        sum(case when status = 'cqwc' then 1 else 0 end)                   as cqwcNum
-                 from (
-                          select a.TEAMGROUP_ID,
-                                 CASE
-                                     WHEN b.CURRENT_STATUS = 1
-                                         AND b.REQUIRED_COMPLETION_TIME > b.ACTUAL_COMPLETION THEN
-                                         'cqwc'
-                                     WHEN b.CURRENT_STATUS = 1 THEN
-                                         'zcwc'
-                                     WHEN b.REQUIRED_COMPLETION_TIME &lt; (SELECT datetime('now')) THEN 'yq'
-                                     WHEN b.REQUIRED_COMPLETION_TIME &lt;
-                                          (SELECT date('now', '-' || c.advent_day || ' days')) THEN 'lq'
+        from (select TEAMGROUP_ID,
+                     count(1)                                                           as allNum,
+                     sum(case when status = 'zcjxz' or status = 'lq' then 1 else 0 end) as jxzNum,
+                     sum(case when status = 'lq' then 1 else 0 end)                     as lqNum,
+                     sum(case when status = 'yq' then 1 else 0 end)                     as yqNum,
+                     sum(case when status = 'zcwc' then 1 else 0 end)                   as zcwcNum,
+                     sum(case when status = 'cqwc' then 1 else 0 end)                   as cqwcNum
+              from (select c.TEAMGROUP_ID,
+                           CASE
+                               WHEN b.CURRENT_STATUS = 1
+                                   AND b.REQUIRED_COMPLETION_TIME > b.ACTUAL_COMPLETION THEN
+                                   'cqwc'
+                               WHEN b.CURRENT_STATUS = 1 THEN
+                                   'zcwc'
+                               WHEN b.REQUIRED_COMPLETION_TIME &lt; (SELECT datetime('now')) THEN 'yq'
+                               WHEN b.REQUIRED_COMPLETION_TIME &lt;
+                                    (SELECT date('now', '-' || d.advent_day || ' days')) THEN 'lq'
                                      ELSE 'zcjxz'
                                      END AS status
-                          from dj_jdgz_network_level3 a,
-                               dj_jdgz_network_level3_list b,
-                               dj_jdgz_network_level1 c
-                          where a.IS_DELETE = 0
-                            and a.LEVEL1_NETWORK_ID = ${level1NetworkId}
-                            and a.LEVEL1_NETWORK_ID = c.id
-                            and b.IS_DELETE = 0
-                            and b.NETWORK_ID = a.id
-                      ) c
-                 group by TEAMGROUP_ID
-             ) d,
+              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 c.IS_DELETE = 0
+                and c.LEVEL1_NETWORK_ID = ${level1NetworkId}
+                and c.LEVEL1_NETWORK_ID = d.id
+                and b.IS_DELETE = 0
+                and a.IS_DELETE = 0
+                and d.IS_DELETE = 0
+                and b.NETWORK_ID = c.id) c
+        group by TEAMGROUP_ID ) d,
              dj_sys_teamgroup_class e
         where d.TEAMGROUP_ID = e.id
     </select>
@@ -258,7 +258,7 @@
         a.IS_DELETE = 0
         and a.network_id != 10000
         <if test="teamgroupId!=null and teamgroupId!=''">
-            AND a.TEAMGROUP_ID in (${teamgroupId})
+            AND h.ID in (${teamgroupId})
         </if>
         <if test="istq!=1 and istq!=null">
             AND a.REQUIRED_COMPLETION_TIME &lt; b.estimated_completion_time
@@ -470,24 +470,26 @@
         a.REQUIRED_COMPLETION_TIME
     </select>
     <select id="getReportRecord" resultType="com.example.server.progressTrack.Dto.ReportRecordDto">
-        select a.NAME,b.PROCESS_NAME
-        from dj_jdgz_network_level3 a,
-        dj_jdgz_network_level3_list b,
-        dj_jdgz_network_level1 c
+        select c.NAME,b.PROCESS_NAME
+        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 a.LEVEL1_NETWORK_ID = ${level1NetworkId}
-        and a.TEAMGROUP_ID = ${teamgroupId}
-        and a.LEVEL1_NETWORK_ID = c.id
+        and c.LEVEL1_NETWORK_ID = ${level1NetworkId}
+        and c.TEAMGROUP_ID = ${teamgroupId}
+        and c.LEVEL1_NETWORK_ID = d.id
         and b.IS_DELETE = 0
-        and b.NETWORK_ID = a.id
+        and b.NETWORK_ID = c.id
         and c.IS_DELETE = 0
+        and d.IS_DELETE = 0
         <if test="column==2">
             and (b.CURRENT_STATUS = 0 or b.CURRENT_STATUS is null)
-            and b.REQUIRED_COMPLETION_TIME &gt;= ( SELECT date( 'now', '-' || c.advent_day || ' days' ) )
+            and b.REQUIRED_COMPLETION_TIME &gt;= ( SELECT date( 'now', '-' || d.advent_day || ' days' ) )
         </if>
         <if test="column==3">
             and (b.CURRENT_STATUS = 0 or b.CURRENT_STATUS is null)
-            and b.REQUIRED_COMPLETION_TIME &lt; ( SELECT date( 'now', '-' || c.advent_day || ' days' ) )
+            and b.REQUIRED_COMPLETION_TIME &lt; ( SELECT date( 'now', '-' || d.advent_day || ' days' ) )
         </if>
         <if test="column==4">
             and (b.CURRENT_STATUS = 0 or b.CURRENT_STATUS is null)
@@ -508,13 +510,10 @@
         WHERE LEVEL3_NETWORK_ID = ${level3NetworkId}
           AND process_name = #{processName}
           AND is_delete = 0
-          AND update_date = (
-            SELECT MAX(update_date)
-            FROM dj_jdgz_track_record
-            WHERE LEVEL3_NETWORK_ID = ${level3NetworkId}
-              AND process_name = #{processName}
-              AND is_delete = 0
-        )
+        <if test="weekNo!=null">
+          and week_no = ${weekNo}
+        </if>
+        limit 1
     </select>
     <select id="getName" resultType="com.example.server.progressTrack.model.DjJdgzTrackRecord">
         SELECT
@@ -529,5 +528,15 @@
         ORDER BY
             CREATE_DATE ,UPDATE_DATE
     </select>
+    <select id="isExistTrackRecord" resultType="com.example.server.progressTrack.model.DjJdgzNetworkLevel3List">
+        select a.*,b.id as trackRecordId
+        from dj_jdgz_network_level3_list a
+        left join dj_jdgz_track_record b on b.is_delete = 0 and a.id = b.LEVEL3_NODE_ID
+        where a.is_delete = 0
+          and a.network_id = ${level3NetworkId}
+          and a.sort &gt; ${sort}
+        order by a.sort
+        limit 1
+    </select>
 
 </mapper>

--
Gitblit v1.9.1