Maintenance.java 3.2 KB
package com.myproject.bean.update;

import com.google.common.collect.Maps;
import com.myproject.bean.BaseMongoBean;
import com.myproject.bean.utils.DeviceStatusBean;
import com.myproject.util.DateUtil;

import java.util.Date;
import java.util.Map;

public class Maintenance extends BaseMongoBean {

    /**
     * 料仓CID
     */
    private String storageCid;

    /**
     * 料仓名称
     */
    private String storageName;
    /**
     * 下次维护时间
     */
    private Date nextTime;

    /**
     * 提前多少小时邮件通知
     */
    private int hoursInAdvance = 10;

    /**
     * 邮件地址
     */
    private String emails = "";

    /**
     * 设备运行信息,key为设备名称,设备状态
     */
    private Map<String, DeviceStatusBean> deviceData = Maps.newHashMap();

    public String getStorageCid() {
        return storageCid;
    }

    public void setStorageCid(String storageCid) {
        this.storageCid = storageCid;
    }

    public Date getNextTime() {
        return nextTime;
    }

    public void setNextTime(Date nextTime) {
        this.nextTime = nextTime;
    }

    public String getNextTimeStr(){
        if(nextTime != null){
            return DateUtil.toDateString(nextTime);
        }
        return "";
    }

    public int getHoursInAdvance() {
        return hoursInAdvance;
    }

    public void setHoursInAdvance(int hoursInAdvance) {
        this.hoursInAdvance = hoursInAdvance;
    }

    public String getEmails() {
        return emails;
    }

    public void setEmails(String emails) {
        this.emails = emails;
    }

    public Map<String, DeviceStatusBean> getDeviceData() {
        return deviceData;
    }

    public void setDeviceData(Map<String, DeviceStatusBean> deviceData) {
        this.deviceData = deviceData;
    }

    /**
     * 更新设备的运行状态,返回值表示是否需要保存到数据库
     */
    public boolean updateDeviceStatus(String device, int status){

        boolean needSaveToDb = false;
        DeviceStatusBean deviceInfo = deviceData.get(device);
        if(deviceInfo == null){
            deviceInfo = new DeviceStatusBean();
            deviceInfo.setDeviceName(device);
            needSaveToDb = true;
        }
        long now = System.currentTimeMillis();
        //状态改变
        if(status != deviceInfo.getStatus()){
            //如果当前状态是0(即上一状态是运动,现在是停止),更新轴运行时间, 同时要满足上次更新时间小于5秒,即设备在线
            if(status == 0){
                if(now - deviceInfo.getStatusUpdateTime() < 5000){
                    long runTime = now - deviceInfo.getStatusStartTime();
                    deviceInfo.setRunTimes(deviceInfo.getRunTimes() + runTime);
                    needSaveToDb = true;
                }
            }
            deviceInfo.setStatus(status);
            deviceInfo.setStatusStartTime(now);
        }
        deviceInfo.setStatusUpdateTime(now);
        deviceData.put(device,deviceInfo);
        return needSaveToDb;
    }

    public String getStorageName() {
        return storageName;
    }

    public void setStorageName(String storageName) {
        this.storageName = storageName;
    }
}