8/11 最新已合并

main
zouxk 5 years ago
parent f145efb846
commit a53067aa7c

@ -163,6 +163,9 @@
<ClCompile Include="bs_test_release_check.cpp" />
<ClCompile Include="bs_wl_check.cpp" />
<ClCompile Include="CSendMail.cpp" />
<ClCompile Include="jd_check_99_cglx.cpp" />
<ClCompile Include="jd_check_bom_99.cpp" />
<ClCompile Include="jd_ckeck_bom_use.cpp" />
<ClCompile Include="jd_get_target.cpp" />
<ClCompile Include="jd_send_mail.cpp" />
<ClCompile Include="epm_register_handler.cxx" />
@ -175,6 +178,7 @@
<ClCompile Include="jd_signoff.cpp" />
<ClCompile Include="jd_check_wlms_len.cpp" />
<ClCompile Include="util.cpp" />
<ClCompile Include="jd_check_ID_wllx.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="CSendMail.h" />
@ -189,6 +193,7 @@
<ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\teamcenter.12.0.0\build\teamcenter.targets" Condition="Exists('..\packages\teamcenter.12.0.0\build\teamcenter.targets')" />
<Import Project="..\packages\javasdk.8.0.0\build\javasdk.targets" Condition="Exists('..\packages\javasdk.8.0.0\build\javasdk.targets')" />
<Import Project="..\packages\boost.1.72.0.0\build\boost.targets" Condition="Exists('..\packages\boost.1.72.0.0\build\boost.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
@ -196,5 +201,6 @@
</PropertyGroup>
<Error Condition="!Exists('..\packages\teamcenter.12.0.0\build\teamcenter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\teamcenter.12.0.0\build\teamcenter.targets'))" />
<Error Condition="!Exists('..\packages\javasdk.8.0.0\build\javasdk.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\javasdk.8.0.0\build\javasdk.targets'))" />
<Error Condition="!Exists('..\packages\boost.1.72.0.0\build\boost.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\boost.1.72.0.0\build\boost.targets'))" />
</Target>
</Project>

@ -101,6 +101,18 @@
<ClCompile Include="bs_bom_transmit_check.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_ckeck_bom_use.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_check_bom_99.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_check_ID_wllx.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_check_99_cglx.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="epm_register_handler.h">

@ -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视图");
}
}

@ -196,7 +196,10 @@ void get_bom(System::Collections::Generic::List<System::Collections::Generic::Di
AOM_UIF_ask_value(lines[j], "bl_child_id", &child_id);
dic["IDNRK"] = convert_to_cstring(child_id);
// AOM_UIF_ask_value(lines[j], "bl_quantity", &val);
AOM_UIF_ask_value(lines[j], "JD2_XNJ", &val);
if (tc_strlen(val)) {
dic["SPPROCTYPE"] = convert_to_cstring(val);
}
AOM_UIF_ask_value(lines[j], "bl_uom", &val);
dic["MEINS"] = convert_to_cstring(val);

@ -54,6 +54,10 @@ extern "C" {
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 jd_check_bom_use(EPM_rule_message_t msg);
int jd_check_bom_99(EPM_rule_message_t msg);
int jd_check_ID_wllx(EPM_rule_message_t msg);
int jd_check_99_cglx(EPM_rule_message_t msg);
////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣǩ<CFA2><C7A9><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ
//int qtmc_sign_ir(EPM_action_message_t msg);

@ -174,6 +174,34 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
printf("register bs_bom_transmit_check successfully\n");
}
ifail = EPM_register_rule_handler("jd_check_bom_use", "jd_check_bom_use",
(EPM_rule_handler_t)jd_check_bom_use);
if (ifail) {
printf("register jd_check_bom_use failed\n");
} else {
printf("register jd_check_bom_use successfully\n");
}
ifail = EPM_register_rule_handler("jd_check_bom_99", "jd_check_bom_99",
(EPM_rule_handler_t)jd_check_bom_99);
if (ifail) {
printf("register jd_check_bom_99 failed\n");
} else {
printf("register jd_check_bom_99 successfully\n");
}
ifail = EPM_register_rule_handler("jd_check_ID_wllx", "jd_check_ID_wllx",
(EPM_rule_handler_t)jd_check_ID_wllx);
if (ifail) {
printf("register jd_check_ID_wllx failed\n");
} else {
printf("register jd_check_ID_wllx successfully\n");
}
ifail = EPM_register_rule_handler("jd_check_99_cglx", "jd_check_99_cglx", (EPM_rule_handler_t)jd_check_99_cglx);
if (ifail) {
printf("register jd_check_99_cglx failed\n");
} else {
printf("register jd_check_99_cglx successfully\n");
}
//if(ifail == ITK_ok)
//{
// fprintf(stdout,"Registering action handler qtmc-sign-ir completed!\n");

@ -0,0 +1,65 @@
#include "util.h"
#include <boost/algorithm/string/predicate.hpp>
#include <boost/lexical_cast.hpp>
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;
}

@ -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;
}

@ -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;
}

@ -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) {

@ -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;
}

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="boost" version="1.72.0.0" targetFramework="native" />
<package id="javasdk" version="8.0.0" targetFramework="native" />
<package id="teamcenter" version="12.0.0" targetFramework="native" />
</packages>

@ -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

Loading…
Cancel
Save