package com.app.hxqh.pr;

import com.alibaba.fastjson.JSONObject;
import psdi.app.iface.oa.Eam2OaPrHandler;
import psdi.app.iface.srm.Srm2EamHandler;
import psdi.app.pr.PR;
import psdi.app.pr.PRRemote;
import psdi.mbo.*;
import psdi.util.MXApplicationException;
import psdi.util.MXException;

import java.io.IOException;
import java.rmi.RemoteException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class PrMbo extends PR implements PRRemote {

    public PrMbo(MboSet ms) throws MXException, RemoteException {
        super(ms);
    }

    @Override
    public void init() throws MXException {
        super.init();
        try {
            String app = getThisMboSet().getApp();
            String appname=getString("APPNAME");
            String status = getString("STATUS");
            String[] mainFields = new String[] {"DESCRIPTION","UDLOC","REPCATEGORY","URGENCY","SHIPTYPE","REQUESTEDBY","APPREASON","UDOAID","PROSTATUS","REQUIREDDATE","PROTYPE","PR2"};
            if("CAN".equalsIgnoreCase(status) ){
                setFieldFlag(mainFields, 7L, false);
            }
            if("TOOA".equalsIgnoreCase(status) || "SRM".equalsIgnoreCase(status)){
                setFieldFlag(mainFields, 7L, true);
            }

            //车间需求申请池
            if("udprtb".equalsIgnoreCase(appname) && getString("UDPRNUM").contains("AUTO")){
                setFlag(7L, true);
            }

        } catch (RemoteException e) {
            e.printStackTrace();
        }

    }

    @Override
    public void save() throws MXException, RemoteException {
        super.save();
        String app = getThisMboSet().getApp();
        String orgid=getString("ORGID");
        String siteid=getString("SITEID");
        //工厂采购需求单
        DecimalFormat df1 = new DecimalFormat("000");
        if ("UDPR".equalsIgnoreCase(app)) {//车间需求申请
            //申请单号规则：工厂编码+车间编号+日期+序列号，如 KF01-GA-20230421-001
            if(isNew()){
                String cjnum=getString("DEPTNUM");//车间编号
                String deptnum=getString("PR_PERSON_REQUEST.DEPARTMENT");;
                MboSetRemote pr2Set=getMboSet("$PR", "PR",
                        "ORGID='"+orgid+"' AND SITEID ='"+siteid+"' " +
                                "AND TO_CHAR(ISSUEDATE,'yyyy-MM-dd') =TO_CHAR(SYSDATE,'yyyy-MM-dd')  " +
                                "AND DEPTNUM='"+deptnum+"' and appname='UDPR'");
                if(!pr2Set.isEmpty()){
                    int count=pr2Set.count();
                    String udprnum="EAM-"+siteid+"-"+deptnum+"-"+new SimpleDateFormat("yyyyMMdd").format(new Date())+"-"+(df1.format(count+1));
                    setValue("UDPRNUM", udprnum,2L);
                }else{
                    String udprnum="EAM-"+siteid+"-"+deptnum+"-"+new SimpleDateFormat("yyyyMMdd").format(new Date())+"-"+(df1.format(1));
                    setValue("UDPRNUM", udprnum,2L);
                }
            }

        }
        if("UDPRGATHER".equalsIgnoreCase(app)){//工厂需求申请
            if(isNew()){
                //申请单号规则：工厂编码+年+序列号，如 KF01-2023-001
                MboSetRemote pr3Set=getMboSet("$PR", "PR","ORGID='"+orgid+"' AND SITEID ='"+siteid+"' AND TO_CHAR(ISSUEDATE,'yyyy') =TO_CHAR(SYSDATE,'yyyy')  and appname='UDPRGATHER' ");
                if(!pr3Set.isEmpty()){
                    int count=pr3Set.count();
                    String udprnum="EAM-"+siteid+"-"+new SimpleDateFormat("yyyy").format(new Date())+"-"+(df1.format(count+1));
                    setValue("UDPRNUM", udprnum,2L);
                    setValue("DESCRIPTION", udprnum+"-"+new SimpleDateFormat("yyyyMMdd").format(new Date())+"-"+getString("PR_PERSON_REQUEST.DISPLAYNAME")+"-"+getString("UDOAID"),2L);
                }else{
                    String udprnum="EAM-"+siteid+"-"+new SimpleDateFormat("yyyy").format(new Date())+"-"+(df1.format(1));
                    setValue("UDPRNUM", udprnum,2L);
                    setValue("DESCRIPTION", udprnum+"-"+new SimpleDateFormat("yyyyMMdd").format(new Date())+"-"+getString("PR_PERSON_REQUEST.DISPLAYNAME")+"-"+getString("UDOAID"),2L);
                }
            }

        }
        if("UDPRTB".equalsIgnoreCase(app)){//车间需求申请池
            if(isNew()){
                //申请单号规则：工厂编码+年+序列号，如 KF01-2023-001

            }
        }
    }

    @Override
    public MboRemote duplicate() throws MXException, RemoteException {
        return super.duplicate();
    }

    @Override
    public void add() throws MXException, RemoteException {
        super.add();
        String app = getThisMboSet().getApp();
        if ("UDPR".equalsIgnoreCase(app) ) {//车间需求申请
            //获取全量配置表 生成规则：全量配置表-类型为：项目合同号工厂编码
            //用字段值截取的“_”后面的部分+描述(CN)列，连接用“-”、比如：NZ-尼日利亚-纸尿裤厂
            MboSetRemote qlpzbSet=getMboSet("$UDQLPZB", "UDQLPZB","FIELD_NAME='项目合同号工厂编码' and FIELD_KEY='factoryProjectCode' and ORGID='"+getString("ORGID")+"' and SITEID='"+getString("SITEID")+"'");
            if(null!=qlpzbSet && !qlpzbSet.isEmpty()){
                MboRemote qlpzbMbo=qlpzbSet.getMbo(0);
                String keycode=qlpzbMbo.getString("KEY_CODE");
                String keycodedesc=qlpzbMbo.getString("KEY_CODE_DESC");
                String keycodeStr = keycode.substring(keycode.indexOf("_")+1,keycode.length());
                setValue("UDXMDM", keycodeStr+"-"+keycodedesc,2L);
            }

        }else if("UDPRTB".equalsIgnoreCase(app)){
            setValue("UDPRNUM", getInt("PRID")+"",2L);
        }
        String userid = getThisMboSet().getUserName();
        MboSetRemote personSet=getMboSet("PR_PERSON_REQUEST","PERSON","PERSONID='"+userid+"'");
        if(null!=personSet && !personSet.isEmpty()){
            String dept=personSet.getMbo(0).getString("DEPARTMENT");
            setValue("DEPTNUM", dept,2L);
        }
    }
}
