package com.app.crontask;

import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.server.MXServer;
import psdi.server.SimpleCronTask;
import psdi.util.MXException;

import java.rmi.RemoteException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 物资主数据从中间表 EAM_MARA 取值同步至EAM
 * editby  20230420
 */
public class EamGetMaraDataCronTask extends SimpleCronTask {

    @Override
    public void cronAction() {
        try {
            MboSetRemote eamMaraSet = MXServer.getMXServer().getMboSet("EAM_MARA",MXServer.getMXServer().getSystemUserInfo());
            eamMaraSet.setWhere("ersda >= TO_DATE(TO_CHAR(SYSDATE,'yyyy-MM-dd'),'yyyy-MM-dd') and ersda<TO_DATE(TO_CHAR(SYSDATE+1,'yyyy-MM-dd') ,'yyyy-MM-dd')");
            eamMaraSet.reset();
            if(null!=eamMaraSet && !eamMaraSet.isEmpty()){
                for(int i=0;i<eamMaraSet.count();i++){
                    MboRemote eamMarMbo=eamMaraSet.getMbo(i);
                    String matnr=eamMarMbo.getString("MATNR");
                    MboSetRemote itemSet=eamMarMbo.getMboSet("ITEM","ITEM","ITEMNUM='"+matnr+"'");
                    if(null!=itemSet){
                        if(itemSet.isEmpty()){//空代表没有物料数据，需新增
                            MboRemote itemMbo=itemSet.add();
                            setItemvalue(itemMbo,eamMarMbo, matnr,true);

                        }else{//不为空代表有数据，需更新数据
                            MboRemote itemMbo2=itemSet.getMbo(0);
                            setItemvalue(itemMbo2,eamMarMbo, matnr,false);
                        }
                    }

                }
                System.out.println("---EamGetMaraDataCronTask 物料主数据定时同步成功---");
            }
        }catch (Exception e) {
            e.printStackTrace();
            e.getCause();
            e.getMessage();

        }finally {
            System.gc();
        }

    }

    /**
     * 设置item物资主数据值
     * @param itemMbo
     * @param eamMarMbo
     * @param matnr
     * @throws RemoteException
     * @throws MXException
     */
    public void setItemvalue(MboRemote itemMbo,MboRemote eamMarMbo,String matnr,boolean isadd) throws RemoteException, MXException {
        if(isadd){
            itemMbo.setValue("ITEMSETID", "SUNDASET",2L);//项目集
            itemMbo.setValue("LOTTYPE", "NOLOT",2L);//批次类型
            itemMbo.setValue("ITEMNUM", matnr,2L);
            itemMbo.setValue("STATUS", "ACTIVE",2L);
        }
        itemMbo.setValue("DESCRIPTION", eamMarMbo.getString("WLMX"),2L);
        itemMbo.setValue("GROUPS", eamMarMbo.getString("GROUPS"),2L);//物料分类组
        itemMbo.setValue("SMALL_GROUPS", eamMarMbo.getString("SMALL_GROUPS"),2L);//物料分类小组
        itemMbo.setValue("WLMS_UNIQ", eamMarMbo.getString("WLMS_UNIQ"),2L);//物料唯一性规则
        itemMbo.setValue("WLMX_EN", eamMarMbo.getString("WLMX_EN"),2L);//标准化物料英文名称
        itemMbo.setValue("MAKTX", eamMarMbo.getString("MAKTX"),2L);//SAP物料中文描述
        itemMbo.setValue("MAKTX01", eamMarMbo.getString("MAKTX01"),2L);//物料英文名称(短)
        itemMbo.setValue("MAKTX02", eamMarMbo.getString("MAKTX02"),2L);//物料法语名称(短)
        itemMbo.setValue("MAKTX03", eamMarMbo.getString("MAKTX03"),2L);//物料西班牙名称(短)
        itemMbo.setValue("PRDHA", eamMarMbo.getString("PRDHA"),2L);//产品层次
        itemMbo.setValue("MATKL", eamMarMbo.getString("MATKL"),2L);//物料组
        itemMbo.setValue("MEINS", eamMarMbo.getString("MEINS"),2L);//基本计量单位
        itemMbo.setValue("VOLEH", eamMarMbo.getString("VOLEH"),2L);//基本体积单位
        itemMbo.setValue("VOLUM", String.valueOf(eamMarMbo.getDouble("VOLUM")),2L);//基本体积
        itemMbo.setValue("GEWEI", eamMarMbo.getString("GEWEI"),2L);//基本重量单位
        itemMbo.setValue("NTGEW", String.valueOf(eamMarMbo.getDouble("NTGEW")),2L);//基本净重
        itemMbo.setValue("BRGEW", String.valueOf(eamMarMbo.getDouble("BRGEW")),2L);//基本毛重
        itemMbo.setValue("MTART", eamMarMbo.getString("MTART"),2L);//物料类型
        itemMbo.setValue("SPART", eamMarMbo.getString("SPART"),2L);//产品线
        itemMbo.setValue("WERKS", eamMarMbo.getString("WERKS"),2L);//工厂
        itemMbo.setValue("PRODUCT_MATERIAL", eamMarMbo.getString("PRODUCT_MATERIAL"),2L);//产品材质
        itemMbo.setValue("Z_SPMSFLAG", eamMarMbo.getString("Z_SPMSFLAG"),2L);//SPMS标识
        itemMbo.setValue("Z_MAKTX", eamMarMbo.getString("Z_MAKTX"),2L);//名称
        itemMbo.setValue("Z_GGCC", eamMarMbo.getString("Z_GGCC"),2L);//规格型号尺寸
        itemMbo.setValue("Z_CZ", eamMarMbo.getString("Z_CZ"),2L);//材质
        itemMbo.setValue("Z_TH", eamMarMbo.getString("Z_TH"),2L);//图号
        itemMbo.setValue("Z_TECH", eamMarMbo.getString("Z_TECH"),2L);//其他技术补充参数
        itemMbo.setValue("Z_TEXT", eamMarMbo.getString("Z_TEXT"),2L);//配套设备
        itemMbo.setValue("Z_BRAND", eamMarMbo.getString("Z_BRAND"),2L);//品牌/厂商
        itemMbo.setValue("Z_STANDARD", eamMarMbo.getString("Z_STANDARD"),2L);//参考标准
        itemMbo.setValue("Z_SPMSSC", eamMarMbo.getString("Z_SPMSSC"),2L);//是否上商城
        itemMbo.setValue("ZMOVTYP", eamMarMbo.getString("ZMOVTYP"),2L);//默认移动类型
        itemMbo.setValue("Z_REMARK", eamMarMbo.getString("Z_REMARK"),2L);//备注
        itemMbo.setValue("ZMOQ", eamMarMbo.getString("ZMOQ"),2L);//最小包装量
        itemMbo.setValue("Z_RECEIVEFLAG", eamMarMbo.getString("Z_RECEIVEFLAG"),2L);//是否SPMS收货
        itemMbo.setValue("MBRSH", eamMarMbo.getString("MBRSH"),2L);//行业领域
        itemMbo.setValue("SC_WERKS", eamMarMbo.getString("SC_WERKS"),2L);//生产/采购源头
        itemMbo.setValue("PRODUCT_NAME", eamMarMbo.getString("PRODUCT_NAME"),2L);//产品品名
        itemMbo.setValue("LVORM", eamMarMbo.getString("LVORM"),2L);//删除状态
        itemMbo.setValue("MSTAE", eamMarMbo.getString("MSTAE"),2L);//冻结状态
        itemMbo.setValue("BIG_CATEGORY", eamMarMbo.getString("BIG_CATEGORY"),2L);//物料大类
        itemMbo.setValue("MIDDLE_CATEGORY", eamMarMbo.getString("MIDDLE_CATEGORY"),2L);//物料中类
        itemMbo.setValue("SMALL_CATEGORY", eamMarMbo.getString("SMALL_CATEGORY"),2L);//物料小类
        itemMbo.setValue("CONTROL_DEPT", eamMarMbo.getString("CONTROL_DEPT"),2L);//管控部门
        itemMbo.setValue("CONTROL_POST", eamMarMbo.getString("CONTROL_POST"),2L);//管控岗位
        itemMbo.setValue("DATA_OWNER", eamMarMbo.getString("DATA_OWNER"),2L);//数据owner
        itemMbo.setValue("PURCHASE_ID", eamMarMbo.getString("PURCHASE_ID"),2L);//采购视图
        itemMbo.setValue("MRP_ID", eamMarMbo.getString("MRP_ID"),2L);//MRP视图
        itemMbo.setValue("CUSTOMS_ID", eamMarMbo.getString("CUSTOMS_ID"),2L);//海关视图
        itemMbo.setValue("FINANCE_ID", eamMarMbo.getString("FINANCE_ID"),2L);//财务视图
        itemMbo.setValue("SALE_ID", eamMarMbo.getString("SALE_ID"),2L);//销售视图
        itemMbo.setValue("CPFR_ID", eamMarMbo.getString("CPFR_ID"),2L);//补货视图
        itemMbo.setValue("CONVERSION_ID", eamMarMbo.getString("CONVERSION_ID"),2L);//单位转换视图
        itemMbo.setValue("FACSTORAGE_ID", eamMarMbo.getString("FACSTORAGE_ID"),2L);//工厂存储视图
        itemMbo.setValue("ATTACH_FILE", eamMarMbo.getString("ATTACH_FILE"),2L);//物料附件

        itemMbo.setValue("BISMT", eamMarMbo.getString("BISMT"),2L);//旧物料号
        itemMbo.setValue("EXTWG", eamMarMbo.getString("EXTWG"),2L);//产品品牌
        itemMbo.setValue("GROES", eamMarMbo.getString("GROES"),2L);//大小/量纲
        itemMbo.setValue("NATIONAL_LOCAL", eamMarMbo.getString("NATIONAL_LOCAL"),2L);//国家本地生产标识
        itemMbo.setValue("PRODUCT_COLOR", eamMarMbo.getString("PRODUCT_COLOR"),2L);//产品颜色
        itemMbo.setValue("PRODUCT_CONTENT", eamMarMbo.getString("PRODUCT_CONTENT"),2L);//产品辅料含量
        itemMbo.setValue("PRODUCT_FRAGRANCE", eamMarMbo.getString("PRODUCT_FRAGRANCE"),2L);//产品香味
        itemMbo.setValue("PRODUCT_FUNCTION", eamMarMbo.getString("PRODUCT_FUNCTION"),2L);//产品功能
        itemMbo.setValue("PRODUCT_MODEL", eamMarMbo.getString("PRODUCT_MODEL"),2L);//产品型号
        itemMbo.setValue("PRODUCT_ORIGIN", eamMarMbo.getString("PRODUCT_ORIGIN"),2L);//产品产地
        itemMbo.setValue("PRODUCT_PACKAGING", eamMarMbo.getString("PRODUCT_PACKAGING"),2L);//产品包装
        itemMbo.setValue("PRODUCT_PAC_SPEC", eamMarMbo.getString("PRODUCT_PAC_SPEC"),2L);//产品装箱规格
        itemMbo.setValue("PRODUCT_PROCESS", eamMarMbo.getString("PRODUCT_PROCESS"),2L);//产品工艺
        itemMbo.setValue("PRODUCT_STANDARD", eamMarMbo.getString("PRODUCT_STANDARD"),2L);//产品执行标准
        itemMbo.setValue("PRODUCT_STYLE", eamMarMbo.getString("PRODUCT_STYLE"),2L);//产品风格
        itemMbo.setValue("PRODUCT_SUPPLIER", eamMarMbo.getString("PRODUCT_SUPPLIER"),2L);//产品供应商
        itemMbo.setValue("PRODUCT_TOLERANCE", eamMarMbo.getString("PRODUCT_TOLERANCE"),2L);//产品公差
        itemMbo.setValue("PRODUCT_TYPE", eamMarMbo.getString("PRODUCT_TYPE"),2L);//产品类型
        itemMbo.setValue("RATED_POWER", eamMarMbo.getString("RATED_POWER"),2L);//额定功率
        itemMbo.setValue("RATED_VOLTAGE", eamMarMbo.getString("RATED_VOLTAGE"),2L);//额定电压
        itemMbo.setValue("XCHPF", eamMarMbo.getString("XCHPF"),2L);//批次管理
        itemMbo.setValue("XGCHP", eamMarMbo.getString("XGCHP"),2L);//需要批量记录

        itemMbo.getThisMboSet().save();
        itemMbo.getThisMboSet().close();
    }
}
