jinlin
2025-04-05 92705ac08a97ddc4904795f024723aab69e1abd8
src/main/java/com/example/client/service/SubunitAddOrUpdate.java
@@ -5,15 +5,17 @@
import com.example.client.model.TableButton;
import com.example.client.utils.BoxIteUtils;
import com.example.client.utils.CommonTable;
import com.example.client.utils.Compute;
import com.example.client.utils.GBC;
import com.example.server.cabin.service.CabinService;
import com.example.server.progressTrack.model.DjJdgzDismantTrack;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
import com.example.server.progressTrack.model.DjJdgzTrackRecord;
import com.example.server.progressTrack.service.DjJdgzDismantTrackService;
import com.example.server.progressTrack.service.DjJdgzNetworkLevel3Service;
import com.example.server.teamGroup.service.SysTeamGroupClassService;
import com.example.server.user.model.SysUser;
import com.example.server.utils.CacheUtils;
import com.example.server.utils.UserAndSiteUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -41,15 +43,19 @@
    private CabinService cabinService;
    private List<ColumnDto> columnDto;
    private JTable trackTable;
    private DjJdgzNetworkLevel3 nowLevel3;
    private JFrame nowFrame;
    public JPanel createTrack(Integer width, Integer height, DjJdgzNetworkLevel3 djJdgzNetworkLevel3,JFrame frame) {
        JPanel panel = new JPanel();
    public JPanel createTrack(Integer width, Integer height, DjJdgzNetworkLevel3 djJdgzNetworkLevel3, JFrame frame) {
        nowLevel3 = djJdgzNetworkLevel3;
        nowFrame = frame;
        JPanel panel = new JPanel(new BorderLayout());
        panel.setPreferredSize(new Dimension(width, height));
        JPanel topJpanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        topJpanel.setPreferredSize(new Dimension(width - 10, 37));
        topJpanel.setPreferredSize(new Dimension(width - 10, 40));
        JPanel centerJpanel = new JPanel();
        centerJpanel.setPreferredSize(new Dimension(width - 20, height - 100));
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(40, nowFrame)));
        panel.add(topJpanel, BorderLayout.NORTH);
        panel.add(centerJpanel, BorderLayout.CENTER);
@@ -59,7 +65,7 @@
        topJpanel.add(btnInsert);
        JComboBoxItem[] cabinList = cabinService.getList();
        List<DjJdgzDismantTrack> list = djJdgzDismantTrackService.getList(djJdgzNetworkLevel3.getId(), null);
        List<DjJdgzDismantTrack> list = djJdgzDismantTrackService.getList(nowLevel3.getId(), null);
        List<TableButton> buttonList = new ArrayList<>();
        buttonList.add(new TableButton("edit", "编辑"));
        buttonList.add(new TableButton("del", "删除"));
@@ -74,40 +80,55 @@
        columnDto.add(new ColumnDto("操作", "", 200, "", true, buttonList, null));
        trackTable = CommonTable.createCommonTable(list, columnDto);
        trackTable.setPreferredSize(new Dimension(width , height));
        trackTable.setPreferredSize(new Dimension(width, height));
        trackTable.setRowHeight(25);
        trackTable.setAutoCreateRowSorter(true);
        trackTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        tableModelListener(trackTable, frame,list,columnDto);
        tableModelListener(trackTable, list, columnDto);
        btnInsert.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                SysUser user = (SysUser) CacheUtils.get("user", "user");
                if (user.getTeamgroup()==null||user.getTeamgroup().equals(djJdgzNetworkLevel3.getTeamgroupId())) {
                    DjJdgzDismantTrack djJdgzDismantTrack = new DjJdgzDismantTrack();
                    djJdgzDismantTrack.setLevel3NetworkId(djJdgzNetworkLevel3.getId());
                    insert(frame,djJdgzDismantTrack);
                }else{
                    JOptionPane.showMessageDialog(null, "不可操作其他专业数据", "提示", JOptionPane.WARNING_MESSAGE);
                nowFrame.setEnabled(false);
                SysUser user = (SysUser) UserAndSiteUtils.get("user", "user");
                if (user == null) {
                    nowFrame.setEnabled(true);
                    JOptionPane.showMessageDialog(null, "当前用户已失效请重新登录", "提示", JOptionPane.WARNING_MESSAGE);
                    return;
                }
                if (user.getTeamgroup() == null || user.getTeamgroup().equals(nowLevel3.getTeamgroupId().toString())) {
                    DjJdgzDismantTrack djJdgzDismantTrack = new DjJdgzDismantTrack();
                    djJdgzDismantTrack.setLevel3NetworkId(nowLevel3.getId());
                    insert(nowFrame, djJdgzDismantTrack);
                } else {
                    nowFrame.setEnabled(true);
                    JOptionPane.showMessageDialog(null, "当前用户不可操作其他专业数据", "提示", JOptionPane.WARNING_MESSAGE);
                }
            }
        });
        JScrollPane scrollPane = new JScrollPane(trackTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane.setViewportView(trackTable);
        scrollPane.setPreferredSize(new Dimension(width - 20, height - 130));
        scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(40, nowFrame)));
        centerJpanel.add(scrollPane);
        nowFrame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(40, nowFrame)));
                scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(40, nowFrame)));
                centerJpanel.revalidate();
                centerJpanel.repaint();
                scrollPane.revalidate();
                scrollPane.repaint();
            }
        });
        return panel;
    }
    private void insert(JFrame jFrame, DjJdgzDismantTrack data) {
        if (data.getLevel3NetworkId()==null){
        if (data.getLevel3NetworkId() == null) {
            JOptionPane.showMessageDialog(null, "没有选择设备", "提示", JOptionPane.WARNING_MESSAGE);
            return;
        }
@@ -133,7 +154,7 @@
        JComboBox<JComboBoxItem> comboBox0 = new JComboBox<>(cabinList);
        comboBox0.setPreferredSize(new Dimension(185, 28));
        comboBox0.setSelectedIndex(-1);
        if(data.getCabinId()!=null){
        if (data.getCabinId() != null) {
            comboBox0.setSelectedItem(BoxIteUtils.GetSelectItemById(cabinList, data.getCabinId()));
        }
@@ -155,6 +176,11 @@
        frame1.add(btnSave, new GBC(0, 2, 2, 1).setWeight(1, 0));
        btnSave.addActionListener((e) -> {
            SysUser user = (SysUser) UserAndSiteUtils.get("user","user");
            if (user==null){
                JOptionPane.showMessageDialog(null, "用户失效请退出并重新登录", "提示", JOptionPane.WARNING_MESSAGE);
                return;
            }
            JComboBoxItem cabin = (JComboBoxItem) comboBox0.getSelectedItem();
            String name = subunitName.getText();
@@ -163,21 +189,25 @@
            List<DjJdgzDismantTrack> list = new ArrayList<>();
            list.add(data);
            djJdgzDismantTrackService.save(list);
            //tableModelListener(trackTable, jFrame,list,columnDto);
            this.refreshTable(data.getLevel3NetworkId(), null);
            frame1.dispose();
            jFrame.setEnabled(true);//将主界面再设置为可操作的
            JOptionPane.showMessageDialog(null, "保存成功", "提示", JOptionPane.WARNING_MESSAGE);
        });
    }
    public void refreshTable(Long level3Id,JFrame jFrame){
    public void refreshTable(Long level3Id, JFrame jFrame) {
        nowLevel3 = level3Service.get(level3Id);
        List<DjJdgzDismantTrack> list = djJdgzDismantTrackService.getList(level3Id, null);
        CommonTable.refreshTable(list, columnDto, trackTable);
        trackTable.setRowHeight(25);
        trackTable.setAutoCreateRowSorter(true);
        trackTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        tableModelListener(trackTable, jFrame,list,columnDto);
        tableModelListener(trackTable, list, columnDto);
    }
    public void tableModelListener(JTable table,JFrame jFrame,List<DjJdgzDismantTrack> list,List<ColumnDto> columnDto){
    public void tableModelListener(JTable table, List<DjJdgzDismantTrack> list, List<ColumnDto> columnDto) {
        table.getModel().addTableModelListener(e -> {
            // 检查事件类型
            if (e.getType() == TableModelEvent.UPDATE) {
@@ -188,16 +218,16 @@
                // 获取新的值
                Object newValue = table.getModel().getValueAt(row, column);
                // 输出变化信息
                if (newValue.equals("edit")){
                if (newValue.equals("edit")) {
                    nowFrame.setEnabled(false);
                    DjJdgzDismantTrack data = list.get(row);
                    insert(jFrame,data);
                    jFrame.setEnabled(false);
                }else if(newValue.equals("del")) {
                    insert(nowFrame, data);
                } else if (newValue.equals("del")) {
                    int n = JOptionPane.showConfirmDialog(null, "是否删除?", "提示", JOptionPane.YES_NO_OPTION);
                    if (n == 0) {
                        DefaultTableModel model = (DefaultTableModel) table.getModel();
                        DjJdgzDismantTrack data = list.get(row);
                        djJdgzDismantTrackService.deleteLogic(data.getId());
                        djJdgzDismantTrackService.delete(data.getId());
                        list.remove(row);
                        model.removeRow(row);
                    }