|
|
|
|
|
#include <server_exits/user_server_exits.h>
|
|
|
#include <epm/epm.h>
|
|
|
|
|
|
|
|
|
#include <time.h>
|
|
|
#include <bom/bom_msg.h>
|
|
|
#include <tccore/item_msg.h>
|
|
|
#include <tccore\iman_msg.h>
|
|
|
#include <vector>
|
|
|
#include <string.h>
|
|
|
/**
|
|
|
* @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<string> 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);
|
|
|
}
|
|
|
|