parent
f145efb846
commit
a53067aa7c
@ -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;
|
||||||
|
|
||||||
|
}
|
@ -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"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
|
<package id="boost" version="1.72.0.0" targetFramework="native" />
|
||||||
<package id="javasdk" version="8.0.0" targetFramework="native" />
|
<package id="javasdk" version="8.0.0" targetFramework="native" />
|
||||||
<package id="teamcenter" version="12.0.0" targetFramework="native" />
|
<package id="teamcenter" version="12.0.0" targetFramework="native" />
|
||||||
</packages>
|
</packages>
|
Loading…
Reference in new issue