From a53067aa7c7234f9e80ccf2465a4b97273dac4b1 Mon Sep 17 00:00:00 2001 From: zouxk Date: Tue, 11 Aug 2020 10:25:07 +0800 Subject: [PATCH] =?UTF-8?q?8/11=20=E6=9C=80=E6=96=B0=E5=B7=B2=E5=90=88?= =?UTF-8?q?=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HEZON_ITK/HEZON_ITK.vcxproj | 6 ++ HEZON_ITK/HEZON_ITK.vcxproj.filters | 12 +++ HEZON_ITK/bs_bom_transmit_check.cpp | 23 ++--- HEZON_ITK/bs_sap.cpp | 5 +- HEZON_ITK/epm_handler_common.h | 4 + HEZON_ITK/epm_register_handler.cxx | 28 ++++++ HEZON_ITK/jd_check_99_cglx.cpp | 65 ++++++++++++++ HEZON_ITK/jd_check_ID_wllx.cpp | 88 +++++++++++++++++++ HEZON_ITK/jd_check_bom_99.cpp | 32 +++++++ HEZON_ITK/jd_check_wlms_len.cpp | 4 +- HEZON_ITK/jd_ckeck_bom_use.cpp | 55 ++++++++++++ HEZON_ITK/packages.config | 1 + .../x64/Release/HEZON_ITK.Build.CppClean.log | 14 +-- 13 files changed, 319 insertions(+), 18 deletions(-) create mode 100644 HEZON_ITK/jd_check_99_cglx.cpp create mode 100644 HEZON_ITK/jd_check_ID_wllx.cpp create mode 100644 HEZON_ITK/jd_check_bom_99.cpp create mode 100644 HEZON_ITK/jd_ckeck_bom_use.cpp 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