From f145efb846269318888fb2d0815c2155a4005a6b Mon Sep 17 00:00:00 2001 From: zouxk Date: Wed, 15 Jul 2020 17:33:16 +0800 Subject: [PATCH] =?UTF-8?q?bom=E4=BC=A0=E9=80=92=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HEZON_ITK/HEZON_ITK.vcxproj | 1 + HEZON_ITK/HEZON_ITK.vcxproj.filters | 3 + HEZON_ITK/bs_bom_transmit_check.cpp | 85 +++++++++++++++++++ HEZON_ITK/epm_handler_common.h | 1 + HEZON_ITK/epm_register_handler.cxx | 11 ++- HEZON_ITK/jd_check_wlms_len.cpp | 2 +- .../x64/Release/HEZON_ITK.Build.CppClean.log | 2 + 7 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 HEZON_ITK/bs_bom_transmit_check.cpp diff --git a/HEZON_ITK/HEZON_ITK.vcxproj b/HEZON_ITK/HEZON_ITK.vcxproj index a711b74..1e79a54 100644 --- a/HEZON_ITK/HEZON_ITK.vcxproj +++ b/HEZON_ITK/HEZON_ITK.vcxproj @@ -154,6 +154,7 @@ + diff --git a/HEZON_ITK/HEZON_ITK.vcxproj.filters b/HEZON_ITK/HEZON_ITK.vcxproj.filters index ea59700..ccf91d9 100644 --- a/HEZON_ITK/HEZON_ITK.vcxproj.filters +++ b/HEZON_ITK/HEZON_ITK.vcxproj.filters @@ -98,6 +98,9 @@ epm-handler + + epm-handler + diff --git a/HEZON_ITK/bs_bom_transmit_check.cpp b/HEZON_ITK/bs_bom_transmit_check.cpp new file mode 100644 index 0000000..d0cbb94 --- /dev/null +++ b/HEZON_ITK/bs_bom_transmit_check.cpp @@ -0,0 +1,85 @@ +#include "util.h" + +int bs_bom_transmit_check(EPM_rule_message_t msg) +{ + POM_AM__set_application_bypass(true); + tag_t root_task, *attachments; + int att_cnt; + + //»ñµÃ²ÎÊýÁбí + TC_argument_list_t * arguments = msg.arguments; + //»ñÈ¡²ÎÊýÊýÄ¿ + int arg_cnt = TC_number_of_arguments(arguments); + map arg_map; + //±éÀú²ÎÊýÁбí + for (auto i = 0; i < arg_cnt; i++) + { + char *temp_key, *temp_val; + ITK_ask_argument_named_value(TC_next_argument(arguments), &temp_key, &temp_val); + //²ÎÊýÒÔ¼üÖµ¶ÔµÄÐÎʽ´«µÝµ½arg_map + if (temp_val) + arg_map[temp_key] = temp_val; + + } + + //»ñµÃ¸ù½Úµã + EPM_ask_root_task(msg.task, &root_task); + //»ñµÃ¸ùÈÎÎñϵÄ×é¼þ + EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &attachments); + //ÅжϲÎÊýÊÇ·ñ·ûºÏÒªÇó + for (int i = 0; i < att_cnt; i++) + { + if (isTypeOf(attachments[i], "ItemRevision")) + { + int form_att; + tag_t *forms; + AOM_ask_value_tags(attachments[i], "IMAN_master_form_rev", &form_att, &forms); + + //±éÀú²ÎÊý + for (auto j = arg_map.begin(); j != arg_map.end(); j++) + { + //ÉèÖÃÊôÐÔ + ITKCALL(AOM_set_value_string(forms[0], j->first.c_str(), j->second.c_str())); + } + //±£´æ + AOM_save(forms[0]); + + //Äõ½Ö¸¶¨²ÎÊýÅжϲÎÊýÖµ + if (form_att == 0) + { + continue; + } + char *cglx, *tscg; + AOM_ask_value_string(forms[0], "jd2_cglx", &cglx); + AOM_ask_value_string(forms[0], "jd2_tscg", &tscg); + cout << "jd2_cglx" << cglx << endl; + cout << "jd2_tscg" << tscg << endl; + if (strcmp(cglx, "E+") == 0 || strcmp(cglx, "E+50") == 0 || strcmp(tscg, "E+") == 0 || strcmp(tscg, "E+50") == 0) + { + //ÅжÏÊÇ·ñÓÐ BOM °æ±¾ÊÓͼ structure_revisions Èç¹û´æÔÚÔò¿ÉÒÔ·¢ÆðÁ÷³Ì + int structure_att; + tag_t *structures; + AOM_ask_value_tags(attachments[i], "structure_revisions", &structure_att, &structures); + if (structures == NULL) + { + POM_AM__set_application_bypass(false); + return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "no BOM"); + } + else + { + return EPM_go; + } + + } + else + { + POM_AM__set_application_bypass(false); + return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "This material cannot initiate a process"); + } + } + POM_AM__set_application_bypass(false); + return EPM_go; + } + + +} \ No newline at end of file diff --git a/HEZON_ITK/epm_handler_common.h b/HEZON_ITK/epm_handler_common.h index 24063c2..e8bf8fd 100644 --- a/HEZON_ITK/epm_handler_common.h +++ b/HEZON_ITK/epm_handler_common.h @@ -53,6 +53,7 @@ extern "C" { int jd_send_mail(EPM_action_message_t msg); int jd_get_target(EPM_action_message_t msg); int jd_check_wlms_len(EPM_rule_message_t msg); + int bs_bom_transmit_check(EPM_rule_message_t msg); ////��������Ϣǩ��汾������ȥ //int qtmc_sign_ir(EPM_action_message_t msg); diff --git a/HEZON_ITK/epm_register_handler.cxx b/HEZON_ITK/epm_register_handler.cxx index 410c0cb..7b39db5 100644 --- a/HEZON_ITK/epm_register_handler.cxx +++ b/HEZON_ITK/epm_register_handler.cxx @@ -165,7 +165,16 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) { printf("register jd_check_wlms_len failed\n"); } else { printf("register jd_check_wlms_len successfully\n"); - } //if(ifail == ITK_ok) + } + ifail = EPM_register_rule_handler("bs_bom_transmit_check", "bs_bom_transmit_check", + (EPM_rule_handler_t)bs_bom_transmit_check); + if (ifail) { + printf("register bs_bom_transmit_check failed\n"); + } else { + printf("register bs_bom_transmit_check successfully\n"); + + } + //if(ifail == ITK_ok) //{ // fprintf(stdout,"Registering action handler qtmc-sign-ir completed!\n"); //} diff --git a/HEZON_ITK/jd_check_wlms_len.cpp b/HEZON_ITK/jd_check_wlms_len.cpp index 5aff677..4dc7acc 100644 --- a/HEZON_ITK/jd_check_wlms_len.cpp +++ b/HEZON_ITK/jd_check_wlms_len.cpp @@ -23,7 +23,7 @@ int jd_check_wlms_len(EPM_rule_message_t msg) { if (wlms[i] < 128 && wlms[i]>0) { length++; } else { - i += 2; + i += 1; length++; } } diff --git a/HEZON_ITK/x64/Release/HEZON_ITK.Build.CppClean.log b/HEZON_ITK/x64/Release/HEZON_ITK.Build.CppClean.log index 10f955a..5940958 100644 --- a/HEZON_ITK/x64/Release/HEZON_ITK.Build.CppClean.log +++ b/HEZON_ITK/x64/Release/HEZON_ITK.Build.CppClean.log @@ -20,12 +20,14 @@ e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_bypass.obj e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_bom_save_check.obj e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_bom_check.obj e:\work\vs_workspace\jditk\hezon_itk\x64\release\util.obj +e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_check_wlms_len.obj e:\work\vs_workspace\jditk\hezon_itk\x64\release\.netframework,version=v4.0.assemblyattributes.obj e:\work\vs_workspace\jditk\hezon_itk\x64\release\.netframework,version=v4.0.assemblyattributes.asm e:\work\vs_workspace\jditk\x64\release\bs.dll e:\work\vs_workspace\jditk\x64\release\hezon_itk.pdb e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\metagen.write.1.tlog e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.vcxprojresolveassemblyreference.cache +e:\work\vs_workspace\jditk\hezon_itk\x64\release\vc140.pdb~9cec5b3be0639e60437e0ba1a3035139d8301c0a e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\cl.command.1.tlog e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\cl.read.1.tlog e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\cl.write.1.tlog