package com.app.hxqh.udworkorder;

import psdi.mbo.Mbo;
import psdi.mbo.MboRemote;
import psdi.mbo.MboSet;
import psdi.mbo.MboSetRemote;
import psdi.server.MXServer;
import psdi.util.MXException;

import java.rmi.RemoteException;

/**
 * 日常维修工单-计划与实际情况子表Mbo
 */
public class UdplmawtMbo extends Mbo implements MboRemote {

    public UdplmawtMbo(MboSet ms) throws MXException, RemoteException {
        super(ms);
    }

    @Override
    public void init() throws MXException {
        super.init();
        try {
//            String status = getString("STATUS");
//            String[] mainFields = new String[] {"LOCATION","ASSETNUM","MAJOR","FAILURECODE","DEFETYPE","HDONGROUP","HDDEPT","RESDEPT","ISZZXQ","ISBBZ","DESCRIPTION"};
//            if("草稿".equalsIgnoreCase(status) || "驳回".equalsIgnoreCase(status)){
//                setFlag(7L, false);
//            }
//            if("核实中".equalsIgnoreCase(status) || "完成".equalsIgnoreCase(status) || "取消".equalsIgnoreCase(status)){
//                setFieldFlag(mainFields, 7L, true);
//            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    public void save() throws MXException, RemoteException {
        super.save();
        MboRemote ownerMbo=getOwner();
        if(null!=ownerMbo){
            String app = ownerMbo.getThisMboSet().getApp();
            String appname=ownerMbo.getString("APPNAME");
            //日常维修工单 || 预防性维护工单 || 大修工单
//            if ("UDWORKORDER".equalsIgnoreCase(app) || "UDWORKORDER".equalsIgnoreCase(appname)
//                || "UDPMWOORDER".equalsIgnoreCase(app) || "UDPMWOORDER".equalsIgnoreCase(appname)
//                || "UDDXGD".equalsIgnoreCase(app) || "UDDXGD".equalsIgnoreCase(appname)) {
                if (null != ownerMbo) {
                    MboSetRemote plmawtSet = MXServer.getMXServer().getMboSet("UDPLMAWT", MXServer.getMXServer().getSystemUserInfo());
                    boolean isplan = getBoolean("ISPLAN");
                    if (isNew() && isplan) {
                        MboRemote plmawtMbo = plmawtSet.add();
                        plmawtMbo.setValue("ISPHY", 1, 2L);
                        plmawtMbo.setValue("DESCRIPTION", getString("DESCRIPTION"), 2L);
                        plmawtMbo.setValue("ITEMNUM", getString("ITEMNUM"), 2L);
                        plmawtMbo.setValue("ITEMQTY", getDouble("ITEMQTY"), 2L);
                        plmawtMbo.setValue("ITEMQTYUNTI", getString("ITEMQTYUNTI"), 2L);
                        plmawtMbo.setValue("TFITEMQTY", getDouble("TFITEMQTY"), 2L);
                        plmawtMbo.setValue("TFITEMQTYUNIT", getString("TFITEMQTYUNIT"), 2L);
                        plmawtMbo.setValue("LABORCODE", getString("LABORCODE"), 2L);
                        plmawtMbo.setValue("LABORHRS", getDouble("LABORHRS"), 2L);
                        plmawtMbo.setValue("LINECOST", getDouble("LINECOST"), 2L);
                        plmawtMbo.setValue("LOCATION", getString("LOCATION"), 2L);
                        plmawtMbo.setValue("AUFNR", getString("AUFNR"), 2L);
                        plmawtMbo.setValue("LTYPE", getInt("LTYPE"), 2L);
                        plmawtMbo.setValue("PARENTID", getInt("PARENTID"), 2L);
                        plmawtMbo.setValue("RATE", getInt("RATE"), 2L);
                        if (getInt("TASKID") > 0) {
                            plmawtMbo.setValue("TASKID", getInt("TASKID"), 2L);
                        }
                        plmawtMbo.setValue("UDYDLX", getString("UDYDLX"), 2L);
                        plmawtMbo.setValue("UNITCOST", getDouble("UNITCOST"), 2L);
                        plmawtMbo.setValue("ZDEL", getString("ZDEL"), 2L);
                        plmawtMbo.setValue("LINENUM", getString("LINENUM"), 2L);
                        plmawtMbo.getThisMboSet().save();
                        plmawtMbo.getThisMboSet().close();
                    }
                }
//            }


            //计算单位转换
            int ltype=getInt("LTYPE");//用于员工，物料，服务，工具的类型 2=物料
            if(ltype==2){
                MboSetRemote conversionSet=getMboSet("$EAM_CONVERSION","EAM_CONVERSION","MATNR='"+getString("ITEMNUM")+"' and BSTME='"+getString("ITEMQTYUNTI")+"'");
                if(null!=conversionSet && !conversionSet.isEmpty()){
                    MboRemote converMbo=conversionSet.getMbo(0);
                    double UMREN=Double.parseDouble(converMbo.getString("UMREN"));
                    double UMREZ=Double.parseDouble(converMbo.getString("UMREZ"));
                    //转换后的=(UMREZ/UMREN)*数量
                    double itemqty=getDouble("ITEMQTY");//出库数量
                    double covqty=(UMREZ/UMREN)*itemqty;
                    setValue("TFITEMQTY", covqty,2L);//转换后数量
                    setValue("TFITEMQTYUNIT", getString("ITEM.MEINS"),2L);//转换后单位(基本单位)
                    setValue("APPRQUANTITY", covqty,2L);//批准数量，默认和转换后的数量保持一致
                }
            }
        }

    }

    @Override
    public void add() throws MXException, RemoteException {
        super.add();
        setValue("LINENUM", (getThisMboSet().count()+1) + "", 2L);
    }

}
