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.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 org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.swing.*;
|
import javax.swing.event.TableModelEvent;
|
import javax.swing.table.DefaultTableModel;
|
import java.awt.*;
|
import java.awt.event.*;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
|
@Service
|
public class SubunitAddOrUpdate {
|
@Autowired
|
private DjJdgzNetworkLevel3Service level3Service;
|
@Autowired
|
private SysTeamGroupClassService sysTeamGroupClassService;
|
@Autowired
|
private DjJdgzDismantTrackService djJdgzDismantTrackService;
|
@Autowired
|
private ImportDismantTrackService importDismantTrackService;
|
@Autowired
|
private CabinService cabinService;
|
private List<ColumnDto> columnDto;
|
private JTable trackTable;
|
private DjJdgzNetworkLevel3 nowLevel3;
|
|
public JPanel createTrack(Integer width, Integer height, DjJdgzNetworkLevel3 djJdgzNetworkLevel3,JFrame frame) {
|
nowLevel3 = djJdgzNetworkLevel3;
|
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, 40));
|
|
JPanel centerJpanel = new JPanel();
|
centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(40,frame)));
|
panel.add(topJpanel, BorderLayout.NORTH);
|
panel.add(centerJpanel, BorderLayout.CENTER);
|
|
JButton btnInsert = new JButton("新增");
|
|
|
topJpanel.add(btnInsert);
|
|
JComboBoxItem[] cabinList = cabinService.getList();
|
List<DjJdgzDismantTrack> list = djJdgzDismantTrackService.getList(nowLevel3.getId(), null);
|
List<TableButton> buttonList = new ArrayList<>();
|
buttonList.add(new TableButton("edit", "编辑"));
|
buttonList.add(new TableButton("del", "删除"));
|
|
// 创建左侧表格
|
columnDto = new ArrayList<>();
|
|
//columnDto.add(new ColumnDto("ID", "id", -1, null,false));
|
columnDto.add(new ColumnDto("序号", "", 200, "autoCreate", false, null, null));
|
columnDto.add(new ColumnDto("舱室", "cabinId", 200, "dict", false, null, cabinList));
|
columnDto.add(new ColumnDto("部件名称", "name", 200, null, false, null, null));
|
columnDto.add(new ColumnDto("操作", "", 200, "", true, buttonList, null));
|
|
trackTable = CommonTable.createCommonTable(list, columnDto);
|
trackTable.setPreferredSize(new Dimension(width , height));
|
trackTable.setRowHeight(25);
|
|
trackTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
|
|
tableModelListener(trackTable, frame,list,columnDto);
|
|
btnInsert.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
frame.setEnabled(false);
|
SysUser user = (SysUser) CacheUtils.get("user", "user");
|
if (user.getTeamgroup()==null||user.getTeamgroup().equals(nowLevel3.getTeamgroupId().toString())) {
|
DjJdgzDismantTrack djJdgzDismantTrack = new DjJdgzDismantTrack();
|
djJdgzDismantTrack.setLevel3NetworkId(nowLevel3.getId());
|
insert(frame,djJdgzDismantTrack);
|
}else{
|
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, Compute.ComputeHeightWithScroll(40,frame)));
|
centerJpanel.add(scrollPane);
|
frame.addComponentListener(new ComponentAdapter() {
|
@Override
|
public void componentResized(ComponentEvent e) {
|
centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(40,frame)));
|
scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(40,frame)));
|
centerJpanel.revalidate();
|
centerJpanel.repaint();
|
scrollPane.revalidate();
|
scrollPane.repaint();
|
}
|
});
|
return panel;
|
}
|
|
private void insert(JFrame jFrame, DjJdgzDismantTrack data) {
|
if (data.getLevel3NetworkId()==null){
|
JOptionPane.showMessageDialog(null, "没有选择设备", "提示", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
JFrame frame1 = new JFrame("新增子部件");
|
frame1.setSize(470, 430);
|
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[] cabinList = cabinService.getList();
|
|
JLabel JLabel1 = new JLabel("舱室");
|
JComboBox<JComboBoxItem> comboBox0 = new JComboBox<>(cabinList);
|
comboBox0.setPreferredSize(new Dimension(185, 28));
|
comboBox0.setSelectedIndex(-1);
|
if(data.getCabinId()!=null){
|
comboBox0.setSelectedItem(BoxIteUtils.GetSelectItemById(cabinList, data.getCabinId()));
|
}
|
|
JLabel JLabel8 = new JLabel("子部件名称");
|
JTextField subunitName = new JTextField(16);
|
if (StringUtils.isNotBlank(data.getName())) {
|
subunitName.setText(data.getName());
|
}
|
|
|
JButton btnSave = 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(JLabel8, new GBC(0, 1, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
|
frame1.add(subunitName, new GBC(1, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
|
|
frame1.add(btnSave, new GBC(0, 2, 2, 1).setWeight(1, 0));
|
|
btnSave.addActionListener((e) -> {
|
JComboBoxItem cabin = (JComboBoxItem) comboBox0.getSelectedItem();
|
|
String name = subunitName.getText();
|
data.setCabinId(cabin.getId());
|
data.setName(name);
|
List<DjJdgzDismantTrack> list = new ArrayList<>();
|
list.add(data);
|
djJdgzDismantTrackService.save(list);
|
|
this.refreshTable(data.getLevel3NetworkId(),null);
|
frame1.dispose();
|
jFrame.setEnabled(true);//将主界面再设置为可操作的
|
});
|
}
|
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.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
|
tableModelListener(trackTable, jFrame,list,columnDto);
|
}
|
|
public void tableModelListener(JTable table,JFrame jFrame,List<DjJdgzDismantTrack> list,List<ColumnDto> columnDto){
|
table.getModel().addTableModelListener(e -> {
|
// 检查事件类型
|
if (e.getType() == TableModelEvent.UPDATE) {
|
// 获取变化的行和列
|
int row = e.getFirstRow();
|
int column = e.getColumn();
|
|
// 获取新的值
|
Object newValue = table.getModel().getValueAt(row, column);
|
// 输出变化信息
|
if (newValue.equals("edit")){
|
jFrame.setEnabled(false);
|
DjJdgzDismantTrack data = list.get(row);
|
insert(jFrame,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.delete(data.getId());
|
list.remove(row);
|
model.removeRow(row);
|
}
|
}
|
System.out.println("单元格变化: 行=" + row + ", 列=" + column + ", 新值=" + newValue);
|
}
|
});
|
}
|
|
}
|