package com.webclient.beans.udpdplan;

import com.alibaba.fastjson.JSONObject;
import psdi.app.iface.oa.Eam2OaPrHandler;
import psdi.app.iface.srm.Srm2EamHandler;
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.AppBean;
import psdi.webclient.system.beans.ResultsBean;
import psdi.webclient.system.controller.WebClientEvent;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.rmi.RemoteException;
import java.text.ParseException;
import java.util.Date;

/**
 * 资产盘点计划AppBean
 * edit 20240624
 */
public class UdpalanAppBean extends AppBean {

    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 REQUESTEDBY='"+userid+"'");
            }else{
                //没有等级
                set.setWhere("1=2");
            }
        }
        pset.close();

    }


    /**
     * 发布盘点任务
     */
    public void RELEASE() throws Exception {
        MboRemote appMbo=app.getAppBean().getMbo();
        WebClientEvent webclientevent;
        webclientevent = this.clientSession.getCurrentEvent();
        if(!"EDIT".equalsIgnoreCase(appMbo.getString("STATUS")) ){
            this.clientSession.showMessageBox(webclientevent, new MXApplicationException("release", "release_no", new String[0]));
            return;
        }
        String orgid=appMbo.getString("ORGID");
        String siteid=appMbo.getString("SITEID");
        Date createdate=new Date();
        String creatby=appMbo.getThisMboSet().getUserInfo().getPersonId();
        MboSetRemote pdplanlineSet=appMbo.getMboSet("PDPLANLINE");//盘点计划子表
        MboSetRemote udgdzcSet = MXServer.getMXServer().getMboSet("UDGDZC", MXServer.getMXServer().getSystemUserInfo());
        MboSetRemote udpdSet = MXServer.getMXServer().getMboSet("UDPD", MXServer.getMXServer().getSystemUserInfo());
        if(null!=pdplanlineSet && !pdplanlineSet.isEmpty()){
            for(int i=0;i<pdplanlineSet.count();i++){
                MboRemote pdplanlineMbo=pdplanlineSet.getMbo(i);
                String deptnum=pdplanlineMbo.getString("DEPTNUM");//车间编号
                String cbzx=pdplanlineMbo.getString("DEPTCOST.COST_CENTER");//成本中心编号

                if(null!=cbzx && !"".equalsIgnoreCase(cbzx)){
                    MboRemote udpdMbo=udpdSet.add();//盘点任务主表Mbo
                    udpdMbo.setValue("DESCRIPTION", appMbo.getString("DESCRIPTION"), 2L);
                    udpdMbo.setValue("STATUS", "EDIT", 2L);
                    udpdMbo.setValue("DEPTNUM", deptnum, 2L);
                    udpdMbo.setValue("CREATEBY", creatby, 2L);
                    udpdMbo.setValue("CREATEDATE", createdate, 2L);
                    udpdMbo.setValue("ORGID", orgid, 2L);
                    udpdMbo.setValue("SITEID", siteid, 2L);
                    udpdMbo.setValue("PDNUM", udpdMbo.getInt("UDPDID")+"", 2L);
                    udpdMbo.setValue("UDPDPLANID", pdplanlineMbo.getInt("UDPDPLANID"), 2L);
                    pdplanlineMbo.setValue("UDPDID", udpdMbo.getInt("UDPDID"), 2L);

                    udgdzcSet.setWhere("BUKRS in(SELECT COMPANY FROM SITE WHERE SITEID='"+siteid+"' AND ORGID='"+orgid+"') AND KOSTL='"+cbzx+"'");
                    udgdzcSet.reset();
                    if(null!=udgdzcSet && !udgdzcSet.isEmpty()){
                        MboSetRemote udpdlinegxSet=udpdMbo.getMboSet("UDPDLINEGX");//盘点任务子表
                        for(int j=0;j<udgdzcSet.count();j++){
                            MboRemote udpdlinegxMbo=udpdlinegxSet.add();//盘点任务子表Mbo
                            MboRemote udgdzcMbo=udgdzcSet.getMbo(j);
                            udpdlinegxMbo.setValue("PDNUM", udpdMbo.getInt("UDPDID")+"", 2L);//关联值
                            udpdlinegxMbo.setValue("GDZCBH", udgdzcMbo.getString("ANLN1"), 2L);//固定资产编号
                            udpdlinegxMbo.setValue("STATUS", "WP", 11L);//盘点状态
                            udpdlinegxMbo.setValue("ORGID", orgid, 2L);
                            udpdlinegxMbo.setValue("SITEID", siteid, 2L);
                        }
                    }
                    udpdMbo.getThisMboSet().save();
                }

            }

            appMbo.setValue("STATUS", "PUB", 2L);
            app.getAppBean().save();
            this.clientSession.showMessageBox(webclientevent, new MXApplicationException("release", "release_success", new String[]{}));
            app.getAppBean().reloadTable();
            app.getAppBean().refreshTable();

        }

        System.gc();
    }



    /**
     * 提交
     */
    public void TJJH() throws Exception {
        MboRemote appMbo=app.getAppBean().getMbo();
        WebClientEvent webclientevent;
        webclientevent = this.clientSession.getCurrentEvent();
        if(!"PUB".equalsIgnoreCase(appMbo.getString("STATUS")) ){
            this.clientSession.showMessageBox(webclientevent, new MXApplicationException("release", "release_no", new String[0]));
            return;
        }
        String pdjl=appMbo.getString("PDZJ");
        if(null==pdjl || "".equalsIgnoreCase(pdjl)){
            this.clientSession.showMessageBox(webclientevent, new MXApplicationException("release", "release_pdjl", new String[0]));
            return;
        }

        appMbo.setValue("STATUS", "COMP", 2L);
        app.getAppBean().save();
        this.clientSession.showMessageBox(webclientevent, new MXApplicationException("release", "releasesub_success", new String[]{}));
        app.getAppBean().reloadTable();
        app.getAppBean().refreshTable();

        System.gc();
    }


}
