You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#define _CRT_SECURE_NO_WARNINGS
#include "epm_handler_common.h"
int ML_DesignPartCopy(METHOD_message_t* msg, va_list args)
{
printf("=========================Design-Part Start===================\n");
int ifail = ITK_ok;
tag_t prop_tag = va_arg(args, tag_t);//NULL
int count = va_arg(args, int);//
tag_t* values = va_arg(args, tag_t*);//
tag_t design = (*msg).object_tag;
int c0 = 0, c = 0, cnt1 = 0, cnt2 = 0;
tag_t *v0 = NULL, *tirb = NULL, rf = NULLTAG, *released = NULL, *workflow = NULL;
char *os = NULL;
ITKCALL(WSOM_ask_release_status_list(design, &cnt1, &released));
ITKCALL(AOM_ask_value_tags(design, "fnd0StartedWorkflowTasks", &cnt2, &workflow));
//if (cnt1 > 0 && cnt2 == 0) //20231219 cnt1发布状态,cnt2是否流程中
if (cnt1 > 0 )//只要状态为发布,对象还在流程也可以
{
return ifail;
}
ITKCALL(GRM_find_relation_type("representation_for", &rf));
ITKCALL(AOM_ask_value_tags(design, "representation_for", &c0, &v0));
for (int i = 0; i < c0; i++) {
char *name = NULL;
AOM_ask_name(v0[i], &name);
printf("v0%s\n", name);
}
ITKCALL(AOM_ask_value_string(design, "object_string", &os));
printf("count%d\n", count);
for (int i = 0; i < count; i++) {
char *type = NULL;
//AOM_ask_name(values[i], &name);
//printf("name%s\n", name);
ITKCALL(WSOM_ask_object_type2(values[i], &type));
printf("type%s\n", type);
if (strcmp(type, "ML8_ColdRevision") != 0 && strcmp(type, "ML8_OthersRevision") != 0
&& strcmp(type, "ML8_RefrigeratorRevision") != 0 && strcmp(type, "ML8_WashingRevision") != 0
&& strcmp(type, "ML8_RawMaterialRevision") != 0 && strcmp(type, "ML8_PartRevision") != 0) {
continue;
}
int c = 0;
tag_t *tirb = NULL;
ITKCALL(AOM_ask_value_tags(values[i], "TC_Is_Represented_By", &c, &tirb));
bool find = true;
for (int j = 0; j < c; j++) {
char *tirbs = NULL;
ITKCALL(AOM_ask_value_string(tirb[j], "object_string", &tirbs));
if (strcmp(os, tirbs) == 0) {
find = false;
break;
}
}
if (find) {
tag_t relation = NULLTAG;
int r = 0;
//ITKCALL(GRM_find_relation(design, values[i], rf, &relation));
//ITKCALL(r = GRM_delete_relation(relation));
printf("%s remove %d\n", os, r);
ifail = 919700;
}
}
printf("=========================Design-Part End===================\n");
if (ifail != 0) {
EMH_store_error_s1(EMH_severity_user_error, ifail, "设计文档的表示不能直接粘贴物料");
//ITKCALL(EMH_store_error(EMH_severity_user_error, ifail));EMH_USER_error_base
}
return ifail;
}