diff --git a/HEZON_ITK/HEZON_ITK.vcxproj b/HEZON_ITK/HEZON_ITK.vcxproj
index 1e79a54..bae9ec3 100644
--- a/HEZON_ITK/HEZON_ITK.vcxproj
+++ b/HEZON_ITK/HEZON_ITK.vcxproj
@@ -163,6 +163,9 @@
+
+
+
@@ -175,6 +178,7 @@
+
@@ -189,6 +193,7 @@
+
@@ -196,5 +201,6 @@
+
\ No newline at end of file
diff --git a/HEZON_ITK/HEZON_ITK.vcxproj.filters b/HEZON_ITK/HEZON_ITK.vcxproj.filters
index ccf91d9..5a4dab7 100644
--- a/HEZON_ITK/HEZON_ITK.vcxproj.filters
+++ b/HEZON_ITK/HEZON_ITK.vcxproj.filters
@@ -101,6 +101,18 @@
epm-handler
+
+ epm-handler
+
+
+ epm-handler
+
+
+ epm-handler
+
+
+ epm-handler
+
diff --git a/HEZON_ITK/bs_bom_transmit_check.cpp b/HEZON_ITK/bs_bom_transmit_check.cpp
index d0cbb94..27e3d78 100644
--- a/HEZON_ITK/bs_bom_transmit_check.cpp
+++ b/HEZON_ITK/bs_bom_transmit_check.cpp
@@ -27,10 +27,13 @@ int bs_bom_transmit_check(EPM_rule_message_t msg)
//»ñµÃ¸ùÈÎÎñϵÄ×é¼þ
EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &attachments);
//ÅжϲÎÊýÊÇ·ñ·ûºÏÒªÇó
+ int taskNum = 0, BOMNum = 0;
for (int i = 0; i < att_cnt; i++)
{
if (isTypeOf(attachments[i], "ItemRevision"))
{
+ taskNum = taskNum + 1;
+
int form_att;
tag_t *forms;
AOM_ask_value_tags(attachments[i], "IMAN_master_form_rev", &form_att, &forms);
@@ -54,22 +57,16 @@ int bs_bom_transmit_check(EPM_rule_message_t msg)
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)
+ if (((strcmp(cglx, "E") == 0) && (strcmp(tscg, "") == 0)) || ((strcmp(cglx, "E") == 0) && (strcmp(tscg, "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
+ if (structures != NULL)
{
- return EPM_go;
+ BOMNum = BOMNum + 1;
}
-
}
else
{
@@ -77,9 +74,15 @@ int bs_bom_transmit_check(EPM_rule_message_t msg)
return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "This material cannot initiate a process");
}
}
+
+ }
+ if (taskNum == BOMNum) {
POM_AM__set_application_bypass(false);
return EPM_go;
}
-
+ else {
+ POM_AM__set_application_bypass(false);
+ return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "¸ÃÎïÁÏÀàÐÍÐèÒª°üº¬BOMÊÓͼ");
+ }
}
\ No newline at end of file
diff --git a/HEZON_ITK/bs_sap.cpp b/HEZON_ITK/bs_sap.cpp
index b66e9eb..28d9105 100644
--- a/HEZON_ITK/bs_sap.cpp
+++ b/HEZON_ITK/bs_sap.cpp
@@ -196,7 +196,10 @@ void get_bom(System::Collections::Generic::List
+#include
+
+
+void checkCGLX(tag_t bomline, bool *flag) {
+ int child_cnt;
+ tag_t *childrens;
+ ITKCALL(BOM_line_ask_child_lines(bomline, &child_cnt, &childrens));
+ if (child_cnt == 0) {
+ return;
+ }
+ for (int i = 0;i < child_cnt;i++) {
+ char *cglx, *item_id, *rev_id;
+ tag_t rev, *form;
+ int form_cnt;
+ AOM_ask_value_string(childrens[i], "bl_item_item_id", &item_id);
+ AOM_ask_value_string(childrens[i], "bl_rev_item_revision_id",
+ &rev_id);
+ ITEM_find_rev(item_id, rev_id, &rev);
+ AOM_ask_value_tags(rev, "IMAN_master_form_rev", &form_cnt, &form);
+ AOM_ask_value_string(form[0], "jd2_cglx", &cglx);
+ cout << "check item_id:" << item_id << endl;
+ cout << "cglx:" << cglx << endl;
+ *flag = *flag&&tc_strlen(cglx) > 0;
+ if (!*flag) {
+ return;
+ }
+ checkCGLX(childrens[i], flag);
+ }
+}
+
+int jd_check_99_cglx(EPM_rule_message_t msg) {
+ int att_cnt;
+ tag_t root_task, *attachments;
+ 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++) {
+ char *item_id;
+ AOM_ask_value_string(attachments[i], "item_id", &item_id);
+ cout << "item_id:" << item_id << endl;
+ if (!isTypeOf(attachments[i], "ItemRevision") || !boost::starts_with(item_id, "99")) {
+ continue;
+ }
+ tag_t window, top_line, item, *childrens;
+ int child_cnt;
+ ITKCALL(ITEM_ask_item_of_rev(attachments[i], &item));
+ ITKCALL(BOM_create_window(&window));
+ ITKCALL(BOM_set_window_top_line(window, item, attachments[i], NULLTAG, &top_line));
+ ITKCALL(BOM_line_ask_child_lines(top_line, &child_cnt, &childrens));
+ if (child_cnt == 0) {
+ continue;
+ }
+ bool flag = true;
+ checkCGLX(top_line, &flag);
+ ITKCALL(BOM_close_window(window));
+ cout << "flag:" << boolalpha << flag << endl;
+ if (!flag) {
+ return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "°üº¬Î´Ìîд²É¹ºÀàÐ͵ÄÎïÁÏ£¬Çë¼ì²é");
+ }
+ }
+ return EPM_go;
+
+}
\ No newline at end of file
diff --git a/HEZON_ITK/jd_check_ID_wllx.cpp b/HEZON_ITK/jd_check_ID_wllx.cpp
new file mode 100644
index 0000000..92789c0
--- /dev/null
+++ b/HEZON_ITK/jd_check_ID_wllx.cpp
@@ -0,0 +1,88 @@
+#include "util.h"
+
+int jd_check_ID_wllx(EPM_rule_message_t msg) {
+ POM_AM__set_application_bypass(true);
+ tag_t root_task, *attachments;
+ int att_cnt;
+ //»ñµÃ¸ù½Úµã
+ EPM_ask_root_task(msg.task, &root_task);
+ //»ñµÃ¸ùÈÎÎñϵÄ×é¼þ
+ EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &attachments);
+ //ÅжϲÎÊýÊÇ·ñ·ûºÏÒªÇó
+ bool isTransit = true;
+ std::string names = "ID:{";
+ 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);
+
+ char *item_id;
+ //»ñÈ¡µ±Ç°¶ÔÏóµÄ object_string
+ AOM_ask_value_string(attachments[i], "item_id", &item_id);
+ //ת»»½ØÈ¡ºóÅжÏÊÇ·ñÒÔʲô¿ªÍ· ÊÇÔò²»ÄÜ·¢ÆðÁ÷³Ì
+ std::string taskName = item_id;
+ string str = taskName.substr(0, 1);
+ const char *p = str.c_str();
+ char *wllx;
+ AOM_ask_value_string(forms[0], "jd2_wllx", &wllx);
+ if ((strcmp(p, "1") == 0) || (strcmp(p, "2") == 0)) {
+ if (strcmp(wllx, "ZR01") != 0) {
+ isTransit = false;
+ names.append(taskName).append(";");
+ }
+ } else if (strcmp(p, "3") == 0) {
+ if (strcmp(wllx, "ZH01") != 0) {
+ isTransit = false;
+ names.append(taskName).append(";");
+ }
+ } else if (strcmp(p, "4") == 0) {
+ char *lxs[8] = { "ZF01" ,"ZF02" ,"ZF03" ,"ZF04" ,"ZF05" ,"ZF06" ,"ZF07" };
+ char **lx = lxs;
+ bool isTrue = false;
+ for (int i = 0; lx && lx[i]; i++) {
+ if (strcmp(wllx, lx[i]) == 0) {
+ isTrue = true;
+ break;
+ }
+ }
+ if (!isTrue) {
+ isTransit = false;
+ names.append(taskName).append(";");
+ }
+ } else if (strcmp(p, "Y") == 0) {
+ if (strcmp(wllx, "ZY01") != 0) {
+ isTransit = false;
+ names.append(taskName).append(";");
+ }
+ } else if (strcmp(p, "9") == 0) {
+ str = taskName.substr(0, 2);
+ p = str.c_str();
+ if (strcmp(p, "99") == 0) {
+ if (strcmp(wllx, "ZZ01") != 0) {
+ isTransit = false;
+ names.append(taskName).append(";");
+ }
+ } else if (strcmp(p, "98") == 0) {
+ if (strcmp(wllx, "ZC01") != 0) {
+ isTransit = false;
+ names.append(taskName).append(";");
+ }
+ }
+ }
+ }
+ }
+
+ names.append("}");
+ if (!isTransit) {
+ std::string massage = "ÓëÎïÁÏÀàÐͲ»Ò»ÖÂ";
+ names.append(massage);
+ const char *p = names.c_str();
+ cout << "Exception:" << p << endl;
+ POM_AM__set_application_bypass(false);
+ return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, p);
+ }
+
+ POM_AM__set_application_bypass(false);
+ return EPM_go;
+}
\ No newline at end of file
diff --git a/HEZON_ITK/jd_check_bom_99.cpp b/HEZON_ITK/jd_check_bom_99.cpp
new file mode 100644
index 0000000..feaf2fc
--- /dev/null
+++ b/HEZON_ITK/jd_check_bom_99.cpp
@@ -0,0 +1,32 @@
+#include "util.h"
+
+int jd_check_bom_99(EPM_rule_message_t msg) {
+ POM_AM__set_application_bypass(true);
+ tag_t root_task, *attachments;
+ int att_cnt;
+ //»ñµÃ¸ù½Úµã
+ 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")) {
+ char *object_string;
+ //»ñÈ¡µ±Ç°¶ÔÏóµÄ object_string
+ AOM_ask_value_string(attachments[i], "object_string", &object_string);
+ //ת»»½ØÈ¡ºóÅжÏÊÇ·ñÒÔ 99 ¿ªÍ· ÊÇÔò²»ÄÜ·¢ÆðÁ÷³Ì
+ string taskName = object_string;
+ string str = taskName.substr(0, 2);
+ const char *p = str.c_str();
+ if (strcmp(p, "99") == 0) {
+ cout << "Exception:" << "É¢¼þÓëÕû»úÇë·Ö¿ª·¢Á÷³Ì" << endl;
+ POM_AM__set_application_bypass(false);
+ return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "É¢¼þÓëÕû»úÇë·Ö¿ª·¢Á÷³Ì");
+ }
+ }
+ }
+
+ POM_AM__set_application_bypass(false);
+ return EPM_go;
+
+}
\ No newline at end of file
diff --git a/HEZON_ITK/jd_check_wlms_len.cpp b/HEZON_ITK/jd_check_wlms_len.cpp
index 4dc7acc..e00a76e 100644
--- a/HEZON_ITK/jd_check_wlms_len.cpp
+++ b/HEZON_ITK/jd_check_wlms_len.cpp
@@ -17,7 +17,7 @@ int jd_check_wlms_len(EPM_rule_message_t msg) {
}
char *wlms;
AOM_ask_value_string(forms[0], "jd2_wlms", &wlms);
- cout << "jd2_wlms" << wlms << endl;
+ cout << "jd2_wlms:" << wlms << endl;
int length = 0;
for (int i = 0; wlms[i] != 0; i++) {
if (wlms[i] < 128 && wlms[i]>0) {
@@ -36,4 +36,4 @@ int jd_check_wlms_len(EPM_rule_message_t msg) {
POM_AM__set_application_bypass(false);
return EPM_go;
}
-}
+}
\ No newline at end of file
diff --git a/HEZON_ITK/jd_ckeck_bom_use.cpp b/HEZON_ITK/jd_ckeck_bom_use.cpp
new file mode 100644
index 0000000..1919ddf
--- /dev/null
+++ b/HEZON_ITK/jd_ckeck_bom_use.cpp
@@ -0,0 +1,55 @@
+#include "util.h"
+
+int jd_check_bom_use(EPM_rule_message_t msg) {
+
+ POM_AM__set_application_bypass(true);
+ tag_t root_task, *attachments;
+ int att_cnt;
+ //»ñµÃ¸ù½Úµã
+ EPM_ask_root_task(msg.task, &root_task);
+ //»ñµÃ¸ùÈÎÎñϵÄ×é¼þ
+ EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &attachments);
+ //ÅжϲÎÊýÊÇ·ñ·ûºÏÒªÇó
+ char *object_string;
+ std::string names = "";
+ int BOMytNum = 0;
+ 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);
+ //Äõ½Ö¸¶¨²ÎÊýÅжϲÎÊýÖµ
+ if (form_att == 0) {
+ continue;
+ }
+ //Åжϰ汾±íµ¥ÊôÐÔ jd2_BOMyt ÊÇ·ñΪ¿Õ
+ char *BOMyt;
+ AOM_ask_value_string(forms[0], "jd2_BOMyt", &BOMyt);
+ if ((strcmp(BOMyt, "") != 0) && BOMyt != NULL) {
+ continue;
+ }
+ else {
+ //Èç¹û´æÔÚ BOMÓÃ;ûÌîдµÄ,´òÒ»¸ö±ê¼Ç,²¢¼Ç¼ËùÓÐûÓÐÌîдµÄ¶ÔÏó
+ BOMytNum = -1;
+ AOM_ask_value_string(attachments[i], "object_string", &object_string);
+ names.append(object_string);
+ names.append(";");
+ }
+ }
+ }
+
+ if (BOMytNum == -1) {
+ std::string massage = "BOMÓÃ;δÌîд,²»ÓèÐí·¢ÆðÁ÷³Ì";
+ names.append(massage);
+ const char *p = names.c_str();
+ cout << "Exception:" << p << endl;
+ POM_AM__set_application_bypass(false);
+ return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, p);
+ }
+
+
+ POM_AM__set_application_bypass(false);
+ return EPM_go;
+
+}
\ No newline at end of file
diff --git a/HEZON_ITK/packages.config b/HEZON_ITK/packages.config
index cff6b06..50f91ea 100644
--- a/HEZON_ITK/packages.config
+++ b/HEZON_ITK/packages.config
@@ -1,5 +1,6 @@

+
\ No newline at end of file
diff --git a/HEZON_ITK/x64/Release/HEZON_ITK.Build.CppClean.log b/HEZON_ITK/x64/Release/HEZON_ITK.Build.CppClean.log
index 5940958..832e6a7 100644
--- a/HEZON_ITK/x64/Release/HEZON_ITK.Build.CppClean.log
+++ b/HEZON_ITK/x64/Release/HEZON_ITK.Build.CppClean.log
@@ -1,14 +1,13 @@
e:\work\vs_workspace\jditk\hezon_itk\x64\release\vc140.pdb
-e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_signoff.obj
-e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_schedule_joint.obj
-e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_clear_field.obj
-e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_check_99_bomyt.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_batch_process.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_add_attachments.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_custom_main.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\epm_register_handler.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_send_mail.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_get_target.obj
+e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_ckeck_bom_use.obj
+e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_check_bom_99.obj
+e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_check_99_cglx.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\csendmail.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_wl_check.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_test_release_check.obj
@@ -17,17 +16,22 @@ e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_signoff.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_sap.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_file_transfer.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_bypass.obj
+e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_bom_transmit_check.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\jd_check_id_wllx.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\jd_signoff.obj
+e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_schedule_joint.obj
+e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_clear_field.obj
+e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_check_99_bomyt.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