ShowDataPage.java 5.68 KB
package cn.csbr.app.gui.page;

import cn.csbr.app.config.FxConfigure;
import cn.csbr.app.gui.GUIContext;
import cn.csbr.app.gui.component.back.BackTable;
import cn.csbr.app.gui.component.common.ImageButton;
import cn.csbr.app.gui.component.showdata.ShowDataTable;
import cn.csbr.app.gui.handler.*;
import cn.csbr.app.gui.page.back.BackMainPage;
import cn.csbr.app.gui.page.use.UseMainPage;
import cn.csbr.app.hardware.HFbwcabinet.HFbwcabinetApi;
import cn.csbr.app.model.InboundItem;
import cn.csbr.app.model.RfidDataModel;
import cn.csbr.app.service.CabinetService;
import cn.csbr.app.service.QueryService;
import cn.csbr.app.service.SysUserService;
import cn.csbr.springboot.dao.model.Cabinet;
import cn.hutool.core.date.DateUtil;
import javafx.application.Platform;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.Modality;
import javafx.stage.Screen;

import javafx.stage.Stage;
import javafx.stage.StageStyle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

import static cn.csbr.app.FxApp.applicationContext;
import static cn.csbr.app.gui.util.SystemUtils.getNavigationAreaMinHeight;

/**
 * 登陆后数据展示页
 */
@Component
public class ShowDataPage extends AbstractPage {
    private Label namelabel = new Label();
    private Label timelabel = new Label();
    private static Logger logger = LoggerFactory.getLogger(MainPage.class);
    @Autowired
    private FxConfigure fxConfigure;
    @Autowired
    private GUIContext guiContext;
    @Autowired
    private ToInboundHandler toInboundHandler;
    @Autowired
    private QueryService queryService;
    List<ScrollPane> scrollPaneList;
    ShowDataTable inboundItemTable;
    //控制时间的变化
    private boolean timeflag = false;

    /**
     * 第一排是用户名和密码 第二排是文字的名称 第三
     * 批是按钮 第四排是公司名称版本号
     *
     * @return
     */
    private Node createHeader() {
        this.guiContext.setCurrentPage(this);
        HBox headerBox = new HBox();
        Region spacer = new Region();
        spacer.setMinWidth(850);
        namelabel.setWrapText(false);
        namelabel.setMinWidth(180);
        timelabel.setWrapText(false);
        timelabel.setMinWidth(150);
        ImageButton peopleImg = new ImageButton(null, "peopleImg");
        ImageButton timeImg = new ImageButton(null, "timeImg");
        headerBox.getChildren().addAll(spacer, peopleImg, namelabel, timeImg, timelabel);
        headerBox.setMinWidth(fxConfigure.getMinWidth());
        headerBox.setStyle("-fx-text-alignment:left;-fx-alignment:bottom-left");
        return headerBox;
    }
    HBox hBox;
    private Node createActionArea() {
        VBox vBox = new VBox();
        hBox = new HBox();
        hBox.setSpacing(10);
        hBox.setPadding(new Insets(30, 0, 30, 0));
        Region spacer = new Region();
        spacer.setMinWidth(100);
        hBox.setMinWidth(fxConfigure.getMinWidth());
        hBox.setMinHeight(500);

        hBox.getChildren().addAll(spacer);

        vBox.getChildren().addAll(hBox);
        vBox.setStyle("-fx-text-alignment:center;-fx-alignment:center;");

        return vBox;
    }

    //获取数据
    public void getdata() {
        scrollPaneList = new ArrayList<>();
        for(Cabinet cabinet:guiContext.getCabinets()) {
            ScrollPane scrollPane  = new ScrollPane();
            scrollPane.setMinHeight(800);
            inboundItemTable = new ShowDataTable(this);
            List<InboundItem> list = queryService.queryInboundItemByCabinet(cabinet.getCabinetcode());
            inboundItemTable.updateDatas(list);
            scrollPane.setContent(inboundItemTable);
            scrollPaneList.add(scrollPane);
        }
        for(ScrollPane scrollPane:scrollPaneList) {
            hBox.getChildren().addAll(scrollPane);
        }
    }

    //构建布局
    @Override
    protected Node constructNode() {
        VBox root = new VBox();
        root.setId("mainPage");
        root.setPadding(new Insets(10, 10, 10, 10));
        root.setMaxHeight(Double.MAX_VALUE);
        ButtonBar buttonBar = new ButtonBar();
        Region spacer = new Region();
        VBox.setVgrow(spacer, Priority.ALWAYS);
        root.getChildren().add(createHeader());
        root.getChildren().add(createActionArea());
        root.setMinWidth(fxConfigure.getMinWidth());
        root.setMinHeight(fxConfigure.getMinHeight());
        root.setMaxHeight(fxConfigure.getMinHeight());
        root.setMaxWidth(fxConfigure.getMinWidth());
        root.getStylesheets().add("styles/mainpage.css");
        return root;
    }


    @Override
    public void refresh() {
        StringBuilder desc = new StringBuilder();
        //获取用户名和科室名
        desc.append(guiContext.getLoginUser().getUserName() + "/" + guiContext.getLoginUser().getOrgName());
        //写入数据到文本框
        namelabel.setText(desc.toString());

        if(!timeflag) {
            new Thread(() -> {
                try {
                    timeflag = true;
                    while (timeflag) {
                        Platform.runLater(() -> {
                            timelabel.setText(DateUtil.now());
                        });
                        Thread.sleep(1000);
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }).start();
        }

        // timelabel.setText(DateUtil.now());
    }
}