jinlin
4 天以前 66f0597bf6a1e79540c6bc51dedf561c22f3bdb5
修改
18个文件已修改
2个文件已添加
563 ■■■■ 已修改文件
src/main/java/com/example/client/service/Level3ManageService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/Level3View2Service.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/TeamGroupAddOrUpdate.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/TrackRecordAddOrUpdate.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/service/TrackRecordManageService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/client/utils/TranslateToPlainStrUtils.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/Dto/Level3ExportCloum.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/dao/DjJdgzNetworkLevel3Dao.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/dao/DjJdgzTrackRecordDao.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/model/DjJdgzNetworkLevel3List.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel1Service.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3ListService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzNetworkLevel3Service.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/server/progressTrack/service/NetWorkDiagramService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/db/csiczb1.db 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel2Dao.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3Dao.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/DjJdgzNetworkLevel3ListDao.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/progressTrack/DjJdgzTrackRecordDao.xml 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
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[]{
                "","进行中","临期","逾期","正常完成","超期完成"
        };
        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, ""),
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());
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();
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());
src/main/java/com/example/client/utils/TranslateToPlainStrUtils.java
New file
@@ -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+)$";
        // 编译正则表达式
        Pattern pattern = Pattern.compile(regEx);
        Matcher matcher = pattern.matcher(number);
        // 字符串是否与正则表达式相匹配
        boolean rs = matcher.matches();
        // 判断是否为字符串的科学计数法
        if (rs) {
            // 科学计数法转数字
            BigDecimal originValue = new BigDecimal(number);
            return originValue.toPlainString();
        }
        return number;
    }
}
src/main/java/com/example/server/progressTrack/Dto/Level3ExportCloum.java
New file
@@ -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;
}
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);
}
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);
}
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;
}
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;
    }
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{
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("正常完成");
                    }
                }
                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);
    }*/
}
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;
@@ -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;
@@ -104,62 +93,73 @@
    public Long save(DjJdgzTrackRecord djJdgzTrackRecord,String type) {
        Long id = null;
        int weekNo = this.getWeekNo(djJdgzTrackRecord.getLevel1NetworkId());
        int weekNo = this.getWeekNo(djJdgzTrackRecord.getLevel1NetworkId(),new Date());
        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);
        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();
        }
        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);
                djJdgzTrackRecord.setEstimatedCompletionTime(formattedDate);
            }
        }
        //改变三级网络图状态
        this.setLevel3Status(djJdgzTrackRecord.getLevel3NodeId(), djJdgzTrackRecord.getCurrentStatus(), djJdgzTrackRecord.getEstimatedCompletionTime());
        return id;
    }
    public int getWeekNo(Long level1NetworkId) {
        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,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,7 +207,7 @@
        if (isTyRole.equals(true) || isYwzRole.equals(true)) {
            userId = UserContext.getUser().getId();
        }*/
        int weekNo = this.getWeekNo(level1NetworkId);
        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();
@@ -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,14 +516,6 @@
                }
                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");
                }
                if (isErr) {
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;
src/main/resources/db/csiczb1.db
Binary files differ
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`
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=='正常完成'">
            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>
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">
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,16 +137,14 @@
    </select>
    <select id="getReport" resultType="com.example.server.progressTrack.Dto.StatistReportsDto">
        select d.*, e.name as teamGroupName
        from (
                 select TEAMGROUP_ID,
        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,
              from (select c.TEAMGROUP_ID,
                                 CASE
                                     WHEN b.CURRENT_STATUS = 1
                                         AND b.REQUIRED_COMPLETION_TIME > b.ACTUAL_COMPLETION THEN
@@ -155,20 +153,22 @@
                                         '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'
                                    (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
              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 b.NETWORK_ID = a.id
                      ) c
                 group by TEAMGROUP_ID
             ) d,
                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>