package com.webclient.beans.udreport;

import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.server.MXServer;
import psdi.util.MXException;
import psdi.webclient.system.beans.AppBean;
import psdi.webclient.system.beans.ResultsBean;
import psdi.workflow.WorkFlowServiceRemote;

import java.rmi.RemoteException;

/**
 * 缺陷管理AppBean
 * edit 20230717
 */
public class UdreportAppBean extends AppBean {

    public void toudwork() throws MXException, RemoteException {
        MboRemote mbo=app.getAppBean().getMbo();
        String status=mbo.getString("STATUS");
        String udworkorderid=mbo.getString("UDWORKORDERID");
        if( ("".equalsIgnoreCase(udworkorderid) || null==udworkorderid)){
            MboSetRemote woSet = mbo.getMboSet("$UDWORKORDER","UDWORKORDER","1=2");
            MboRemote workorderMbo = woSet.addAtEnd(11L);
            workorderMbo.setValue("CREATEBY", getString("CREATEBY"),11L);
            workorderMbo.setValue("lead", getString("CREATEBY"),11L);
            workorderMbo.setValue("description", "缺陷单"+getString("UDREPORTNUM"));
            workorderMbo.setValue("STATUS", "EDIT",11L);
            workorderMbo.setValue("ASSETNUM", getString("ASSETNUM"),2L);
            workorderMbo.setValue("LOCATION", getString("LOCATION"),11L);
            workorderMbo.setValue("HDDEPT", getString("HDDEPT"),11L);
            workorderMbo.setValue("WOREQNUM", getString("UDREPORTNUM"),11L);
            workorderMbo.setValue("GDLY", "UDREPORT",11L);
            workorderMbo.setValue("FAILURECODE", getString("FAILURECODE"),11L);
            workorderMbo.setValue("PROBLEMCODE", getString("PROBLEMCODE"),11L);
            workorderMbo.setValue("FAULTCAUSE", getString("FAULTCAUSE"),11L);
            workorderMbo.setValue("REMEDY", getString("REMEDY"),11L);
            workorderMbo.setValue("APPNAME", "UDWORKORDER",11L);
            workorderMbo.setValue("PERSONGROUP", getString("PERSONGROUP"),11L);
            mbo.setValue("UDWORKORDERID", workorderMbo.getInt("UDWORKORDERID"), 2L);
//            app.getAppBean().save();
            ((WorkFlowServiceRemote) MXServer.getMXServer().lookup("WORKFLOW")).initiateWorkflow("UDWORKORDE", workorderMbo);
        }

        app.getAppBean().reloadTable();
        app.getAppBean().refreshTable();

        int udlldid=mbo.getInt("UDWORKORDERID");
        String appName = "UDWORKORDER";
        StringBuffer newUrl = new StringBuffer(this.clientSession.getMaximoRequestURI());
        newUrl.append("?event=gotoapp&value=" +appName+"&uniqueid="+udlldid);
        this.clientSession.getCurrentApp().put("forcereload", "true");
        this.clientSession.gotoApplink(newUrl.toString());
    }

    public void initializeApp() throws MXException, RemoteException {
        super.initializeApp();
        ResultsBean resultsbean = app.getResultsBean();
        MboSetRemote set=resultsbean.getMboSet();
        String userid=set.getUserInfo().getPersonId();
        MboSetRemote pset= MXServer.getMXServer().getMboSet("person", set.getUserInfo());
        pset.setWhere("personid='"+userid+"'");
        if(!pset.isEmpty() && pset.count()>0){
            MboRemote per=pset.getMbo(0);
            //权限等级
            String aut=per.getString("UDAUTGRADE");
            String orgid=per.getString("LOCATIONORG");
            String siteid=per.getString("LOCATIONSITE");

            if("Level 1".equalsIgnoreCase(aut)){
                set.setWhere(" 1=1 ");
            }else if("Level 2".equalsIgnoreCase(aut)){
                set.setWhere(" ORGID='"+orgid+"' ");
            }else if("Level 3".equalsIgnoreCase(aut)){
                set.setWhere(" SITEID='"+siteid+"' ");
            }else if("Level 4".equalsIgnoreCase(aut)){
                set.setWhere(" ORGID='"+orgid+"' and SITEID='"+siteid+"' and CREATEBY='"+userid+"'");
            }else{
                //没有等级
                set.setWhere("1=2");
            }
        }
        pset.close();

    }
}
