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