package com.example.client.service; import com.example.client.dto.ColumnDto; import com.example.client.utils.CommonTable; import com.example.client.utils.GBC; import com.example.client.utils.WaitUtil; import com.example.server.DataSync.service.DataSyncService; import com.example.server.progressTrack.dao.ImportRecordDao; import com.example.server.progressTrack.model.ExportRecord; import com.example.server.progressTrack.model.ImportRecord; import com.example.server.user.model.SysUser; import com.example.server.utils.UserAndSiteUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.Date; import java.util.List; @Service public class DataImportManageService { @Value("${data.imgDir}") private String imgPath; @Autowired DataSyncService dataSyncService; @Autowired ImportRecordDao importRecordDao; @Autowired ImportDataService importDataService; private List columnDto; private JTable table; public JPanel createTable(Integer width, Integer height, JFrame jFrame) { SysUser user = (SysUser) UserAndSiteUtils.get("user","user"); if (user==null){ JOptionPane.showMessageDialog(null, "用户失效请退出并重新登录", "提示", JOptionPane.WARNING_MESSAGE); return null; } JPanel panel = new JPanel(new BorderLayout()); panel.setPreferredSize(new Dimension(width-10,height)); JPanel left = new JPanel(new BorderLayout()); left.setPreferredSize(new Dimension((width-10)/2,height)); JPanel right = new JPanel(new BorderLayout()); right.setPreferredSize(new Dimension((width-10)/2,height)); JPanel top = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 为 left 设置布局 top.setPreferredSize(new Dimension((width - 10) / 2, 50)); JPanel center = new JPanel(); // 为 left 设置布局 GridBagLayout layout = new GridBagLayout(); center.setLayout(layout); center.setPreferredSize(new Dimension((width - 10) / 2, (height-50)/3)); JPanel south = new JPanel(new BorderLayout()); // 为 left 设置布局 south.setPreferredSize(new Dimension((width - 10) / 2, (height-50)/3*2)); String site = (String) UserAndSiteUtils.get("site", "site"); JLabel label = new JLabel(site + "机器"); top.add(label); JPanel jPanel = importDataService.FileUpload(jFrame,700,100); JButton btnImport = new JButton("导入"); center.add(jPanel, new GBC(0, 0, 1, 1).setInsets(5)); center.add(btnImport, new GBC(0, 1, 1, 1).setInsets(5)); JLabel label1 = new JLabel("提示信息"); JTextArea tips = new JTextArea(7, 30); tips.setEnabled(false); tips.setForeground(Color.BLACK); // 设置为黑色 tips.setDisabledTextColor(Color.BLACK); tips.setLineWrap(true); south.add(label1,BorderLayout.NORTH); south.add(tips,BorderLayout.CENTER); btnImport.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 创建旋转等待框的实例(假设WaitUtil是一个自定义的Swing组件) final WaitUtil waitUtil = new WaitUtil(imgPath, "数据正在导入,请稍候"); // 开始上传文件的异步任务 SwingWorker sw = new SwingWorker() { @Override protected String doInBackground() throws Exception { String flag = importDataService.UnzipFile(tips); return flag; } @Override protected void done() { try { // 获取上传结果(在这个例子中,我们假设上传方法返回Boolean类型) String uploadSucceeded = get(); // 刷新表格数据(如果上传成功) if (uploadSucceeded.equals("true")) { waitUtil.dispose(); tips.setText("导入成功"+new Date()); } else { waitUtil.dispose(); tips.setText("导入失败"+new Date()); JOptionPane.showMessageDialog(null, uploadSucceeded, "提示", JOptionPane.ERROR_MESSAGE); } } catch (Exception ex) { ex.printStackTrace(); waitUtil.dispose(); } } }; // 执行异步任务 sw.execute(); waitUtil.setVisible(true); } }); left.add(top,BorderLayout.NORTH); left.add(center,BorderLayout.CENTER); left.add(south,BorderLayout.SOUTH); JLabel label2 = new JLabel("导入记录"); List list = importRecordDao.getList(); 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("数据源", "importSite", 200, null, false, null,null)); columnDto.add(new ColumnDto("导入时间", "createDate", 200, null, false, null,null)); columnDto.add(new ColumnDto("操作人", "userName", 200, null, false, null,null)); table = CommonTable.createCommonTable(list, columnDto); table.setRowHeight(25); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); right.add(label2, BorderLayout.NORTH); right.add(new JScrollPane(table), BorderLayout.CENTER); panel.add(left,BorderLayout.WEST); panel.add(right, BorderLayout.CENTER); return panel; } public void refresh(List list){ CommonTable.refreshTable(list, columnDto,table); } }