ZjService.java 7.21 KB
package cn.csbr.app.service;

import cn.csbr.app.hardware.BWCabinetTestDll;
import cn.csbr.app.hardware.HFbwcabinet.HFbwcabinetApi;
import cn.csbr.app.util.SystemUtil;
import cn.csbr.springboot.dao.mapper.JoblistMapper;
import cn.csbr.springboot.dao.mapper.JoblistdetailMapper;
import cn.csbr.springboot.dao.model.Joblist;
import cn.csbr.springboot.dao.model.Joblistdetail;
import cn.hutool.core.date.DateTime;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.csbr.util.IdUtils;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

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

@Log4j2
@Service
public class ZjService {
    //BWCabinetTestDll instance=null;
    @Value("${hfrfid.rfid_data}")
    private String hfrfidData;
    @Value("${app.cabinet.group.code}")
    private String quyu;
    @Autowired
    private JoblistMapper joblistMapper;
    @Autowired
    private JoblistdetailMapper joblistdetailMapper;
    public void ReHcg(){
        List<Joblist> joblists= joblistMapper.getWclRgHcg();
        if(joblists.size()>0) {
            log.info("发现重启耗材柜任务开始受理请求");
            for (Joblist item : joblists){
                item.setSfcl("Y");
                item.setClrq(new Date());
                joblistMapper.updateByPrimaryKey(item);
            }
            log.info("开始重启耗材柜 2秒钟后柜子自动重启");
            SystemUtil.ReHcg();
            log.info("goodbye!");
        }
    }
    public void Zj()
    {
        BWCabinetTestDll instance = (BWCabinetTestDll) Native.loadLibrary("BWCabinetTest", BWCabinetTestDll.class);
       // BWCabinetTestDll instance =null;
        List<Joblist> joblists= joblistMapper.getWclJob(quyu);
        if(joblists.size()>0) {
            Thread thread= new Thread(()->{
            log.info("检查到自检任务开始进行耗材柜自检");
            joblistMapper.updateWclJob(quyu);
            JSONArray array = JSONArray.parseArray(hfrfidData);
            for(Object o:array) {
                HFbwcabinetApi hFbwcabinetApi = JSON.parseObject(JSON.toJSONString(o), HFbwcabinetApi.class);
                int cabinetindex = hFbwcabinetApi.getCabinetindex();
                String kzq="连接正常";
                IntByReference bLocked = new IntByReference(-1);
                IntByReference bDoorOpened = new IntByReference(-1);
                int flag = instance.BWGetCabinetState(cabinetindex, bLocked, bDoorOpened);
                if(flag!=0) {
                    if(flag==1) {
                        kzq = "连接异常";
                    }else {
                        kzq = "连接异常,代码:"+flag;
                    }
                }
                String zw="连接正常";
                IntByReference nFingerNum = new IntByReference(-1);
                flag = instance.BWQueryFingerNum(cabinetindex, nFingerNum);
                if(flag!=0&&flag!=6&&flag!=4) {
                    if(flag==1) {
                        zw = "连接异常";
                    }else {
                        zw = "连接异常,代码:"+flag;
                    }
                }
                String ic="连接正常";
                Pointer outjson_pointer = new Memory(50);
                IntByReference idLength = new IntByReference(-1);
                flag = instance.BWGetIDCardNum(cabinetindex, outjson_pointer, idLength);
                if(flag!=0&&flag!=6) {
                    if(flag==1) {
                        ic = "连接异常";
                    }else {
                        ic = "连接异常,代码:"+flag;
                    }
                }
                String rfid="连接正常";
                Pointer outjson_pointer2 = new Memory(102400);
                IntByReference rfidLength = new IntByReference(-1);
                flag = instance.BWQueryRfidTab(cabinetindex, outjson_pointer2, rfidLength);
                if(flag!=0&&flag!=6) {
                    if(flag==1) {
                        rfid = "连接异常";
                    }else {
                        rfid = "连接异常,代码:"+flag;
                    }
                }

                Joblistdetail joblistdetail=new Joblistdetail();
                joblistdetail.setGuid(IdUtils.getUUID());
                joblistdetail.setFqsj(new DateTime());
                joblistdetail.setMessage("柜子"+hFbwcabinetApi.getCabinetCd()+"控制器:"+kzq);
                joblistdetail.setSfcl("Y");
                joblistdetail.setSfzc(kzq.equals("连接正常")?"Y":"N");
                if(cabinetindex==3){ joblistdetail.setType("控制器上");}
                else if(cabinetindex==4){ joblistdetail.setType("控制器下");}else {
                    joblistdetail.setType("控制器");
                }
                joblistdetail.setQuyu(quyu);
                joblistdetail.setGzid(hFbwcabinetApi.getCabinetCd().split("-")[1]);
                joblistdetail.setWcsj(new DateTime());
                joblistdetailMapper.insert(joblistdetail);
                joblistdetail.setGuid(IdUtils.getUUID());
                joblistdetail.setFqsj(new DateTime());
                joblistdetail.setMessage("柜子"+hFbwcabinetApi.getCabinetCd()+"指纹:"+zw);
                joblistdetail.setSfcl("Y");
                joblistdetail.setSfzc(zw.equals("连接正常")?"Y":"N");
                joblistdetail.setType("指纹");
                joblistdetail.setWcsj(new DateTime());
                joblistdetail.setQuyu(quyu);
                joblistdetail.setGzid(hFbwcabinetApi.getCabinetCd().split("-")[1]);
                joblistdetailMapper.insert(joblistdetail);
                joblistdetail.setGuid(IdUtils.getUUID());
                joblistdetail.setFqsj(new DateTime());
                joblistdetail.setMessage("柜子"+hFbwcabinetApi.getCabinetCd()+"IC卡:"+ic);
                joblistdetail.setSfcl("Y");
                joblistdetail.setSfzc(ic.equals("连接正常")?"Y":"N");
                joblistdetail.setType("IC卡");
                joblistdetail.setWcsj(new DateTime());
                joblistdetail.setQuyu(quyu);
                joblistdetail.setGzid(hFbwcabinetApi.getCabinetCd().split("-")[1]);
                joblistdetailMapper.insert(joblistdetail);
                joblistdetail.setGuid(IdUtils.getUUID());
                joblistdetail.setFqsj(new DateTime());
                joblistdetail.setMessage("柜子"+hFbwcabinetApi.getCabinetCd()+"RFID:"+rfid);
                joblistdetail.setSfcl("Y");
                joblistdetail.setSfzc(rfid.equals("连接正常")?"Y":"N");
                joblistdetail.setType("RFID");
                joblistdetail.setWcsj(new DateTime());
                joblistdetail.setQuyu(quyu);
                joblistdetail.setGzid(hFbwcabinetApi.getCabinetCd().split("-")[1]);
                joblistdetailMapper.insert(joblistdetail);
            }
            log.info("自检完成");
            joblistMapper.updateWcJob(quyu);});
            thread.setDaemon(true);
            thread.start();
        }
    }
}