MainPage.java 11 KB
package cn.csbr.app.gui.page;

import cn.csbr.app.Facerecognition.FaceWindow;
import cn.csbr.app.Long.HcgServer;
import cn.csbr.app.config.FxConfigure;
import cn.csbr.app.gui.GUIContext;
import cn.csbr.app.gui.component.common.ImageButton;
import cn.csbr.app.gui.handler.*;
import cn.csbr.app.gui.page.query.QueryPage;
import cn.csbr.app.gui.page.setting.SettingPage;
import cn.csbr.app.gui.util.DialogUtils;
import cn.csbr.app.model.RfidDataModel;
import cn.csbr.app.service.UseService;
import cn.csbr.app.service.ZjService;
import cn.csbr.springboot.dao.mapper.HcgOptionsMapper;
import cn.csbr.springboot.dao.mapper.MfcubestockdetailMapper;
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.input.MouseEvent;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Polygon;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Modality;

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.List;
import java.util.Timer;
import java.util.TimerTask;

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

/**
 * 登陆后首页
 */
@Component
public class MainPage extends AbstractPage {
    private Label namelabel = new Label();
    private Label timelabel = new Label();
    private Label showCount=new Label();

    private static Logger logger = LoggerFactory.getLogger(MainPage.class);

    @Autowired
    private FxConfigure fxConfigure;
    @Autowired
    private GUIContext guiContext;
    @Autowired
    private ToRejectMainPageHandler toRejectMainPageHandler;
    @Autowired
    private ToSettingPageHandler toSettingPageHandler;
    @Autowired
    private ToCheckMainHanlder toCheckMainHanlder;
    @Autowired
    private ToBanlanceHandler toBanlanceHandler;
    @Autowired
    private ToQueryHandler toQueryHandler;
    @Autowired
    private QueryPage queryPage;
    @Autowired
    private MfcubestockdetailMapper mfcubestockdetailMapper;

    @Value("${jxqtitle}")
    private String jxqtitle;

    @Value("${youxqdays}")
    private int youxqdays;

    @Value("${jxqyellow}")
    private int jxqyellow;

    @Value("${timeOut}")
    private String timeOut;

    private Label lbjxqtxt=new Label("近效期(小于180天)");
    private Label lbjxqdw=new Label("件");
    private Label lbjxqsl=new Label("0");
    private String returntimenum="0";//记录未归还的数量
    //控制时间的变化
    private boolean timeflag = false;
    private RfidDataCallbackEventHandler rfidDataCallbackEventHandler = datas -> Platform.runLater(() -> ActionDoData(datas));
    /**
     * 第一排是用户名和密码 第二排是文字的名称 第三
     * 批是按钮 第四排是公司名称版本号
     *
     * @return
     */

    private Node createHeader() {
        this.guiContext.setCurrentPage(this);
        HBox headerBox = new HBox();

        return headerBox;
    }

    private Node createActionArea() {
        guiContext.setRfidDataCallbackEventHandler(this, this.rfidDataCallbackEventHandler);
        GridPane grid = new GridPane();
        grid.setId("");

        //查询界面按钮,第一行
        ImageButton toQueryBtn = new ImageButton(toQueryHandler, "toQueryBtn");
        grid.add(toQueryBtn, 0, 0, 1, 1);

        ImageButton toCheckBtn = new ImageButton(toCheckMainHanlder, "toCheckBtn");//toRejectBtn
        grid.add(toCheckBtn, 1, 0, 1, 1);

        ImageButton toBanlanceBtn = new ImageButton(toBanlanceHandler, "toBanlanceBtn");//toSettingBtn

        grid.add(toBanlanceBtn, 0, 1, 1, 1);

        ImageButton toRejectBtn = new ImageButton(toRejectMainPageHandler, "toRejectBtn");
        grid.add(toRejectBtn, 1, 1, 1, 1);
        toRejectBtn.setTranslateX(-112);

        ImageButton toSettingBtn = new ImageButton(toSettingPageHandler, "toSettingBtn");
        grid.add(toSettingBtn, 2, 1, 1, 1);
        toSettingBtn.setTranslateX(-224);
        grid.setGridLinesVisible(false);
        //行距
        grid.setHgap(5);
        //列距
        grid.setVgap(0);

        grid.setMinHeight(400);
        grid.setMaxHeight(400);

        grid.setMaxWidth(700);
        grid.setMinWidth(700);
        grid.setStyle("-fx-text-alignment:center;-fx-alignment:center;");
        grid.setTranslateX(130);
        grid.setTranslateY(400);
        if(isyc.equals("1")) {
            hcgServer.start();
            System.out.println("启动远程服务");
        }

        return grid;
    }

    @Value("${isyc}")
    private String isyc;
    @Value("${orgname}")
    private String orgname;
    @Autowired
    private HcgServer hcgServer;
    @Autowired
    private CustomWindowNewDemo customWindowNewDemo;
    //构建布局
    @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);
        Button button=new Button("测试弹框");
        button.setOnAction((e)->{
            root.getChildren().remove(button);
            clearInbounduses();
            getUseBackTabData("1");
            customWindowNewDemo.start(guiContext.getPrimaryStage());

        });
        Button button2=new Button("测试人脸识别");
        button2.setOnAction((e)->{
            FaceWindow faceWindow=new FaceWindow();
            faceWindow.start(guiContext.getPrimaryStage());
        });
        VBox vbjxqroot=new VBox();
        HBox hbjxqhead=new HBox();
        hbjxqhead.getChildren().addAll(lbjxqsl,lbjxqdw);
        lbjxqsl.setStyle("-fx-text-fill: #00bea6;-fx-font-size: 3em");
        lbjxqdw.setStyle("-fx-text-fill: black;-fx-font-size: 2em");
        lbjxqdw.setTranslateY(8);
        lbjxqdw.setTranslateX(8);
        lbjxqtxt.setStyle("-fx-text-fill: black;-fx-font-size: 1.5em");

        Label label=new Label();
        label.setText(orgname);
        label.setFont(Font.font("圆体",28));
        label.setTranslateX(650);
        label.setTranslateY(20);
        label.setStyle("-fx-text-fill: white");
        vbjxqroot.getChildren().add(hbjxqhead);
        vbjxqroot.getChildren().add(lbjxqtxt);
        vbjxqroot.setTranslateX(60);
        vbjxqroot.setTranslateY(320);
        label.setPickOnBounds(true);
        //vbjxqroot.setPickOnBounds();

        vbjxqroot.setOnMouseClicked(e->{
            toQueryHandler.handle(e);
            queryPage.GoExp();
        });
        root.getChildren().addAll(label);
        button.setTranslateY(400);
        button2.setTranslateY(400);
        root.getChildren().addAll(button,button2,vbjxqroot);
       // vbjxqroot.setStyle("-fx-background-color: black");
        root.getChildren().addAll(createHeader());
        root.getChildren().add(createActionArea());
        root.setMinWidth(fxConfigure.getMinHeight());
        root.setMinHeight(fxConfigure.getMinWidth());
        root.setMaxHeight(fxConfigure.getMinWidth());
        root.setMaxWidth(fxConfigure.getMinHeight());
        root.getStylesheets().add("styles/mainpage.css");
        //root.setStyle("-fx-background-color: red");
        return root;
    }

    private synchronized void ActionDoData(String data)
    {
        logger.info("取货还货RFID获取数据");
        List<RfidDataModel> datas = RfidDataModel.fromJson(data);
        String rfidData="";
        for (int i = 0; i < datas.size(); i++) {
            rfidData=  rfidData + "'" + datas.get(i).getRfidCd() + "'" + ",";
        }
        //清除原来的记录
        clearInbounds();
        //获取到取还弹窗的tab页数据
        getUseBackTabData(datas.get(0), rfidData);
        //弹出tab页
        logger.info("开始进行弹出窗口");
        popup(guiContext.getPrimaryStage());

        Thread thread= new Thread(() -> {
            saveInboundData();
        });
        thread.setDaemon(true);
        thread.start();

    }
    //测试弹窗
    //"[{"QUYUCD":"1","":"","RFIDCD":"E200001C110D01971730B176","CABINETCD":"A-01","USERCD":"USERCD","USERNAME":"USERCD"}]"
    private synchronized void ActionDoData2(String data)
    {  logger.info("取货还货RFID获取数据");
        List<RfidDataModel> datas = RfidDataModel.fromJson(data);
        String rfidData="";
        for (int i = 0; i < datas.size(); i++) {
            rfidData=  rfidData + "'" + datas.get(i).getRfidCd() + "'" + ",";
        }
        //清除原来的记录
        clearInbounds();
        //获取到取还弹窗的tab页数据
        getUseBackTabData(datas.get(0), rfidData);
        //弹出tab页
        logger.info("开始进行弹出窗口");
        popup(guiContext.getPrimaryStage());


    }
    @Value("${iszj}")
    private String iszj;
    @Autowired
    private ZjService zjService;
    public void refjxq(){
        int ts=jxqyellow;
        if(iszj.equals("1")) {
            zjService.Zj();
            zjService.ReHcg();
        }
        int i=0;
        if(guiContext.getLoginUser()!=null&& guiContext.getLoginUser().getOrgGuid()!=null) {
            i = mfcubestockdetailMapper.selectExpiredGoods(guiContext.getLoginUser().getOrgGuid(), youxqdays);
            lbjxqsl.setText(i+"");
        }
    }
    Thread thread=null;
    @Override
    public void refresh() {
        this.guiContext.setCurrentPage(this);
        if(thread==null){
            System.out.println("开启检测有效期线程");
            thread=new Thread(()->{
                try {
                    refjxq();
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            });
            thread.start();
        }
    }

    Stage primaryStage;
    public void popProgressBar() {
        ProgressIndicator progressIndicator = new ProgressIndicator(-1);
        progressIndicator.setMinWidth(30);
        progressIndicator.setMinHeight(30);
        VBox box = new VBox();
        box.getChildren().addAll(progressIndicator);
        box.setStyle("-fx-background:transparent;");
        final int width = 1000;
        final int height = 200;
        final Scene scene = new Scene(box, width, height);
        scene.setFill(null);
        primaryStage = new Stage();
        primaryStage.setX(450);
        primaryStage.setY(600);
        primaryStage.initStyle(StageStyle.TRANSPARENT);
        primaryStage.setScene(scene);
        primaryStage.initOwner(guiContext.getPrimaryStage());
        primaryStage.initModality(Modality.APPLICATION_MODAL);
        primaryStage.initModality(Modality.APPLICATION_MODAL);
        primaryStage.show();
    }

    public void closeProgressBar() {
        primaryStage.close();
    }
    @Override
    public String getTitle() {
        return "main_page";
    }
}