package com.webclient.beans.udpmwoorder;

import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.util.MXApplicationException;
import psdi.util.MXException;
import psdi.webclient.system.beans.DataBean;

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

/**
 * 日常维修工单-计划-物料子表DataBean
 * edit 2023-07-03
 */
public class ShowPlanItemLabDataBean extends DataBean {

    public void createLld() throws RemoteException, MXException {
        app.getAppBean().save();
        MboRemote appMbo=app.getAppBean().getMbo();
        String mainStatus=appMbo.getString("STATUS");
        if("WAPPR".equalsIgnoreCase(mainStatus) || "EDIT".equalsIgnoreCase(mainStatus)){
            int workorderid=appMbo.getInt("UDWORKORDERID");
            String userid = this.app.getBeanForApp().getMbo().getUserInfo().getPersonId();
            MboSetRemote lldSet = appMbo.getMboSet("$UDLLD","UDLLD","UDWORKORDERID="+workorderid+" ");
            MboRemote lldMbo=null;
            if(null!=lldSet && !lldSet.isEmpty()){
                lldMbo=lldSet.getMbo(0);
                String status=lldMbo.getString("STATUS");
                //领料单状态为EDIT
                if("EDIT".equalsIgnoreCase(status)){
                    MboSetRemote lldLineSet=lldMbo.getMboSet("UDLLDLINE");
                    if(null!=lldLineSet ){
                        lldLineSet.deleteAll(2L);
                        lldLineSet.save(11L);
                        MboSetRemote jhWlSet=appMbo.getMboSet("SHOWPLANMATERIAL");//计划-物料子表
                        if(null!=jhWlSet && !jhWlSet.isEmpty()){
                            for(int i=0;i<jhWlSet.count();i++){
                                MboRemote mbo=jhWlSet.getMbo(i);
                                MboRemote lldLineMbo=lldLineSet.add();
                                //PARENTID=:UDLLDID AND ORGID=:ORGID AND SITEID=:SITEID
                                lldLineMbo.setValue("PARENTID", lldMbo.getInt("UDLLDID"));
                                lldLineMbo.setValue("ORGID", lldMbo.getString("ORGID"));
                                lldLineMbo.setValue("SITEID", lldMbo.getString("SITEID"));
                                lldLineMbo.setValue("LINENUM", mbo.getInt("LINENUM"),2L);//序号
                                lldLineMbo.setValue("ITEMNUM", mbo.getString("ITEMNUM"));
                                lldLineMbo.setValue("ORDERQTY", mbo.getDouble("ITEMQTY"));
                                lldLineMbo.setValue("ORDERUNIT", mbo.getString("ITEMQTYUNTI"));
                                lldLineMbo.setValue("AUFNR", mbo.getString("AUFNR"));
                                lldLineMbo.setValue("SJYDTYPE", mbo.getString("UDYDLX"));
                                lldLineMbo.setValue("REMARKS", mbo.getString("REMARKS"));
                                lldLineMbo.getThisMboSet().save();
                            }
                        }
                    }
                }else{
                    throw new MXApplicationException("udworkorder", "udworkorder_lldnot", new String[]{lldMbo.getString("WONUM")} );
                }
            }else{
                lldMbo=lldSet.add();
                lldMbo.setValue("CREATEBY", userid);
                lldMbo.setValue("WOAPPNAME", "UDWORKORDER");
                lldMbo.setValue("WORKORDER", appMbo.getString("WONUM"));
                lldMbo.setValue("APPNAME", "UDLLD");
                lldMbo.setValue("UDWORKORDERID", workorderid);
                String wonum="EAM"+lldMbo.getInt("UDLLDID");
                lldMbo.setValue("WONUM", wonum,2L);
                lldMbo.setValue("STATUS", "EDIT",2L);
                lldMbo.setValue("STATUSDATE", new Date(),2L);
                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='"+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+"')");
                if(null!=deptSet && !deptSet.isEmpty()){
                    lldMbo.setValue("UDZGR", deptSet.getMbo(0).getString("DIRECTOR"),11L);
                }
                lldMbo.getThisMboSet().save();
                MboSetRemote lldLineSet=lldMbo.getMboSet("UDLLDLINE");
                if(null!=lldLineSet ){
                    MboSetRemote jhWlSet=appMbo.getMboSet("SHOWPLANMATERIAL");//计划-物料子表
                    if(null!=jhWlSet && !jhWlSet.isEmpty()){
                        for(int i=0;i<jhWlSet.count();i++){
                            MboRemote mbo=jhWlSet.getMbo(i);
                            MboRemote lldLineMbo=lldLineSet.add();
                            //PARENTID=:UDLLDID AND ORGID=:ORGID AND SITEID=:SITEID
                            lldLineMbo.setValue("PARENTID", lldMbo.getInt("UDLLDID"));
                            lldLineMbo.setValue("ORGID", lldMbo.getString("ORGID"));
                            lldLineMbo.setValue("SITEID", lldMbo.getString("SITEID"));
                            lldLineMbo.setValue("LINENUM", mbo.getInt("LINENUM"),2L);//序号
                            lldLineMbo.setValue("ITEMNUM", mbo.getString("ITEMNUM"));
                            lldLineMbo.setValue("ORDERQTY", mbo.getDouble("ITEMQTY"));
                            lldLineMbo.setValue("ORDERUNIT", mbo.getString("ITEMQTYUNTI"));
                            lldLineMbo.setValue("AUFNR", mbo.getString("AUFNR"));
                            lldLineMbo.setValue("SJYDTYPE", mbo.getString("UDYDLX"));
                            lldLineMbo.setValue("REMARKS", mbo.getString("REMARKS"));
                            lldLineMbo.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());
        }else{
            throw new MXApplicationException("udworkorder", "udworkorder_not", new String[0] );
        }

    }

    /**
     * 加入需求申请池
     * @throws RemoteException
     * @throws MXException
     */
    public void createprtb() throws RemoteException, MXException {
        app.getAppBean().save();
        MboRemote appMbo=app.getAppBean().getMbo();
        String mainStatus=appMbo.getString("STATUS");
        int workorderid=appMbo.getInt("UDWORKORDERID");
        String userid = this.app.getBeanForApp().getMbo().getUserInfo().getPersonId();
        MboSetRemote prSet = appMbo.getMboSet("$PR","PR","APPNAME='UDPRTB' AND UDWORKORDERID="+workorderid+" ");
        MboRemote prMbo=null;
        if(null!=prSet && !prSet.isEmpty()){
            prMbo=prSet.getMbo(0);
            String status=prMbo.getString("STATUS");
            if("WAPPR".equalsIgnoreCase(status)){
                MboSetRemote prlineSet=prMbo.getMboSet("PRLINE");
                if(null!=prlineSet ){
                    prlineSet.deleteAll(2L);
                    prlineSet.save(11L);
                    MboSetRemote jhWlSet=appMbo.getMboSet("SHOWPLANMATERIAL");//计划-物料子表
                    if(null!=jhWlSet && !jhWlSet.isEmpty()){
                        for(int i=0;i<jhWlSet.count();i++){
                            MboRemote mbo=jhWlSet.getMbo(i);
                            MboRemote prlineMbo=prlineSet.add();
                            //prnum=:prnum and siteid=:siteid
                            prlineMbo.setValue("prnum", prMbo.getString("prnum"),2L);
                            prlineMbo.setValue("SITEID", prMbo.getString("SITEID"),2L);
                            prlineMbo.setValue("PRLINENUM", mbo.getInt("LINENUM")+"",2L);//序号
                            prlineMbo.setValue("ITEMNUM", mbo.getString("ITEMNUM"));
                            prlineMbo.setValue("ORDERQTY", mbo.getDouble("ITEMQTY"));
                            prlineMbo.setValue("ORDERUNIT", mbo.getString("ITEMQTYUNTI"));
                            prlineMbo.setValue("CONVERSION",1,2L);
                            prlineMbo.getThisMboSet().save();
                        }
                    }
                }
            }else{
                throw new MXApplicationException("udworkorder", "udworkorder_prnot", new String[]{prMbo.getString("UDPRNUM")} );
            }
        }else{
            prMbo=prSet.add();
            prMbo.setValue("requestedby", userid);
            prMbo.setValue("APPNAME", "UDPRTB");
            prMbo.setValue("UDWORKORDERID", workorderid);
            String wonum="EAM"+prMbo.getInt("PRID");
            prMbo.setValue("UDPRNUM", wonum,2L);
            prMbo.setValue("STATUS", "WAPPR",2L);
            prMbo.setValue("STATUSDATE", new Date(),2L);
            prMbo.getThisMboSet().save();

            MboSetRemote prlineSet=prMbo.getMboSet("PRLINE");
            if(null!=prlineSet ){
                MboSetRemote jhWlSet=appMbo.getMboSet("SHOWPLANMATERIAL");//计划-物料子表
                if(null!=jhWlSet && !jhWlSet.isEmpty()){
                    for(int i=0;i<jhWlSet.count();i++){
                        MboRemote mbo=jhWlSet.getMbo(i);
                        MboRemote prlineMbo=prlineSet.add();
                        //prnum=:prnum and siteid=:siteid
                        prlineMbo.setValue("prnum", prMbo.getString("prnum"),2L);
                        prlineMbo.setValue("SITEID", prMbo.getString("SITEID"),2L);
                        prlineMbo.setValue("PRLINENUM", mbo.getInt("LINENUM")+"",2L);//序号
                        prlineMbo.setValue("ITEMNUM", mbo.getString("ITEMNUM"));
                        prlineMbo.setValue("ORDERQTY", mbo.getDouble("ITEMQTY"));
                        prlineMbo.setValue("ORDERUNIT", mbo.getString("ITEMQTYUNTI"));
                        prlineMbo.setValue("CONVERSION",1,2L);
                        prlineMbo.getThisMboSet().save();
                    }
                }
            }

        }
        StringBuffer newUrl = new StringBuffer(this.clientSession.getMaximoRequestURI());
        newUrl.append("?event=gotoapp&value=udprtb&uniqueid="+prMbo.getInt("PRID"));
        this.clientSession.getCurrentApp().put("forcereload", "true");
        this.clientSession.gotoApplink(newUrl.toString());
    }
}
