Resist.java

/*
 *        @ Copyright 2001 FA Software;
 *        All right reserved. No part of this program may be reproduced or
 *        transmitted in any form or by any means, electronic or
 *        mechanical, including photocopying, recording, or by any
 *        information storage or retrieval system without written
 *        permission from FA Software, except for inclusion of brief
 *        quotations in a review.
 */
package com.mycim.valueobject.ems;

import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.math.NumberUtils;
import com.mycim.framework.utils.lang.time.DateUtils;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;

public class Resist extends ResistMapping implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = -3369627555162990597L;

    private String DAFAULT_SEC = "000000";

    private String vendorBarcode;

    private Long serialNumber;

    private String eqptId;

    private String prPipe;

    private String unit;

    private String expireDate;                              // 直接从数据库获取的数据 有可能为空

    private String actualExpireDate;                        // 真实的过期时间,根据resist/resist mapping 数据计算而来

    private Double lifeTime;                                // 真实剩余时间

    private String expireTime;                              // 2019/1/31 页面使用

    private String expireDates;                             // 2019/1/31 页面使用

    private String prevEntityStatus;                        // resist_status 表

    private String currentEntityStatus;                     // resist_status 表

    // trans
    private String comments;

    public Resist() {

    }

    public Resist(String resistId, String namedSpace, String object) {
        if (this.instanceId != null) {
            this.instanceId = resistId.toUpperCase().trim();
        }
        this.namedSpace = namedSpace;
        this.object = object;
    }

    public String getComments() {
        return comments;
    }

    public void setComments(String comments) {
        this.comments = comments;
    }

    public String getVendorBarcode() {
        return vendorBarcode;
    }

    public void setVendorBarcode(String vendorBarcode) {
        this.vendorBarcode = vendorBarcode;
    }


    public Long getSerialNumber() {
        return serialNumber;
    }

    public void setSerialNumber(Long serialNumber) {
        this.serialNumber = serialNumber;
    }

    public String getEqptId() {
        return eqptId;
    }

    public void setEqptId(String eqptId) {
        this.eqptId = eqptId;
    }

    public String getPrPipe() {
        return prPipe;
    }

    public void setPrPipe(String prPipe) {
        this.prPipe = prPipe;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public String getExpireDate() {
        return expireDate;
    }

    public void setExpireDate(String expireDate) {
        this.expireDate = expireDate;
    }

    public String getActualExpireDate() {
        return actualExpireDate;
    }

    public void setActualExpireDate(String actualExpireDate) {
        this.actualExpireDate = actualExpireDate;
    }

    public Double getLifeTime() {
        return lifeTime;
    }

    public void setLifeTime(Double lifeTime) {
        this.lifeTime = lifeTime;
    }

    public String getExpireTime() {
        return expireTime;
    }

    public void setExpireTime(String expireTime) {
        this.expireTime = expireTime;
    }

    public String getExpireDates() {
        return expireDates;
    }

    public void setExpireDates(String expireDates) {
        this.expireDates = expireDates;
    }

    public String getPrevEntityStatus() {
        return prevEntityStatus;
    }

    public void setPrevEntityStatus(String prevEntityStatus) {
        this.prevEntityStatus = prevEntityStatus;
    }

    public String getCurrentEntityStatus() {
        return currentEntityStatus;
    }

    public void setCurrentEntityStatus(String currentEntityStatus) {
        this.currentEntityStatus = currentEntityStatus;
    }

    public void buildExpireInfo() {
        if (StringUtils.isNotBlank(this.expireDate)) {
            this.actualExpireDate = this.expireDate;
        } else {
            if (StringUtils.equalsIgnoreCase(getLifeTimeType(), "0")) {// follow bottle life


                Calendar cal = Calendar.getInstance();
                String year = String.valueOf(cal.get(Calendar.YEAR));
                year = year.substring(NumberUtils.INTEGER_ZERO, NumberUtils.INTEGER_TWO);
                String tempExpireDate = year + getInstanceId().substring(15, 21);
                actualExpireDate = DateUtils
                        .formatDate(DateUtils.parse(tempExpireDate + DAFAULT_SEC, DateUtils.DATE_FORMAT4NOSPLICING),
                                    DateUtils.DATE_FORMAT4DATE);

            } else {// buffer days
                Long millsec = getCreateTime().getTime() + DateUtils.getSecondsTime(getDefrostTime()) * 1000L +
                        getBufferDays() * 24L * 60L * 60L * 1000L;

                this.actualExpireDate = DateUtils.formatDate(new Date(millsec), DateUtils.DATE_FORMAT4DATE);
            }
        }
        Date date = DateUtils.parse(actualExpireDate, DateUtils.DATE_FORMAT4DATE);
        Long dateTime = date.getTime() - System.currentTimeMillis();
        Double days = BigDecimal.valueOf(dateTime.doubleValue() / 1000 / 60 / 60 / 24)
                                .setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        this.lifeTime = days;
    }

}