package com.example.client.service;
|
|
import com.example.client.dto.ColumnDto;
|
import com.example.client.dto.JComboBoxItem;
|
import com.example.client.model.TableButton;
|
import com.example.client.utils.CellComboBoxEditor;
|
import com.example.client.utils.CellComboBoxRenderer;
|
import com.example.client.utils.CommonTable;
|
import com.example.server.progressTrack.model.DjJdgzNetworkLevel2List;
|
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
|
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3List;
|
import com.example.server.progressTrack.service.DjJdgzNetworkLevel3ListService;
|
import com.example.server.progressTrack.service.NetWorkDiagramService;
|
import com.example.server.teamGroup.service.SysTeamGroupClassService;
|
import com.example.server.user.model.SysUser;
|
import com.example.server.utils.UserAndSiteUtils;
|
import com.mxgraph.swing.mxGraphComponent;
|
import com.mxgraph.view.mxGraph;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.swing.*;
|
import javax.swing.event.TableModelEvent;
|
import javax.swing.plaf.basic.BasicComboBoxRenderer;
|
import javax.swing.table.DefaultTableModel;
|
import javax.swing.table.TableModel;
|
import java.awt.*;
|
import java.awt.event.*;
|
import java.util.*;
|
import java.util.List;
|
|
@Service
|
public class Level3AddOrUpdate {
|
@Autowired
|
private NetWorkDiagramService netWorkDiagramService;
|
@Autowired
|
private DjJdgzNetworkLevel3ListService level3ListService;
|
@Autowired
|
private Level3ManageService level3ManageService;
|
|
public void openDialog(DjJdgzNetworkLevel3 data, JFrame jFrame) {
|
JFrame frame1 = new JFrame("三级网络图编辑");
|
frame1.setSize(1500, 800);
|
frame1.setResizable(true);
|
frame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
|
frame1.setLocationRelativeTo(null);
|
frame1.addWindowListener(new WindowAdapter() {
|
//添加第二个界面的关闭事件:
|
public void windowClosing(WindowEvent e) {
|
//添加事件:
|
jFrame.setEnabled(true);//将主界面再设置为可操作的
|
}
|
});
|
|
JPanel jLeft = new JPanel(new BorderLayout());
|
JPanel topJpanel = new JPanel(new FlowLayout());
|
JPanel diagram = new JPanel(new BorderLayout());
|
|
JSpinner timeSpinner = new JSpinner(new SpinnerDateModel());
|
JSpinner.DateEditor timeEditor = new JSpinner.DateEditor(timeSpinner, "yyyy-MM-dd");
|
timeSpinner.setEditor(timeEditor);
|
|
JButton btnUpdate = new JButton("修改设备信息");
|
JButton btnSave = new JButton("保存数据");
|
topJpanel.add(btnUpdate);
|
topJpanel.add(btnSave);
|
|
// 创建子表格
|
List<ColumnDto> columnDto = new ArrayList<>();
|
List<DjJdgzNetworkLevel3List> list = level3ListService.getList(data.getId());
|
if (list.size() == 0) {
|
list = level3ListService.getDefult(data.getType());
|
}
|
for (DjJdgzNetworkLevel3List item : list) {
|
if (item.getTeamgroupId() == null) {
|
item.setTeamgroupId(data.getTeamgroupId());
|
}
|
}
|
|
//JComboBoxItem[] teamGroupList = sysTeamGroupClassService.getList();
|
//columnDto.add(new ColumnDto("ID", "id", -1, null,false));
|
|
List<TableButton> buttonList = new ArrayList<>();
|
buttonList.add(new TableButton("del", "删除"));
|
|
|
columnDto.add(new ColumnDto("序号", "", 50, "autoCreate", true, null, null));
|
columnDto.add(new ColumnDto("节点名称", "ProcessName", 160, null, true, null, null));
|
columnDto.add(new ColumnDto("要求完成时间", "requiredCompletionTime", 160, "selectDate", true, null, null));
|
columnDto.add(new ColumnDto("操作", "", 85, "", true, buttonList, null));
|
|
|
JTable subTable = CommonTable.createCommonTable(list, columnDto);
|
subTable.setRowHeight(25);
|
subTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
|
|
List<DjJdgzNetworkLevel3List> finalList = list;
|
subTable.getModel().addTableModelListener(e -> {
|
// 检查事件类型
|
if (e.getType() == TableModelEvent.UPDATE) {
|
// 获取变化的行和列
|
int row = e.getFirstRow();
|
int column = e.getColumn();
|
|
// 获取新的值
|
Object newValue = subTable.getModel().getValueAt(row, column);
|
// 输出变化信息
|
if (newValue.equals("del")) {
|
DefaultTableModel model = (DefaultTableModel) subTable.getModel();
|
model.removeRow(row);
|
DjJdgzNetworkLevel3List djJdgzNetworkLevel3List = finalList.get(row);
|
level3ListService.deleteLogic(djJdgzNetworkLevel3List.getId());
|
finalList.remove(row);
|
} else {
|
/* if (column == 1 && newValue instanceof Integer) {
|
subTable.getModel().setValueAt(newValue.toString(), row, column);
|
}*/
|
}
|
System.out.println("单元格变化: 行=" + row + ", 列=" + column + ", 新值=" + newValue);
|
}
|
});
|
|
JScrollPane scrollTable = new JScrollPane(subTable);
|
jLeft.add(topJpanel, BorderLayout.NORTH);
|
jLeft.add(scrollTable, BorderLayout.CENTER);
|
|
|
// 创建水平分割面板
|
JSplitPane hSplitPane = new JSplitPane(
|
JSplitPane.HORIZONTAL_SPLIT,
|
jLeft,
|
diagram
|
);
|
hSplitPane.setDividerLocation(510);
|
hSplitPane.setDividerSize(10);
|
hSplitPane.setOneTouchExpandable(true);
|
hSplitPane.setContinuousLayout(true);
|
|
frame1.add(hSplitPane, BorderLayout.CENTER);
|
frame1.setVisible(true);
|
|
mxGraph graph = new mxGraph();
|
graph = netWorkDiagramService.getCsDiagram(graph, data.getContent(), null, diagram.getWidth(), diagram.getHeight(),null);
|
mxGraphComponent graphComponent = new mxGraphComponent(graph);
|
graphComponent.setConnectable(false);
|
graphComponent.setDragEnabled(false);
|
graphComponent.zoomTo(1, true);
|
diagram.add(graphComponent);
|
|
mxGraph finalGraph = graph;
|
graphComponent.getViewport().addMouseWheelListener(new MouseWheelListener() {
|
@Override
|
public void mouseWheelMoved(MouseWheelEvent e) {
|
int notches = e.getWheelRotation();
|
double zoomFactor = 1.1; // 缩放因子
|
Point pt = e.getPoint();
|
double zoom = finalGraph.getView().getScale() * (notches < 0 ? zoomFactor : 1 / zoomFactor);
|
graphComponent.zoomTo(zoom, true); // 缩放视图
|
}
|
});
|
|
mxGraph finalGraph1 = graph;
|
btnSave.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
SysUser user = (SysUser) UserAndSiteUtils.get("user", "user");
|
if (user == null) {
|
JOptionPane.showMessageDialog(null, "用户失效请退出并重新登录", "提示", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
if (subTable.isEditing()) {
|
subTable.getCellEditor().stopCellEditing();
|
}
|
CommonTable.saveTableList(finalList, subTable, columnDto);
|
level3ListService.save(finalList, data.getId(), diagram, finalGraph1);
|
JOptionPane.showMessageDialog(null, "保存成功", "提示", JOptionPane.WARNING_MESSAGE);
|
}
|
});
|
btnUpdate.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
SysUser user = (SysUser) UserAndSiteUtils.get("user", "user");
|
if (user == null) {
|
JOptionPane.showMessageDialog(null, "用户失效请退出并重新登录", "提示", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
level3ManageService.insert(jFrame,data);
|
}
|
});
|
|
}
|
}
|