#include #include #include #include #include #include #include #include /** * @headerfile user's header files */ #include "epm_register_handler.h" #include "epm_handler_common.h" using namespace std; // Method and Workflow Handler extern DLLAPI int CUST_init_module(int *decision, va_list args) { int ifail = ITK_ok; //把目标对象下的属性(id,名称,物料分类,"新增")写入excel,放到附件中 ifail = EPM_register_action_handler("JL_Target_Moveto_Annex", "JL_Target_Moveto_Annex", (EPM_action_handler_t)JL_Target_Moveto_Annex); if (ifail) { printf("register JL_Target_Moveto_Annex failed\n"); } else { printf("register JL_Target_Moveto_Annex successfully\n"); } //当零部件发布时,若为D状态,且版本非D00版本,则向焊装排产系统数据库表写入发布的零件号、件名、版本、发布日期、发布时间等信息 ifail = EPM_register_action_handler("JL_Welding_Syetem", "JL_Welding_Syetem", (EPM_action_handler_t)JL_Welding_Syetem); if (ifail) { printf("register JL_Welding_Syetem failed\n"); } else { printf("register JL_Welding_Syetem successfully\n"); } //订单评审流程结束之后按钮‘发起bom搭建'才能够点击 ifail = EPM_register_action_handler("JL_Auto_Order_Process", "JL_Auto_Order_Process", (EPM_action_handler_t)JL_Auto_Order_Process); if (ifail) { printf("register JL_Auto_Order_Process failed\n"); } else { printf("register JL_Auto_Order_Process successfully\n"); } //添加完成下一个节点的时间到流程描述 ifail = EPM_register_action_handler("JL_Add_FinishTime", "JL_Add_FinishTime", (EPM_action_handler_t)JL_Add_FinishTime); if (ifail) { printf("register JL_Add_FinishTime failed\n"); } else { printf("register JL_Add_FinishTime successfully\n"); } //基础件变更检查 ifail = EPM_register_action_handler("JL_Change_Inspection_Of_Basic_Part", "JL_Change_Inspection_Of_Basic_Part", (EPM_action_handler_t)JL_Change_Inspection_Of_Basic_Part); if (ifail) { printf("register JL_Change_Inspection_Of_Basic_Part failed\n"); } else { printf("register JL_Change_Inspection_Of_Basic_Part successfully\n"); } //变更信息邮件通知 ifail = EPM_register_action_handler("JL_Send_Mail", "JL_Send_Mail", (EPM_action_handler_t)JL_Send_Mail); if (ifail) { printf("register JL_Send_Mail failed\n"); } else { printf("register JL_Send_Mail successfully\n"); } //上传物料BOM到SAP ifail = EPM_register_action_handler("JLCS_05_BOMSendOutSap", "JLCS_05_BOMSendOutSap", (EPM_action_handler_t)JLCS_05_BOMSendOutSap); if(ifail) { printf("register JLCS_05_BOMSendOutSap failed\n"); }else { printf("register JLCS_05_BOMSendOutSap successfully\n"); } //上传物料BOM到SAP(不需要校验仅需下发一层子件) ifail = EPM_register_action_handler("JLCS_05_BOMSendOutSap_Single", "JLCS_05_BOMSendOutSap_Single", (EPM_action_handler_t)JLCS_05_BOMSendOutSap_Single); if(ifail) { printf("register JLCS_05_BOMSendOutSap_Single failed\n"); }else { printf("register JLCS_05_BOMSendOutSap_Single successfully\n"); } //更新SAP物料主数据 ifail = EPM_register_action_handler("JLCS_05_BOMUpdateSap_MasterData", "JLCS_05_BOMUpdateSap_MasterData", (EPM_action_handler_t)JLCS_05_BOMUpdateSap_MasterData); if(ifail) { printf("register JLCS_05_BOMUpdateSap_MasterData failed\n"); }else { printf("register JLCS_05_BOMUpdateSap_MasterData successfully\n"); } //删除SAP物料主数据 ifail = EPM_register_action_handler("JLCS_05_BOMDeleteSap_MasterData", "JLCS_05_BOMDeleteSap_MasterData", (EPM_action_handler_t)JLCS_05_BOMDeleteSap_MasterData); if(ifail) { printf("register JLCS_05_BOMDeleteSap_MasterData failed\n"); }else { printf("register JLCS_05_BOMDeleteSap_MasterData successfully\n"); } //上传物料主数据到SAP ifail = EPM_register_action_handler("JLCS_05_BOMSendOutSap_MasterData", "JLCS_05_BOMSendOutSap_MasterData", (EPM_action_handler_t)JLCS_05_BOMSendOutSap_MasterData); if (ifail) { printf("register JLCS_05_BOMSendOutSap_MasterData failed\n"); } else { printf("register JLCS_05_BOMSendOutSap_MasterData successfully\n"); } //PDF插入图片 ifail = EPM_register_action_handler("JL_insert_img_pdf", "JL_insert_img_pdf", (EPM_action_handler_t)jl_insert_img_pdf); if (ifail == ITK_ok) { fprintf(stdout, "Registering action handler tm_insert_img_pdf completed!\n"); } else { fprintf(stdout, "Registering action handler tm_insert_img_pdf failed %d!\n", ifail); } //订单移至历史订单 ifail = EPM_register_action_handler("JL_insert_modular", "JL_insert_modular", (EPM_action_handler_t)jl_insert_modular); if (ifail == ITK_ok) { fprintf(stdout, "Registering action handler JL_insert_modular completed!\n"); } else { fprintf(stdout, "Registering action handler JL_insert_modular failed %d!\n", ifail); } //DMU验证完成 ifail = EPM_register_action_handler("jl_dmu_auto", "jl_dmu_auto", (EPM_action_handler_t)jl_dmu_auto); if (ifail == ITK_ok) { fprintf(stdout, "Registering action handler jl_dmu_auto completed!\n"); } else { fprintf(stdout, "Registering action handler jl_dmu_auto failed %d!\n", ifail); } //变更单移到零件的指定关系文件夹下 ifail = EPM_register_action_handler("jl_locomotion_item", "jl_locomotion_item", (EPM_action_handler_t)jl_locomotion_item); if (ifail == ITK_ok) { fprintf(stdout, "Registering action handler jl_locomotion_item completed!\n"); } else { fprintf(stdout, "Registering action handler jl_locomotion_item failed %d!\n", ifail); } //通知节点属性签名 ifail = EPM_register_action_handler("JL_sign_tongzhi", "JL_sign_tongzhi", (EPM_action_handler_t)JL_sign_tongzhi); if (ifail == ITK_ok) { fprintf(stdout, "Registering action handler JL_sign_tongzhi completed!\n"); } else { fprintf(stdout, "Registering action handler JL_sign_tongzhi failed %d!\n", ifail); } //各节点属性签名 ifail = EPM_register_action_handler("JL_sign_master", "JL_sign_master", (EPM_action_handler_t)JL_sign_master); if (ifail == ITK_ok) { fprintf(stdout, "Registering action handler JL_sign_master completed!\n"); } else { fprintf(stdout, "Registering action handler JL_sign_master failed %d!\n", ifail); } //判断对象版本号是否包含参数中配置的版本号 ifail = EPM_register_action_handler("JL_Judge_Revision", "JL_Judge_Revision", (EPM_action_handler_t)JL_Judge_Revision); if (ifail == ITK_ok) { fprintf(stdout, "Registering action handler JL_Judge_Revision completed!\n"); } else { fprintf(stdout, "Registering action handler JL_Judge_Revision failed %d!\n", ifail); } //将引用下的文件移到目标中 ifail = EPM_register_action_handler("JL_add_to_referenece", "JL_add_to_referenece", (EPM_action_handler_t)JL_add_to_referenece); if (ifail == ITK_ok) { fprintf(stdout, "Registering action handler JL_add_to_referenece completed!\n"); } else { fprintf(stdout, "Registering action handler JL_add_to_referenece failed %d!\n", ifail); } //发起SAP主数据维护流程 ifail = EPM_register_action_handler("JL_create_process", "JL_create_process", (EPM_action_handler_t)JL_create_process); if (ifail == ITK_ok) { fprintf(stdout, "Registering action handler JL_create_process completed!\n"); } else { fprintf(stdout, "Registering action handler JL_create_process failed %d!\n", ifail); } //测试 ifail = EPM_register_action_handler("test", "test", (EPM_action_handler_t)test); if (ifail == ITK_ok) { fprintf(stdout, "Registering action handler test completed!\n"); } else { fprintf(stdout, "Registering action handler test failed %d!\n", ifail); } return ifail; } // ////register service method extern DLLAPI int USERSERVICE_custom_register_methods() { int status = ITK_ok, numberOfArguments = 0, returnValueType = USERARG_STRING_TYPE, *argumentList = NULL; USER_function_t functionPtr; //METHOD_id_t mth_tag; ////METHOD_find_method("Gd6_PartsRevisionMaster",TC_import_msg,&mth_tag); // //vector typeVec; //typeVec.push_back("gd6_sjzl"); //typeVec.push_back("gd6_mz"); //typeVec.push_back("gd6_wlfl"); //typeVec.push_back("gd6_dw"); //typeVec.push_back("gd6_jcjwlh"); //typeVec.push_back("gd6_sfqdj"); //typeVec.push_back("gd6_gyzy"); //for (int i = 0; i < typeVec.size(); i++) { // METHOD_find_prop_method("Gd6_PartsRevisionMaster", typeVec[i].c_str(), PROP_set_value_string_msg, &mth_tag); // if ( mth_tag.id != NULLTAG ) // { // printf("update superBOM start \n "); // ITKCALL(status = METHOD_add_action2( mth_tag, METHOD_post_action_type,( METHOD_function_t ) JL_form_save, NULL ,true) ); // if(status == ITK_ok){ // printf("success superBOM \n "); // }else{ // printf("faild superBOM \n "); // } // }else{ // printf("not find Gd6_PartsRevisionMaster \n "); // } //} //QTM_ebom_to_pbom //规定java需要传递过来的个数 numberOfArguments = 1; //需要调用的函数地址函数地址 functionPtr = Connor_set_bypass; //定义java需要传递的参数 argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int)); argumentList[0] = USERARG_STRING_TYPE; //argumentList[1] = USERARG_DATE_TYPE; //argumentList[2] = USERARG_STRING_TYPE +USERARG_ARRAY_TYPE; //argumentList[1] = USERARG_STRING_TYPE + USERARG_ARRAY_TYPE; //returnValueType = USERARG_STRING_TYPE; //定义返回值的类型 returnValueType = USERARG_VOID_TYPE; status = USERSERVICE_register_method("Connor_set_bypass", functionPtr, numberOfArguments, argumentList, returnValueType); MEM_free(argumentList); if (status == ITK_ok) { fprintf(stdout, "\n Registering Connor_set_bypass finished\n"); } else { fprintf(stdout, "\n Registering Connor_set_bypass failed %d\n", status); } //=========================================== numberOfArguments = 1; functionPtr = ORIGIN_close_bypass; argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int)); argumentList[0] = USERARG_STRING_TYPE; //argumentList[1] = USERARG_STRING_TYPE + USERARG_ARRAY_TYPE; //returnValueType = USERARG_STRING_TYPE; returnValueType = USERARG_VOID_TYPE; status = USERSERVICE_register_method("ORIGIN_close_bypass", functionPtr, numberOfArguments, argumentList, returnValueType); MEM_free(argumentList); if (status == ITK_ok) { fprintf(stdout, "\n Registering ORIGIN_close_bypass finished\n"); } else { fprintf(stdout, "\n Registering ORIGIN_close_bypass failed %d\n", status); } //=========================================== //规定java需要传递过来的个数 numberOfArguments = 3; //需要调用的函数地址函数地址 functionPtr = DMU_Review_Process; //定义java需要传递的参数 argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int)); argumentList[0] = USERARG_TAG_TYPE; argumentList[1] = USERARG_STRING_TYPE; argumentList[2] = USERARG_STRING_TYPE; //argumentList[1] = USERARG_TAG_TYPE; //argumentList[1] = USERARG_DATE_TYPE; //argumentList[2] = USERARG_STRING_TYPE +USERARG_ARRAY_TYPE; //argumentList[1] = USERARG_STRING_TYPE + USERARG_ARRAY_TYPE; //returnValueType = USERARG_STRING_TYPE; //定义返回值的类型 returnValueType = USERARG_VOID_TYPE; //ITKCALL(); status = USERSERVICE_register_method("DMU_Review_Process", functionPtr, numberOfArguments, argumentList, returnValueType); MEM_free(argumentList); if (status == ITK_ok) { fprintf(stdout, "\n Registering DMU_Review_Process finished\n"); } else { fprintf(stdout, "\n Registering DMU_Review_Process failed %d\n", status); } //=========================================== //规定java需要传递过来的个数 numberOfArguments = 3; //需要调用的函数地址函数地址 functionPtr = Send_Order_Process; //定义java需要传递的参数 argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int)); argumentList[0] = USERARG_TAG_TYPE; argumentList[1] = USERARG_STRING_TYPE; argumentList[2] = USERARG_STRING_TYPE; //argumentList[1] = USERARG_TAG_TYPE; //argumentList[1] = USERARG_DATE_TYPE; //argumentList[2] = USERARG_STRING_TYPE +USERARG_ARRAY_TYPE; //argumentList[1] = USERARG_STRING_TYPE + USERARG_ARRAY_TYPE; //returnValueType = USERARG_STRING_TYPE; //定义返回值的类型 returnValueType = USERARG_VOID_TYPE; //ITKCALL(); status = USERSERVICE_register_method("Send_Order_Process", functionPtr, numberOfArguments, argumentList, returnValueType); MEM_free(argumentList); if (status == ITK_ok) { fprintf(stdout, "\n Registering Send_Order_Process finished\n"); } else { fprintf(stdout, "\n Registering Send_Order_Process failed %d\n", status); } //=========================================== //规定java需要传递过来的个数 numberOfArguments = 3; //需要调用的函数地址函数地址 functionPtr = Create_Remodel_Process; //定义java需要传递的参数 argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int)); argumentList[0] = USERARG_TAG_TYPE; argumentList[1] = USERARG_STRING_TYPE; argumentList[2] = USERARG_STRING_TYPE; //argumentList[1] = USERARG_TAG_TYPE; //argumentList[1] = USERARG_DATE_TYPE; //argumentList[2] = USERARG_STRING_TYPE +USERARG_ARRAY_TYPE; //argumentList[1] = USERARG_STRING_TYPE + USERARG_ARRAY_TYPE; //returnValueType = USERARG_STRING_TYPE; //定义返回值的类型 returnValueType = USERARG_VOID_TYPE; //ITKCALL(); status = USERSERVICE_register_method("Create_Remodel_Process", functionPtr, numberOfArguments, argumentList, returnValueType); MEM_free(argumentList); if (status == ITK_ok) { fprintf(stdout, "\n Registering Create_Remodel_Process finished\n"); } else { fprintf(stdout, "\n Registering Create_Remodel_Process failed %d\n", status); } //=========================================== //规定java需要传递过来的个数 numberOfArguments = 1; //需要调用的函数地址函数地址 functionPtr = Super_Bom_Appent_Data; //定义java需要传递的参数 argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int)); argumentList[0] = USERARG_TAG_TYPE; //argumentList[1] = USERARG_TAG_TYPE; //argumentList[1] = USERARG_DATE_TYPE; //argumentList[2] = USERARG_STRING_TYPE +USERARG_ARRAY_TYPE; //argumentList[1] = USERARG_STRING_TYPE + USERARG_ARRAY_TYPE; //returnValueType = USERARG_STRING_TYPE; //定义返回值的类型 returnValueType = USERARG_VOID_TYPE; //ITKCALL(); status = USERSERVICE_register_method("Super_Bom_Appent_Data", functionPtr, numberOfArguments, argumentList, returnValueType); MEM_free(argumentList); if (status == ITK_ok) { fprintf(stdout, "\n Registering Super_Bom_Appent_Data finished\n"); } else { fprintf(stdout, "\n Registering Super_Bom_Appent_Data failed %d\n", status); } //=========================================== return(status); }