package com.webclient.beans.udbudgetTask;

import org.python.antlr.ast.Break;
import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.server.MXServer;
import psdi.util.MXApplicationException;
import psdi.util.MXException;
import psdi.webclient.system.beans.DataBean;

import java.rmi.RemoteException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * DataBean
 * createby liuxq  2023-7-10
 * 发起请购申请   createpr
 * 发起领料申请   createUDLLD
 * 资产拆分建账   createAsset
 * 发起退库申请   createUDTKD
 */

public class udBudgetTaskDataBean extends DataBean {

    /**
     * 资产拆分建账
     * @throws MXException
     * @throws RemoteException
     */
    public void createAsset() throws MXException, RemoteException {
        app.getAppBean().save();//主表保存
        MboRemote appMbo=app.getAppBean().getMbo();//获取主表MBO
        String status=appMbo.getString("STATUS");
        String appname = appMbo.getThisMboSet().getApp();
        String siteid = appMbo.getString("SITEID");
        String orgid = appMbo.getString("ORGID");
        if("EDIT".equalsIgnoreCase(status) || "CAN".equalsIgnoreCase(status)){
            String userid = this.app.getBeanForApp().getMbo().getUserInfo().getPersonId();
            MboSetRemote assetSet = MXServer.getMXServer().getMboSet("ASSET",MXServer.getMXServer().getSystemUserInfo());
            MboRemote assetMbo=assetSet.add();
            assetMbo.setValue("ASSETNUM", assetMbo.getInt("ASSETUID")+"",2L);
            assetMbo.setValue("UDBUDGETTASKID", appMbo.getInt("UDBUDGETTASKID"),2L);
            assetMbo.setValue("SITEID",siteid,2L);
            assetMbo.setValue("ORGID",orgid,2L);
            assetMbo.getThisMboSet().save();
            StringBuffer newUrl = new StringBuffer(this.clientSession.getMaximoRequestURI());
            newUrl.append("?event=gotoapp&value=lpasset&uniqueid="+assetMbo.getInt("ASSETUID"));
            this.clientSession.getCurrentApp().put("forcereload", "true");
            this.clientSession.gotoApplink(newUrl.toString());
        }else{
            this.clientSession.showMessageBox("zccf", "zccf_tooa", new String[]{});
        }

    }

    public void importexcel() throws RemoteException, MXException {
        MboRemote appMbo=app.getAppBean().getMbo();//获取主表MBO
        String status=appMbo.getString("STATUS");
        if(!"EDIT".equalsIgnoreCase(status) && !"CAN".equalsIgnoreCase(status)){
            throw new MXApplicationException("zccf", "zccf_tooa", new String[]{});
        }else{
            String ispro=appMbo.getString("ISPRO");//是否已经立项
            if("1".equalsIgnoreCase(ispro)){
                throw new MXApplicationException("zccf", "zccf_wlx", new String[]{});
            }
        }
    }

    public void importexcel2() throws RemoteException, MXException {
        MboRemote appMbo=app.getAppBean().getMbo();//获取主表MBO
        String status=appMbo.getString("STATUS");
        if(!"EDIT".equalsIgnoreCase(status) && !"CAN".equalsIgnoreCase(status)){
            throw new MXApplicationException("zccf", "zccf_tooa", new String[]{});
        }else{
            String ispro=appMbo.getString("ISPRO");//是否已经立项
            if("0".equalsIgnoreCase(ispro)){
                throw new MXApplicationException("zccf", "zccf_ylx", new String[]{});
            }
        }
    }

    /**
     * 发起领料申请
     * @throws MXException
     * @throws RemoteException
     */
    public void createUDLLD() throws MXException, RemoteException {
        app.getAppBean().save();//主表保存
        MboRemote appMbo=app.getAppBean().getMbo();//获取主表MBO
        String userid = this.app.getBeanForApp().getMbo().getUserInfo().getPersonId();
        MboSetRemote lldSet = MXServer.getMXServer().getMboSet("UDLLD",MXServer.getMXServer().getSystemUserInfo());
        MboRemote lldMbo=lldSet.add();
        lldMbo.setValue("CREATEBY", userid);
        lldMbo.setValue("APPNAME", "UDLLD");
        lldMbo.setValue("UDBUDGETTASKID", appMbo.getInt("UDBUDGETTASKID"),2L);
        String wonum="EAM"+lldMbo.getInt("UDLLDID");
        lldMbo.setValue("WONUM", wonum,2L);
        lldMbo.setValue("STATUS", "EDIT",2L);
        lldMbo.setValue("STATUSDATE", new Date(),2L);
        lldMbo.setValue("AUFNR", appMbo.getString("AUFNR"),2L);//内部订单号

        String siteid=appMbo.getString("SITEID");
        MboSetRemote personSet=appMbo.getMboSet("$PERSON", "PERSON","PERSONID='"+userid+"' ");
        if(null!=personSet && !personSet.isEmpty()){
            lldMbo.setValue( "WORKSHOP", personSet.getMbo(0).getString("DEPARTMENT"),11L);
        }
        MboSetRemote locSet=appMbo.getMboSet("$LOCATIONS", "LOCATIONS","SITEID='"+appMbo.getString("SITEID")+"' and TYPE='STOREROOM' ");
        if(null!=locSet && !locSet.isEmpty()){
            lldMbo.setValue("LOCNUM", locSet.getMbo(0).getString("LOCATION"),11L);
        }
        MboSetRemote deptSet=appMbo.getMboSet("$DEPT","DEPT","DEPTNUM=(SELECT DEPARTMENT FROM PERSON WHERE PERSONID='"+userid+"') AND SITEID='"+siteid+"'");
        if(null!=deptSet && !deptSet.isEmpty()){
            lldMbo.setValue("UDZGR", deptSet.getMbo(0).getString("DIRECTOR"),11L);
        }

        Date date= MXServer.getMXServer().getDate();
        String createdate=new SimpleDateFormat("yyyyMMdd").format(date);
        lldMbo.setValue("DESCRIPTION", siteid+"-"+userid+"-"+createdate,2L);

        lldMbo.getThisMboSet().save();
        StringBuffer newUrl = new StringBuffer(this.clientSession.getMaximoRequestURI());
        newUrl.append("?event=gotoapp&value=udlld&uniqueid="+lldMbo.getInt("UDLLDID"));
        this.clientSession.getCurrentApp().put("forcereload", "true");
        this.clientSession.gotoApplink(newUrl.toString());
    }

    /**
     * 发起退料申请
     * @throws MXException
     * @throws RemoteException
     */
    public void createUDTKD() throws MXException, RemoteException {
        app.getAppBean().save();//主表保存
        MboRemote appMbo=app.getAppBean().getMbo();//获取主表MBO
        String userid = this.app.getBeanForApp().getMbo().getUserInfo().getPersonId();
        MboSetRemote lldSet = MXServer.getMXServer().getMboSet("UDLLD",MXServer.getMXServer().getSystemUserInfo());
        MboRemote lldMbo=lldSet.add();
        lldMbo.setValue("CREATEBY", userid);
        lldMbo.setValue("APPNAME", "UDTKD");
        lldMbo.setValue("UDBUDGETTASKID", appMbo.getInt("UDBUDGETTASKID"),2L);
        String wonum="EAM"+lldMbo.getInt("UDLLDID");
        lldMbo.setValue("WONUM", wonum,2L);
        lldMbo.setValue("STATUS", "EDIT",2L);
        lldMbo.setValue("STATUSDATE", new Date(),2L);
        lldMbo.getThisMboSet().save();
        StringBuffer newUrl = new StringBuffer(this.clientSession.getMaximoRequestURI());
        newUrl.append("?event=gotoapp&value=udtkd&uniqueid="+lldMbo.getInt("UDLLDID"));
        this.clientSession.getCurrentApp().put("forcereload", "true");
        this.clientSession.gotoApplink(newUrl.toString());
    }


    /**
     * 发起请购申请
     * @throws MXException
     * @throws RemoteException
     */
    public void createpr() throws MXException, RemoteException {
        app.getAppBean().save();//主表保存
        MboRemote appMbo=app.getAppBean().getMbo();//获取主表MBO
        String userid = this.app.getBeanForApp().getMbo().getUserInfo().getPersonId();
        MboSetRemote prlineSet = MXServer.getMXServer().getMboSet("PR",MXServer.getMXServer().getSystemUserInfo());
        MboRemote prMbo=prlineSet.add();
        prMbo.setValue("requestedby", userid,2L);
        prMbo.setValue("APPNAME", "UDPR",2L);
        prMbo.setValue("UDPRNUM", prMbo.getInt("PRID")+"",2L);
        prMbo.setValue("STATUS", "WAPPR",2L);
        prMbo.setValue("STATUSDATE", new Date(),2L);
        prMbo.setValue("ORGID", appMbo.getString("ORGID"),2L);
        prMbo.setValue("SITEID", appMbo.getString("SITEID"),2L);
        prMbo.setValue("UDBUDGETTASKID", appMbo.getInt("UDBUDGETTASKID"),2L);
        prMbo.setValue("PRONUM", appMbo.getString("UDBUDGET.PROJECTNUM"),11L);
        prMbo.getThisMboSet().save();

        //跳转到领料申请应用
        StringBuffer newUrl = new StringBuffer(this.clientSession.getMaximoRequestURI());
        newUrl.append("?event=gotoapp&value=udpr&uniqueid="+prMbo.getInt("PRID"));
        this.clientSession.getCurrentApp().put("forcereload", "true");
        this.clientSession.gotoApplink(newUrl.toString());
        app.getAppBean().refreshTable();
        app.getAppBean().reloadTable();
    }

    //跳转到车间需求申请应用程序
    public void touchpr() throws MXException, RemoteException {
        MboRemote mbo=getMbo();
        int prid=Integer.valueOf(mbo.getString("UDPRNUM"));
        String appName = "udpr";
        StringBuffer newUrl = new StringBuffer(this.clientSession.getMaximoRequestURI());
        newUrl.append("?event=gotoapp&value=" +appName+"&uniqueid="+prid);
        this.clientSession.getCurrentApp().put("forcereload", "true");
        this.clientSession.gotoApplink(newUrl.toString());
    }

    //从预算管理应用下的任务管理下的任务编号跳转到任务管理应用
    public void touchTask() throws MXException, RemoteException {
        MboRemote mbo=getMbo();
        String siteid = mbo.getString("SITEID");
        String ORGID = mbo.getString("ORGID");
        int prid=mbo.getInt("UDBUDGETTASKID");
        String appName = "";
        if("TILE".equalsIgnoreCase(ORGID)){
            appName = "udbudgettasktf";
        }else{
            appName = "udbudgettask";
        }
        StringBuffer newUrl = new StringBuffer(this.clientSession.getMaximoRequestURI());
        newUrl.append("?event=gotoapp&value=" +appName+"&uniqueid="+prid);
        this.clientSession.getCurrentApp().put("forcereload", "true");
        this.clientSession.gotoApplink(newUrl.toString());
    }


    //从任务管理应用下的资产拆分跳转到资产台账
    public void touchAsset() throws MXException, RemoteException {
        MboRemote mbo=getMbo();
        String prid=mbo.getString("ASSETNUM");
        String appName = "LPASSET";
        StringBuffer newUrl = new StringBuffer(this.clientSession.getMaximoRequestURI());
        newUrl.append("?event=gotoapp&value=" +appName+"&uniqueid="+prid);
        this.clientSession.getCurrentApp().put("forcereload", "true");
        this.clientSession.gotoApplink(newUrl.toString());
    }


}
