GUIContext.java 10.2 KB
package cn.csbr.app.gui;

import cn.csbr.app.config.FxConfigure;
import cn.csbr.app.gui.handler.RfidDataCallbackEventHandler;
import cn.csbr.app.gui.page.AbstractPage;
import cn.csbr.app.hardware.HFbwcabinet.HFHardWaredll;
import cn.csbr.app.hardware.HFbwcabinet.HFbwcabinetApi;
import cn.csbr.app.hardware.RfidHardWareApiDecisior;
import cn.csbr.app.hardware.callback.impl.RfidDataBackImpl;
import cn.csbr.app.hardware.callback.impl.ValidCardUserCallbackImpl;
import cn.csbr.app.model.LoginUser;
import cn.csbr.app.service.CabinetService;
import cn.csbr.springboot.dao.model.Cabinet;
import cn.csbr.springboot.dao.model.SysUser;
import com.alibaba.fastjson.JSONArray;
import javafx.scene.Node;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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;

/**
 * 其实应该叫做appcontenxt 存储运行时的公共信息
 */
@Component
public class GUIContext {
    public static  boolean isreturn=false;
    public static int isOK=1;//验证框返回值
    private static final Logger log = LoggerFactory.getLogger(GUIContext.class);
    private List<String> yckjj=new ArrayList<>();//隐藏界面快捷键
    private String ycpwd="";//隐藏界面密码
    private String kjjispwd="";//是否需要快捷键密码
    private List<String> curqjaj=new ArrayList<>();//被检测到的按键
    //private Map<String,CabinetFlag> cabinetFlagList=new HashMap<>();//柜子们当前状态

    public List<String> getYckjj() {
        return yckjj;
    }

    public void setYckjj(List<String> yckjj) {
        this.yckjj = yckjj;
    }

    public String getYcpwd() {
        return ycpwd;
    }

    public void setYcpwd(String ycpwd) {
        this.ycpwd = ycpwd;
    }

    public String getKjjispwd() {
        return kjjispwd;
    }

    public void setKjjispwd(String kjjispwd) {
        this.kjjispwd = kjjispwd;
    }

    public List<String> getCurqjaj() {
        return curqjaj;
    }

    public void setCurqjaj(List<String> curqjaj) {
        this.curqjaj = curqjaj;
    }

    @Autowired
    private CabinetService cabinetService;

    @Autowired
    private FxConfigure fxConfigure;
    @Autowired
    private RfidHardWareApiDecisior rfidHardWareApiDecisior;

    @Autowired
    private RfidDataBackImpl rfidDataBack;

    @Autowired
    private HFHardWaredll hfHardWaredll;

    @Autowired
    private ValidCardUserCallbackImpl validCardUserCallback;

    @Value("${rfid.rfid_data}")
    private String rfidData;

    public String getMaincabinetNum() {
        return maincabinetNum;
    }

    public void setMaincabinetNum(String maincabinetNum) {
        this.maincabinetNum = maincabinetNum;
    }

    @Value("${hfrfid.rfid_data}")
    private String hfrfidData;

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

    @Value("${rfid.card_data}")
    private String cardData;


    @Value("${rfid.mode}")
    private String rfidMode = "test";
    @Value("${LockControlNum}")
    public int LockControlNum;
    private AbstractPage currentPage;

    public String getCabinetcheckmode() {
        return cabinetcheckmode;
    }

    @Value("${CabinetCheckMode}")
    private String cabinetcheckmode ;

    private Stage primaryStage;

    private StackPane mainPane;
    private LoginUser loginUser;
    private LoginUser loginUserVali;
    private Boolean loginingFlag = false;

    public String getStoreguid() {
        return storeguid;
    }



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

    public String getStorename() {
        return storename;
    }

    public void setStorename(String storename) {
        this.storename = storename;
    }

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



    private HashMap<Cabinet, List<String>> scanResult = new HashMap<>();
    private List<Cabinet> cabinets;

    public int num=10;
    public synchronized Map<Cabinet, List<String>> getScanResult() {
        return scanResult;
    }

    public synchronized void setScanResult(HashMap<Cabinet, List<String>> scanResult) {
        this.scanResult = scanResult;
    }

    public synchronized void addScanResult(Map<Cabinet, List<String>> scanResult) {
        if (scanResult != null) {
            for (Map.Entry<Cabinet, List<String>> cabinetListEntry : scanResult.entrySet()) {
                List<String> strings = this.scanResult.get(cabinetListEntry.getKey());
                List<String> value = cabinetListEntry.getValue();
                if (strings != null) {
                    strings.clear();
                    strings.addAll(value);
                } else {
                    this.scanResult.put(cabinetListEntry.getKey(), value);
                }
            }
        }
        log.info("------------------------ 添加扫描结果 ------------------------");
        log.info("\t\t总计:" + this.scanResult.size() + "条记录!");
        log.info("-------------------------------------------------------------");
    }

    /**
     * 添加RFID数据回传处理事件。
     *
     * @param page    页面对象
     * @param handler 处理事件
     */
    public synchronized void setRfidDataCallbackEventHandler(AbstractPage page, RfidDataCallbackEventHandler handler) {
        if (page != null) {
            if (handler != null) {
                this.rfidDataBack.setRfidDataCallbackEventHandler(page, handler);
            }
        }
    }

    public synchronized HashMap<AbstractPage, RfidDataCallbackEventHandler> getRfidDataCallbackEventHandler() {

        return this.rfidDataBack.getRfidDataCallbackEventHandlers();


    }

    public void setCurrentPage(AbstractPage page) {
        this.currentPage = page;
    }

    public AbstractPage getCurrentPage() {
        return this.currentPage;
    }

    public List<Cabinet> getCabinets() {
        return cabinets;
    }

    public void setCabinets(List<Cabinet> cabinets) {
        this.cabinets = cabinets;
    }

    public synchronized Boolean getLoginingFlag() {
        return loginingFlag;
    }

    public synchronized void setLoginingFlag(Boolean loginingFlag) {
        this.loginingFlag = loginingFlag;
    }



    public synchronized void updateMainContent(Node content) {
        if (mainPane != null) {
            mainPane.getChildren().clear();
            mainPane.getChildren().add(content);
            mainPane.requestFocus();
        }
    }

    public LoginUser getLoginUser() {
        return loginUser;
    }

    public void setLoginUser(LoginUser loginUser) {
        this.loginUser = loginUser;
    }
    public LoginUser getLoginUserVali() {
        return loginUserVali;
    }

    public void setLoginUserVali(LoginUser loginUserVali) {
        this.loginUserVali = loginUserVali;
    }

    public SysUser getDooropenUser() {
        return dooropenUser;
    }

    public void setDooropenUser(SysUser dooropenUser) {
        this.dooropenUser = dooropenUser;
    }

    private SysUser dooropenUser;
    public StackPane getMainPane() {
        return mainPane;
    }

    public void setMainPane(StackPane mainPane) {
        this.mainPane = mainPane;
    }

    public Stage getPrimaryStage() {
        return primaryStage;
    }

    public void setPrimaryStage(Stage primaryStage) {
        this.primaryStage = primaryStage;
    }

    public void loadRridData(RefreshCallBack callBack) {
        Cabinet cabinet = new Cabinet();
        cabinet.setGroupcode(fxConfigure.getCabinetGroupCode());
        cabinet.setStoreguid(storeguid);
        cabinetService.scarnAllCabinet(cabinet, callBack);
    }


    /**
     * 初始化RFID
     */
    public void InitRfid() {
        //超高频
        if (rfidMode.equalsIgnoreCase("HFtest")) {
            //初始化回调
            log.info("InitRfid初始化开始");
            this.rfidDataBack.init(this, this.fxConfigure);
            // 初始化硬件,刷卡,指纹模块
            this.rfidHardWareApiDecisior.instance().initHardWare(hfrfidData, cardData);
            //rfid回调
            hfHardWaredll.setActionRfidDataBack(this.rfidDataBack);
            return;
        }
        //高频
        this.validCardUserCallback.init(this);
        this.rfidDataBack.init(this, this.fxConfigure);
        this.rfidHardWareApiDecisior.instance().setActionRfidDataBack(this.rfidDataBack);
        this.rfidHardWareApiDecisior.instance().setFunCardUserCheck(this.validCardUserCallback);
        this.rfidHardWareApiDecisior.instance().setCardMessDo(data -> {
            log.info("===================================================");
            log.info("\t\tRFID反馈信息:" + data);
            log.info("===================================================");
        });
        // 初始化硬件
        this.rfidHardWareApiDecisior.instance().initHardWare(rfidData, cardData);
    }

    public void startAllRfid() {
        this.getScanResult().clear();
        LoginUser user = this.getLoginUser();
        this.rfidHardWareApiDecisior.instance().startAllRfid(user.getGuid(), user.getUserName());
    }

    //获取柜子数量
    public int getCabCount() {
        JSONArray array = new JSONArray();
        if (rfidMode.equalsIgnoreCase("HFtest")) {
            array = JSONArray.parseArray(hfrfidData);
        } else {
            array = JSONArray.parseArray(rfidData);
        }
        return array.size();
    }

    //暂停其他柜子的指纹和刷卡
    public void pauseOtherCabFingerAndId() {
        if (rfidMode.equalsIgnoreCase("HFtest")) {
            hfHardWaredll.pauseOtherCabFingerAndId();
        }
    }

    //启用其他柜子的指纹和刷卡
    public void startOtherCabFingerAndId() {
        if (rfidMode.equalsIgnoreCase("HFtest")) {
            hfHardWaredll.startOtherCabFingerAndId();
        }
    }

    //启用或停用指纹及刷卡验证
    public void stoporstartcheck(int cmd) {
        if (rfidMode.equalsIgnoreCase("HFtest")) {
            hfHardWaredll.stoporstartcheck(cmd);
        }
    }
    private List<String> orgids;//部门合集列表

    public List<String> getOrgids() {
        return orgids;
    }

    public void setOrgids(List<String> orgids) {
        this.orgids = orgids;
    }
}