OutInfo.java 5.6 KB
package com.myproject.bean.update.qisda;

import com.myproject.bean.BaseMongoBean;
import org.springframework.data.annotation.Transient;

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

/**
 * DN单信息
 */
public class OutInfo extends BaseMongoBean {

    public OutInfo(){

    }

    public OutInfo(OutItem outItem){
        this.action = outItem.getAction();
        this.hSerial = outItem.gethSerial();
        this.so = outItem.getSo();
        this.refno = outItem.getRefno();
        this.sdate = outItem.getSdate();
        this.mdate = outItem.getMdate();
    }

    /**
     * 动作(首盘,分盘,补料盘,急料,指定料,单独出库)
     */
    private String action;
    /**
     * 需求单号
     */
    private String hSerial;

    /**
     * 工单
     */
    private String so;

    /**
     * 备料单号
     */
    private String refno;

    /**
     * 建议出仓时间
     */
    private Date sdate;

    /**
     * 必须出仓日期
     */
    private Date mdate;

    /**
     * 任务数量
     */
    private int taskNum;

    /**
     * 绑定状态:0=未绑定 1=绑定缺料  2=绑定OK
     */
    private int bindStatus = 0;

    /**
     * 发料状态: 0=未发料 1=发料缺料 2=发料OK(需求单完成):首盘和补料,发料与需求单一致为发料OK, 分盘料出库后又入库即真实绑定与需求量一致为发料OK, 紧急料出库数量与需求数量一致为发料OK
     */
    private int sendStatus = 0;

    /**
     * 出仓料盘数量
     */
    private int outReelNum;

    /**
     * 任务完成数量(放上料架)
     */
    private int taskFinishNum;

    @Transient
    private Map<String, OutItem> outItemMap = new HashMap<>();

    public String getAction() {
        return action;
    }

    public void setAction(String action) {
        this.action = action;
    }

    public String gethSerial() {
        return hSerial;
    }

    public void sethSerial(String hSerial) {
        this.hSerial = hSerial;
    }

    public Date getMdate() {
        return mdate;
    }

    public void setMdate(Date mdate) {
        this.mdate = mdate;
    }

    public String getRefno() {
        return refno;
    }

    public void setRefno(String refno) {
        this.refno = refno;
    }

    public Date getSdate() {
        return sdate;
    }

    public void setSdate(Date sdate) {
        this.sdate = sdate;
    }

    public String getSo() {
        return so;
    }

    public void setSo(String so) {
        this.so = so;
    }

    public int getOutReelNum() {
        return outReelNum;
    }

    public void setOutReelNum(int outReelNum) {
        this.outReelNum = outReelNum;
    }

    public int getTaskNum() {
        return taskNum;
    }

    public void setTaskNum(int taskNum) {
        this.taskNum = taskNum;
    }

    public List<OutItem> getOutItems() {
        return new ArrayList<>(outItemMap.values());
    }

    public void updateOutItems(List<OutItem> outItems) {
        for (OutItem outItem : outItems) {
            updateItem(outItem);
        }
    }

    /**
     * 分盘需求单
     */
    public boolean isReelCutAction(){
        return getAction().contains("分盘");
    }

    /**
     * 紧急料或指定料或单独出库料
     * @return
     */
    public boolean isUrgentAction(){
        return getAction().contains("急料") || getAction().contains("指定料") || getAction().contains("单独出库");
    }

    /**
     * 首盘需求单
     */
    public boolean isFirstReelAction(){
        return getAction().contains("首盘");
    }


    /**
     * 补料需求单
     */
    public boolean isTailAction(){
        return getAction().contains("补料");
    }

    public int getTaskFinishNum() {
        return taskFinishNum;
    }

    public void setTaskFinishNum(int taskFinishNum) {
        this.taskFinishNum = taskFinishNum;
    }

    /**
     * 获取出库顺序,第一个为F,中间的为M,最后一个为L
     */
    public String getOutLatest(){
        if(taskNum == 1){
            return "L";
        }
        if(outReelNum == 1){
            return "F";
        }
        if(outReelNum >= taskNum){
            return "L";
        }
        return "M";
    }

    public String getShelfLatest(){
        if(taskNum == 1){
            return "L";
        }
        if(taskFinishNum == 1){
            return "F";
        }
        if(taskFinishNum >= taskNum){
            return "L";
        }
        return "M";
    }

    public int getBindStatus() {
        return bindStatus;
    }

    public void setBindStatus(int bindStatus) {
        this.bindStatus = bindStatus;
    }

    public int getSendStatus() {
        return sendStatus;
    }

    public void setSendStatus(int sendStatus) {
        this.sendStatus = sendStatus;
    }

    public void updateItem(OutItem item){
        outItemMap.put(item.getId(),item);
    }

    public Map<String, OutItem> getOutItemMap() {
        return outItemMap;
    }

    public void setOutItemMap(Map<String, OutItem> outItemMap) {
        this.outItemMap = outItemMap;
    }

    @Override
    public String toString() {
        return "OutInfo{" +
                "action='" + action + '\'' +
                ", hSerial='" + hSerial + '\'' +
                ", so='" + so + '\'' +
                ", refno='" + refno + '\'' +
                ", sdate=" + sdate +
                ", mdate=" + mdate +
                ", taskNum=" + taskNum +
                ", bindStatus=" + bindStatus +
                ", sendStatus=" + sendStatus +
                ", outReelNum=" + outReelNum +
                ", taskFinishNum=" + taskFinishNum +
                '}';
    }
}