package com.app.hxqh.udRecovery;

import com.alibaba.fastjson.JSONObject;
import psdi.app.iface.spms.Spms2EamHandler;
import psdi.common.action.ActionCustomClass;
import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.server.MXServer;
import psdi.util.MXApplicationException;
import psdi.util.MXException;

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

/**
 * 旧件回收-主任审批结束，1)有入库数量，推送到spms，同时判断是否有留用数量，有的话，更新部门清单
 * edit 2023-07-06
 */
public class WFDirector2Spms implements ActionCustomClass {
    @Override
    public void applyCustomAction(MboRemote mboRemote, Object[] objects) throws MXException, RemoteException {
        String app = mboRemote.getThisMboSet().getApp();
        Integer UDRECOVERYID = mboRemote.getInt("UDRECOVERYID");//表ID
        String RCNUM = mboRemote.getString("RCNUM");//单号
        String WONUM = mboRemote.getString("WONUM");//领料申请单号
        String ORGID = mboRemote.getString("ORGID");//组织
        String SITEID = mboRemote.getString("SITEID");//地点
        String STATUS = mboRemote.getString("STATUS");//状态
        String CREATEBY = mboRemote.getString("CREATEBY");//责任人
        MboSetRemote personSet = MXServer.getMXServer().getMboSet("PERSON",MXServer.getMXServer().getSystemUserInfo());//人员表
        personSet.setWhere("personid='"+CREATEBY+"'");
        personSet.reset();
        String displayname = "";//用户名
        String department = "";//部门编号
        if(personSet!=null && !personSet.isEmpty()){
            MboRemote personMbo = personSet.getMbo(0);
            displayname = personMbo.getString("DISPLAYNAME");
            department = personMbo.getString("DEPARTMENT");
        }
        try {
            //如有留用数量，更新部门清单
            MboSetRemote udinvSet = MXServer.getMXServer().getMboSet("UDINVENTORY",MXServer.getMXServer().getSystemUserInfo());//EAM物资清单表（部门清单表）
            MboSetRemote udmatuSet = MXServer.getMXServer().getMboSet("UDMATUSETRANS",MXServer.getMXServer().getSystemUserInfo());//EAM物资清单子表
            MboSetRemote UDRECOVERYLINESet = mboRemote.getMboSet("$UDRECOVERYLINE","UDRECOVERYLINE","UDRECOVERYID="+UDRECOVERYID+" AND ORGID='"+ORGID+"' AND SITEID='"+SITEID+"' AND LYNUM>0");
            int count = UDRECOVERYLINESet.count();//总数
//            if(count > 0){
//                //更新部门清单（EAM物资备件清单）
//                for(int i=0;i<count;i++) {
//                    MboRemote rcMbo = UDRECOVERYLINESet.getMbo(i);
//                    String itemnum = rcMbo.getString("ITEMNUM");
//                    double LYNUM = rcMbo.getDouble("LYNUM");//留用数量
//                    udinvSet.setWhere("ITEMNUM='" + itemnum + "' AND DEPTNUM='" + department + "'");
//                    udinvSet.reset();
//                    if (null != udinvSet && !udinvSet.isEmpty()) {
//                        //插入交易记录表
//                        setudmatuSetValue(udmatuSet,itemnum,department,LYNUM,mboRemote,"UDRECOVERY","Storage");
//                    } else {
//                        MboRemote udinvMbo = udinvSet.add();
//                        udinvMbo.setValue("ITEMNUM", itemnum);
//                        udinvMbo.setValue("DEPTNUM",department);
//                        udinvMbo.setValue("ORGID",ORGID);
//                        udinvMbo.setValue("SITEID",SITEID);
//                        udinvMbo.getThisMboSet().save();
//                        //插入交易记录表
//                        setudmatuSetValue(udmatuSet,itemnum,department,LYNUM,mboRemote,"UDRECOVERY","Storage");
//                    }
//                }
//            }
            //推送到SPMS
            Spms2EamHandler spms2EamHandler = new Spms2EamHandler();
            JSONObject result = spms2EamHandler.Z_EAM_ITEM_RUKU(mboRemote);//调用spms接口，返回值
            if(result!=null){
                String codeStr = String.valueOf(result.getJSONObject("RESPONSE").getJSONObject("RETURN_DATA").getString("code"));//返回值
                if(codeStr!=null && !"".equals(codeStr) && "200".equals(codeStr)){

                }else{
                    //前端界面的消息提示
                    throw new MXApplicationException("UDRECOVERY", "WFLOW", new String[0] );
                }
            }
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage());
        }
    }

    /**
     * 插入交易记录表
     * @param udmatuSet
     * @param itemnum
     * @param workshop
     * @param udlldMbo
     * @throws RemoteException
     * @throws MXException
     */
    public void setudmatuSetValue(MboSetRemote udmatuSet,String itemnum,String workshop,double quantity,MboRemote udlldMbo,String appname,String issuetype) throws RemoteException, MXException {
        MboRemote udmatuMbo=udmatuSet.add();
        //ITEMNUM=:ITEMNUM and DEPTNUM=:DEPTNUM
        udmatuMbo.setValue("ITEMNUM", itemnum);
        udmatuMbo.setValue("DEPTNUM", workshop);
        udmatuMbo.setValue("QUANTITY", quantity);
        udmatuMbo.setValue("ISSUETYPE", issuetype);
        udmatuMbo.setValue("TRANSDATE", new Date());
        udmatuMbo.setValue("ENTERBY", udlldMbo.getString("CREATEBY"));
        udmatuMbo.setValue("WONUM", udlldMbo.getString("RCNUM"));
        udmatuMbo.setValue("KOSTL", "");
        udmatuMbo.setValue("OUTBOUND","");
        udmatuMbo.setValue("ORDERUNIT","");
        udmatuMbo.setValue("BINNUM", "");
        udmatuMbo.setValue("SJYDTYPE", "");
        udmatuMbo.setValue("AUFNR", "");
        udmatuMbo.setValue("ORGID", "");
        udmatuMbo.setValue("SITEID", "");
        udmatuMbo.setValue("APPNAME", appname);
        udmatuMbo.getThisMboSet().save();
    }

}
