package com.webclient.beans.udtransfer;

import com.alibaba.fastjson.JSONObject;
import psdi.app.iface.spms.Spms2EamHandler;
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 java.io.IOException;
import java.rmi.RemoteException;

/**
 * 设备/资产转移
 * edit by liuxq 2023-12-13
 */
public class UdTransferAppBean 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(" ORGID='"+orgid+"' and 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();
    }

    //资产转移
    public void SBTRANSFER() throws IOException, MXException {
        System.out.println("--------start---------");
        MboRemote mboRemote=app.getAppBean().getMbo();//当前对象
        try {
            String TRANSFERNUM = mboRemote.getString("TRANSFERNUM");//转移单号
            String ORGID = mboRemote.getString("ORGID");//组织
            String SITEID = mboRemote.getString("SITEID");//地点
            String FROMSITE = mboRemote.getString("FROMSITE");//转出工厂
            String TARGETSITE = mboRemote.getString("TARGETSITE");//转入工厂
            String TARGETSITEORGID = "";//转入工厂组织
            String FROMCK = mboRemote.getString("FROMCK");//转出仓库
            String TARGETCK = mboRemote.getString("TARGETCK");//转入仓库

            MboSetRemote siteSet = MXServer.getMXServer().getMboSet("SITE",MXServer.getMXServer().getSystemUserInfo());//地点
            siteSet.setWhere("SITEID='"+TARGETSITE+"'");
            siteSet.reset();
            if(siteSet!=null && !siteSet.isEmpty()){
                MboRemote siteMbo = siteSet.getMbo(0);
                TARGETSITEORGID = siteMbo.getString("ORGID");
            }
            MboSetRemote assetSet = MXServer.getMXServer().getMboSet("ASSET",MXServer.getMXServer().getSystemUserInfo());//资产表
            MboSetRemote UDCJZSet = MXServer.getMXServer().getMboSet("UDCJZ",MXServer.getMXServer().getSystemUserInfo());//资产台账下的执行组
            MboSetRemote routestopSet = MXServer.getMXServer().getMboSet("ROUTE_STOP",MXServer.getMXServer().getSystemUserInfo());//点检路线子表
            MboSetRemote lineSet = MXServer.getMXServer().getMboSet("UDTRANSFERLINE",MXServer.getMXServer().getSystemUserInfo());//资产转移子表
            lineSet.setWhere("TRANSFERNUM='"+TRANSFERNUM+"' and orgid='"+ORGID+"' and siteid='"+SITEID+"'");
            lineSet.reset();
            if(lineSet!=null && !lineSet.isEmpty()){
                for(int i=0;i<lineSet.getSize();i++){
                    MboRemote lineMbo = lineSet.getMbo(i);
                    String assetnum = lineMbo.getString("ASSETNUM");//设备编号
                    assetSet.setWhere("ASSETNUM='"+assetnum+"' and orgid='"+ORGID+"' and siteid='"+SITEID+"'");
                    assetSet.reset();
                    if(assetSet!=null && !assetSet.isEmpty()){
                       MboRemote assetMbo = assetSet.getMbo(0);
                       //1-资产的相关信息
                        assetMbo.setValue("LOCATION","",2L);//位置
                        assetMbo.setValue("SDSYBM","",2L);//使用部门
                        assetMbo.setValue("SDWXBM","",2L);//维修部门
                        assetMbo.setValue("COSTCENTER","",2L);//成本中心
                        //如果是同组织下的工厂转移，不重置资产模板，否则重置资产模板
                        if(!ORGID.equalsIgnoreCase(TARGETSITEORGID)){
                            assetMbo.setValue("TEMPLATEID","",2L);//资产模板
                        }
                        assetMbo.setValue("ORGID",TARGETSITEORGID,11L);//组织
                        assetMbo.setValue("SITEID",TARGETSITE,11L);//地点
                        assetMbo.getThisMboSet().save(11L);
                    }
                    //2-资产下的执行组，执行组和资产是通过 ASSETID=:ASSETNUM and SITEID=:SITEID，带地点，因此不需要删除
                   /* UDCJZSet.setWhere("assetid='"+assetnum+"' and orgid='"+ORGID+"' and siteid='"+SITEID+"'");
                    UDCJZSet.reset();
                    if(UDCJZSet!=null && !UDCJZSet.isEmpty()){
                        UDCJZSet.deleteAll();
                        UDCJZSet.save();
                    }*/
                    //3-资产下的预防性维护，和资产是通过 ASSETID=:ASSETNUM  AND orgid=:orgid，带组织，需要看到，因此不需要删除
                    //4-资产下的点检保养计划，和资产是通过 ASSETID=:ASSETNUM  AND orgid=:orgid，带组织，需要看到，因此不需要删除
                    //5-原工厂（转出工厂）点检路线下面的这台设备从路线中删除
                    routestopSet.setWhere("assetnum='"+assetnum+"'");
                    routestopSet.reset();
                    if(routestopSet!=null && !routestopSet.isEmpty()){
                        routestopSet.deleteAll();
                        routestopSet.save();
                    }

                }
                mboRemote.setValue("STATUS","COMP",11L);
                mboRemote.getThisMboSet().save();
            }
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
        System.out.println("-------end-------------");
    }

}
