发送邮件,拼接信息,属性自动更改等

main
zouxk 5 years ago
parent a53067aa7c
commit 9d3f4e42d6

@ -29,20 +29,20 @@
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
@ -141,6 +141,8 @@
<IgnoreSpecificDefaultLibraries>libuser_exits.ar.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<OutputFile>$(OutDir)\bs.dll</OutputFile>
<AdditionalOptions>/FORCE %(AdditionalOptions)</AdditionalOptions>
<AdditionalLibraryDirectories>
</AdditionalLibraryDirectories>
</Link>
<ProjectReference>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
@ -163,10 +165,13 @@
<ClCompile Include="bs_test_release_check.cpp" />
<ClCompile Include="bs_wl_check.cpp" />
<ClCompile Include="CSendMail.cpp" />
<ClCompile Include="jd_auto_revise.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_get_target2.cpp" />
<ClCompile Include="jd_prop_relate.cpp" />
<ClCompile Include="jd_send_mail.cpp" />
<ClCompile Include="epm_register_handler.cxx" />
<ClCompile Include="bs_custom_main.cxx" />
@ -175,10 +180,13 @@
<ClCompile Include="jd_check_99_bomyt.cpp" />
<ClCompile Include="jd_clear_field.cpp" />
<ClCompile Include="jd_schedule_joint.cpp" />
<ClCompile Include="jd_send_mail2.cpp" />
<ClCompile Include="jd_signoff.cpp" />
<ClCompile Include="jd_check_wlms_len.cpp" />
<ClCompile Include="jd_splicing_task.cpp" />
<ClCompile Include="util.cpp" />
<ClCompile Include="jd_check_ID_wllx.cpp" />
<ClCompile Include="jd_rev_release.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="CSendMail.h" />
@ -194,6 +202,7 @@
<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')" />
<Import Project="..\packages\clibxl.3.8.8.2\build\clibxl.targets" Condition="Exists('..\packages\clibxl.3.8.8.2\build\clibxl.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
@ -202,5 +211,6 @@
<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'))" />
<Error Condition="!Exists('..\packages\clibxl.3.8.8.2\build\clibxl.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\clibxl.3.8.8.2\build\clibxl.targets'))" />
</Target>
</Project>

@ -113,6 +113,24 @@
<ClCompile Include="jd_check_99_cglx.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_auto_revise.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_get_target2.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_send_mail2.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_rev_release.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_prop_relate.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_splicing_task.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="epm_register_handler.h">

@ -1,49 +1,43 @@
#include "util.h"
void save_judge(tag_t top, string &check, string &name, vector<string> &type_vec, vector<string> &quantity_type_vec, stringstream &ss, stringstream &status_ss)
{
void save_judge(tag_t top, string &check, string &name, vector<string> &type_vec, vector<string> &quantity_type_vec, stringstream &ss, stringstream &status_ss) {
int line_cnt;
tag_t *lines;
BOM_line_ask_child_lines(top, &line_cnt, &lines);
char *val;
for (int i = 0; i < line_cnt; i++)
{
for (int i = 0; i < line_cnt; i++) {
AOM_ask_value_string(lines[i], "bl_item_object_type", &val);
printf("type :%s\n", val);
if (find(type_vec.begin(), type_vec.end(), val) != type_vec.end())
continue;
if (find(quantity_type_vec.begin(), quantity_type_vec.end(), val) != quantity_type_vec.end())
{
if (find(quantity_type_vec.begin(), quantity_type_vec.end(), val) != quantity_type_vec.end()) {
char *test;
AOM_ask_value_string(lines[i], "JD2_SFHL", &test);
printf("JD2_SFHL:%s\n", test);
if(tc_strcmp(test,"1")==0)
if (tc_strcmp(test, "1") == 0)
AOM_ask_value_string(lines[i], "JD2_sl", &val);
else
AOM_ask_value_string(lines[i], "bl_quantity", &val);
if (tc_strlen(val) == 0)
{
if (tc_strlen(val) == 0) {
AOM_ask_value_string(lines[i], "bl_rev_object_string", &val);
ss << val << ",";
ss << val << ",\n";
}
}
AOM_UIF_ask_value(lines[i], "jd2_last_release_status", &val);
string temp = val;
printf("length:%llu status:%s\n", temp.length(), val);
if (temp.length() == 0 || check.find(temp) != -1)
{
if (temp.length() == 0 || check.find(temp) != -1) {
AOM_ask_value_string(lines[i], "bl_rev_object_string", &val);
status_ss << val << ",";
status_ss << val << ",\n";
}
save_judge(lines[i], check, name, type_vec, quantity_type_vec, ss,status_ss);
save_judge(lines[i], check, name, type_vec, quantity_type_vec, ss, status_ss);
}
}
int bs_bom_save_check(METHOD_message_t *msg, va_list args)
{
int bs_bom_save_check(METHOD_message_t *msg, va_list args) {
printf("bs_bom_save_check start11\n");
logical is_judge = false;
@ -56,7 +50,7 @@ int bs_bom_save_check(METHOD_message_t *msg, va_list args)
tag_t win = va_arg(args, tag_t), top;
char *check_val, **type_val, **quantity_type;
string name, check;
stringstream ss,status_ss;
stringstream ss, status_ss;
int type_cnt, quantity_type_cnt;
PREF_ask_char_value("connor_bom_check_value", 0, &check_val);
PREF_ask_char_values("connor_bom_check_type", &type_cnt, &type_val);
@ -67,8 +61,7 @@ int bs_bom_save_check(METHOD_message_t *msg, va_list args)
check = check_val;
BOM_ask_window_top_line(win, &top);
save_judge(top, check, name, type_vec, quantity_type_vec, ss, status_ss);
if (ss.str().length())
{
if (ss.str().length()) {
ss << "物料数量为空,请填写!\n";
ifail = 1;
}

@ -70,8 +70,9 @@ int bs_bom_transmit_check(EPM_rule_message_t msg)
}
else
{
POM_AM__set_application_bypass(false);
return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "This material cannot initiate a process");
//POM_AM__set_application_bypass(false);
//return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "This material cannot initiate a process");
BOMNum = BOMNum + 1;
}
}

@ -24,11 +24,14 @@ int bs_sap_material(EPM_action_message_t msg) {
paras[temp_key] = temp_val;
}
string d0 = "D00", d1 = "D0";
for (int i = 0;i < 67;i++) {
if (i > 8) {
for (int i = 0; i < 70; i++) {
if (i > 67) {
class_map[1000 + i + 1] = d1 + to_string(i + 1);
}
else if (i > 8) {
class_map[1000 + i] = d1 + to_string(i + 1);
} else {
}
else {
class_map[1000 + i] = d0 + to_string(i + 1);
}
}
@ -36,7 +39,7 @@ int bs_sap_material(EPM_action_message_t msg) {
PREF_ask_char_values("connor_sap", &pref_cnt, &pref_vals);
split(pref_vals[4], ",", &rel_vec);
for (int i = 0;i < rel_vec.size();i++) {
for (int i = 0; i < rel_vec.size(); i++) {
vector<string> temp_vec;
split(rel_vec[i], "=", &temp_vec);
if (temp_vec.size() == 2) {
@ -85,7 +88,7 @@ int bs_sap_material(EPM_action_message_t msg) {
char **relations;
form = attachments[i];
WSOM_where_referenced2(form, 1, &rel_cnt, &levels, &rels, &relations);
for (int j = 0;j < rel_cnt;j++) {
for (int j = 0; j < rel_cnt; j++) {
if (tc_strcmp(relations[j], "IMAN_master_form") == 0) {
rev = rels[j];
}
@ -94,6 +97,21 @@ int bs_sap_material(EPM_action_message_t msg) {
printf("revision get error\n");
continue;
}
char* item_type;
AOM_ask_value_string(rev, "object_type", &item_type);
int pref_cnt;
char** pref_values;
PREF_ask_char_values("connor_wl_type", &pref_cnt, &pref_values);
bool flag = false;
for (int ii = 0; ii < pref_cnt; ii++) {
if (tc_strcmp(pref_values[ii], item_type) == 0) {
flag = true;
}
}
if (!flag) {
printf("revision is not wl\n");
continue;
}
char *item_id;
AOM_ask_value_string(rev, "item_id", &item_id);
// GRM_list_secondary_objects_only(attachments[i], relation_type, &rel_cnt, &rels);
@ -105,7 +123,8 @@ int bs_sap_material(EPM_action_message_t msg) {
if (j->second == "item_id") {
AOM_ask_value_string(rev, j->second.c_str(), &val);
temp_val = val;
} else if (j->second == "release_status_list") {
}
else if (j->second == "release_status_list") {
// int status_cnt;
// tag_t *rel_status;
// AOM_ask_value_tags(form, j->second.c_str(), &status_cnt, &rel_status);
@ -113,10 +132,12 @@ int bs_sap_material(EPM_action_message_t msg) {
// AOM_UIF_ask_value(rel_status[status_cnt - 1], "object_string", &val);
// temp_val = rel_map[val];
temp_val = paras["status"];
} else if (j->second == "jd2_dldw") {
}
else if (j->second == "jd2_dldw") {
AOM_UIF_ask_value(form, j->second.c_str(), &val);
temp_val = val;
} else {
}
else {
tag_t lov;
AOM_ask_lov(form, j->second.c_str(), &lov);
if (lov)
@ -133,14 +154,23 @@ int bs_sap_material(EPM_action_message_t msg) {
char ***vals;
int cnt, *ids, *val_count;
ICS_ico_ask_attributes(class_obj, &cnt, &ids, &val_count, &vals);
for (int j = 0;j < cnt;j++) {
for (int j = 0; j < cnt; j++) {
printf("id:%d\n", ids[j]);
if (class_map.find(ids[j]) != class_map.end()) {
if (val_count[j])
if (ids[j] == 1069) {//²ã¼¶ÏÂÀ­¿òÌØÊâ´¦Àí Hierarchical drop-down box special handling
char* temp;
AOM_ask_value_string(form, "jd2_flbm", &temp);
cout << "class prop id 1069, jd2_flbm:" << temp << endl;
dic[convert_to_cstring(class_map[ids[j]].c_str())] = convert_to_cstring(temp);
}
else {
if (val_count[j]) {
dic[convert_to_cstring(class_map[ids[j]].c_str())] = convert_to_cstring(vals[j][0]);
}
}
}
}
}
dic["MBRSH"] = "M";
dic["SPART"] = "00";
dic["KLART"] = "001";
@ -190,7 +220,7 @@ void get_bom(System::Collections::Generic::List<System::Collections::Generic::Di
dic["POSTP"] = "L";
char *val;
AOM_UIF_ask_value(lines[j], "bl_sequence_no", &val);
if (!is_judge)
//if (!is_judge)
dic["POSNR"] = convert_to_cstring(val);
char *child_id;
AOM_UIF_ask_value(lines[j], "bl_child_id", &child_id);
@ -224,7 +254,8 @@ void get_bom(System::Collections::Generic::List<System::Collections::Generic::Di
if (index != -1 && quantity.length() > (index + 4)) {
quantity = quantity.substr(0, index + 4);
}
} else {
}
else {
AOM_ask_value_string(lines[j], "bl_quantity", &val);
quantity = val;
}
@ -262,7 +293,8 @@ void get_bom(System::Collections::Generic::List<System::Collections::Generic::Di
if (pid.length() > 0) {
printf("obj:%s pid:%s\n", obj_str, pid.c_str());
} else {
}
else {
printf("obj:%s pid:%s\n", obj_str, id);
}
get_bom(a_list, lines[j], werks, stlan, pid.length() > 0 ? pid : id, relation_type, child_is_hl, is_judge, bom_ids);

@ -58,6 +58,12 @@ extern "C" {
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);
int jd_auto_revise(EPM_action_message_t msg);
int jd_send_mail2(EPM_action_message_t msg);
int jd_get_target2(EPM_action_message_t msg);
int jd_rev_release(EPM_rule_message_t msg);
int jd_prop_relate(METHOD_message_t *msg, va_list args);
int jd_splicing_task(EPM_action_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);

@ -40,7 +40,7 @@ $HISTORY$
#include "epm_register_handler.h"
#include "epm_handler_common.h"
#include "util.h"
// Method and Workflow Handler
extern DLLAPI int CUST_init_module(int *decision, va_list args) {
@ -56,7 +56,8 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_action_handler_t)bs_file_transfer);
if (ifail) {
printf("register bs_file_transfer failed\n");
} else {
}
else {
printf("register bs_file_transfer successfully\n");
}
@ -64,7 +65,8 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_action_handler_t)bs_sap_material);
if (ifail) {
printf("register bs_sap_material failed\n");
} else {
}
else {
printf("register bs_sap_material successfully\n");
}
@ -72,21 +74,24 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_action_handler_t)bs_sap_bom);
if (ifail) {
printf("register bs_sap_bom failed\n");
} else {
}
else {
printf("register bs_sap_bom successfully\n");
}
ifail = EPM_register_rule_handler("bs_bom_check", "bs_bom_check", (EPM_rule_handler_t)bs_bom_check);
if (ifail) {
printf("register bs_bom_check failed\n");
} else {
}
else {
printf("register bs_bom_check successfully\n");
}
ifail = EPM_register_rule_handler("bs_wl_check", "bs_wl_check", (EPM_rule_handler_t)bs_wl_check);
if (ifail) {
printf("register bs_wl_check failed\n");
} else {
}
else {
printf("register bs_wl_check successfully\n");
}
@ -94,7 +99,8 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_action_handler_t)bs_sign_cad);
if (ifail) {
printf("register bs_sign_cad failed\n");
} else {
}
else {
printf("register bs_sign_cad successfully\n");
}
@ -102,7 +108,8 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_action_handler_t)bs_test_release_check);
if (ifail) {
printf("register bs_test_release_check failed\n");
} else {
}
else {
printf("register bs_test_release_check successfully\n");
}
@ -111,7 +118,8 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_action_handler_t)jd_signoff);
if (ifail) {
printf("register jd_signoff failed\n");
} else {
}
else {
printf("register jd_signoff successfully\n");
}
@ -119,14 +127,16 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_action_handler_t)jd_schedule_joint);
if (ifail == ITK_ok) {
fprintf(stdout, "Registering action handler jd_schedule_joint completed!\n");
} else {
}
else {
fprintf(stdout, "Registering action handler jd_schedule_joint failed %d!\n", ifail);
}
ifail = EPM_register_action_handler("jd_batch_process", "jd_batch_process",
(EPM_action_handler_t)jd_batch_process);
if (ifail) {
printf("register jd_batch_process failed\n");
} else {
}
else {
printf("register jd_batch_process successfully\n");
}
@ -134,14 +144,16 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_action_handler_t)jd_add_attachments);
if (ifail) {
printf("register jd_add_attachments failed\n");
} else {
}
else {
printf("register jd_add_attachments successfully\n");
}
ifail = EPM_register_rule_handler("jd_check_99_bomyt", "jd_check_99_bomyt",
(EPM_rule_handler_t)jd_check_99_bomyt);
if (ifail) {
printf("register jd_check_99_bomyt failed\n");
} else {
}
else {
printf("register jd_check_99_bomyt successfully\n");
}
@ -149,28 +161,32 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_action_handler_t)jd_send_mail);
if (ifail) {
printf("register jd_send_mail failed\n");
} else {
}
else {
printf("register jd_send_mail successfully\n");
}
ifail = EPM_register_action_handler("jd_get_target", "jd_get_target",
(EPM_action_handler_t)jd_get_target);
if (ifail) {
printf("register jd_get_target failed\n");
} else {
}
else {
printf("register jd_get_target successfully\n");
}
ifail = EPM_register_rule_handler("jd_check_wlms_len", "jd_check_wlms_len",
(EPM_rule_handler_t)jd_check_wlms_len);
if (ifail) {
printf("register jd_check_wlms_len failed\n");
} else {
}
else {
printf("register jd_check_wlms_len successfully\n");
}
ifail = EPM_register_rule_handler("bs_bom_transmit_check", "bs_bom_transmit_check",
(EPM_rule_handler_t)bs_bom_transmit_check);
if (ifail) {
printf("register bs_bom_transmit_check failed\n");
} else {
}
else {
printf("register bs_bom_transmit_check successfully\n");
}
@ -178,7 +194,8 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_rule_handler_t)jd_check_bom_use);
if (ifail) {
printf("register jd_check_bom_use failed\n");
} else {
}
else {
printf("register jd_check_bom_use successfully\n");
}
@ -186,22 +203,64 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
(EPM_rule_handler_t)jd_check_bom_99);
if (ifail) {
printf("register jd_check_bom_99 failed\n");
} else {
}
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 {
}
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 {
}
else {
printf("register jd_check_99_cglx successfully\n");
}
ifail = EPM_register_action_handler("jd_auto_revise", "jd_auto_revise", (EPM_action_handler_t)jd_auto_revise);
if (ifail) {
printf("register jd_auto_revise failed\n");
}
else {
printf("register jd_auto_revise successfully\n");
}
ifail = EPM_register_action_handler("jd_send_mail2", "jd_send_mail2",
(EPM_action_handler_t)jd_send_mail2);
if (ifail) {
printf("register jd_send_mail2 failed\n");
}
else {
printf("register jd_send_mail2 successfully\n");
}
ifail = EPM_register_action_handler("jd_get_target2", "jd_get_target2",
(EPM_action_handler_t)jd_get_target2);
if (ifail) {
printf("register jd_get_target2 failed\n");
}
else {
printf("register jd_get_target2 successfully\n");
}
ifail = EPM_register_rule_handler("jd_rev_release", "jd_rev_release",
(EPM_rule_handler_t)jd_rev_release);
if (ifail) {
printf("register jd_rev_release failed\n");
}
else {
printf("register jd_rev_release successfully\n");
}
ifail = EPM_register_action_handler("jd_splicing_task", "jd_splicing_task",
(EPM_action_handler_t)jd_splicing_task);
if (ifail) {
printf("register jd_splicing_task failed\n");
}
else {
printf("register jd_splicing_task successfully\n");
}
//if(ifail == ITK_ok)
//{
// fprintf(stdout,"Registering action handler qtmc-sign-ir completed!\n");
@ -211,7 +270,6 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args) {
// fprintf(stdout , "Registering action handler qtmc-sign-ir failed %d!\n",ifail);
//}
return ifail;
}
//
@ -228,7 +286,8 @@ extern DLLAPI int USERSERVICE_custom_register_methods() {
if (status == ITK_ok) {
printf("register bomwindow_save success\n");
} else {
}
else {
printf("register bomwindow_save failed\n");
}
@ -242,12 +301,41 @@ extern DLLAPI int USERSERVICE_custom_register_methods() {
status = USERSERVICE_register_method("bs_bypass", functionPtr, numberOfArguments, argumentList, returnValueType);
if (status == ITK_ok) {
printf("register bs_bypass success\n");
} else {
}
else {
printf("register bs_bypass failed\n");
}
}
vector<string> form_types;
form_types.push_back("JD2_GTZJRevisionMaster");
form_types.push_back("JD2_GTBJRevisionMaster");
form_types.push_back("JD2_BLZJRevisionMaster");
form_types.push_back("JD2_BLBJRevisionMaster");
form_types.push_back("JD2_BXZJRevisionMaster");
form_types.push_back("JD2_BXBJRevisionMaster");
form_types.push_back("JD2_YFSBZJRevisionMaster");
form_types.push_back("JD2_YFSBBJRevisionMaster");
form_types.push_back("JD2_YLRevisionMaster");
form_types.push_back("JD2_FLRevisionMaster");
form_types.push_back("JD2_RHRevisionMaster");
form_types.push_back("JD2_LSWLRevisionMaster");
form_types.push_back("JD2_RHRevisionMaster");
form_types.push_back("JD2_CDRevisionMaster");
for (int i = 0; i < form_types.size(); i++) {
METHOD_find_prop_method(form_types[i].c_str(), "jd2_flbm", PROP_set_value_string_msg, &mth_tag);
if (mth_tag.id) {
status = METHOD_add_action(mth_tag, METHOD_post_action_type, (METHOD_function_t)jd_prop_relate, NULL);
if (status == ITK_ok) {
cout << "register " << form_types[i].c_str() << " success" << endl;
}
else {
cout << "register " << form_types[i].c_str() << " failed" << endl;
}
}
}
return 0;
}

@ -77,12 +77,12 @@ int jd_add_attachments(EPM_action_message_t msg) {
printf("relation:%s\n", relation);
printf("item:%s\n", item);
vector<tag_t> csjh_rev;
vector<tag_t> tags;
vector<int> csjh_type;
for (int i = 0;i < att_cnt;i++) {
char *att_type;
AOM_ask_value_string(attachments[i], "object_type", &att_type);
printf("target type:%s\n",att_type);
printf("target type:%s\n", att_type);
if (tc_strcmp(att_type, "JD2_GTSYWTSRevision") == 0) {
tag_t *csjh;
int csjh_cnt;
@ -101,8 +101,15 @@ int jd_add_attachments(EPM_action_message_t msg) {
char *name;
AOM_ask_value_string(csjh_revs[rev_cnt - 1], "object_string", &name);
printf("%s add success\n", name);
csjh_rev.push_back(csjh_revs[rev_cnt - 1]);
tags.push_back(csjh_revs[rev_cnt - 1]);
csjh_type.push_back(EPM_target_attachment);
tag_t *forms;
int forms_cnt;
AOM_ask_value_tags(csjh_revs[rev_cnt - 1], "IMAN_master_form_rev", &forms_cnt, &forms);
if (forms_cnt > 0) {
tags.push_back(forms[0]);
csjh_type.push_back(EPM_target_attachment);
}
}
MEM_free(csjh_revs);
}
@ -111,10 +118,8 @@ int jd_add_attachments(EPM_action_message_t msg) {
}
}
if (csjh_rev.size() > 0) {
tag_t *atts = &csjh_rev[0];
int *types = &csjh_type[0];
EPM_add_attachments(root_task, csjh_rev.size(), atts, types);
if (tags.size() > 0) {
EPM_add_attachments(root_task, tags.size(), &tags[0], &csjh_type[0]);
}
POM_AM__set_application_bypass(false);

@ -0,0 +1,213 @@
#include "util.h"
static void add_int_to_int_array(int add_int, int *n_int_array, int **int_array) {
int count = *n_int_array;
count++;
if (count == 1) {
(*int_array) = (int *)MEM_alloc(sizeof(int));
} else {
(*int_array) = (int *)MEM_realloc((*int_array), count * sizeof(int));
}
(*int_array)[count - 1] = add_int;
*n_int_array = count;
}
static void add_tag_to_tag_array(tag_t add_tag, int *n_tag_array, tag_t **tag_array) {
int count = *n_tag_array;
count++;
if (count == 1) {
(*tag_array) = (tag_t *)MEM_alloc(sizeof(tag_t));
} else {
(*tag_array) = (tag_t *)MEM_realloc((*tag_array), count * sizeof(tag_t));
}
(*tag_array)[count - 1] = add_tag;
*n_tag_array = count;
}
static void revise_item_revisions(int num_target_objs, tag_t *target_object_tags, vector<tag_t> *tags) {
int *all_attached_object_count = NULL;
tag_t *all_deepcopydata_tags;
int n_ints_in_list = 0;
int n_tags_in_list = 0;
int *ifails = NULL;
char *id_string = NULL;
char type_name[TCTYPE_name_size_c + 1] = "";
tag_t object_tag = NULLTAG;
tag_t type_tag = NULLTAG;
tag_t *attached_objs_tags = NULL;
tag_t *target_copy_tags = NULL;
tag_t *revise_input_tags = NULL;
revise_input_tags = (tag_t *)MEM_alloc(num_target_objs * sizeof(tag_t));
for (int ii = 0; ii < num_target_objs; ii++) {
tag_t type_tag = NULLTAG;
TCTYPE_ask_object_type(target_object_tags[ii], &type_tag);
tag_t revise_input_tag = NULLTAG;
TCTYPE_construct_operationinput(type_tag, TCTYPE_OPERATIONINPUT_REVISE, &revise_input_tag);
revise_input_tags[ii] = revise_input_tag;
printf("\nTarget Objects::\n");
int attached_object_count = 0;
tag_t *deepcopydata_tags = NULL;
TCTYPE_ask_deepcopydata(target_object_tags[ii],
TCTYPE_OPERATIONINPUT_REVISE, &attached_object_count, &deepcopydata_tags);
tag_t last_object = NULLTAG;
for (int jj = 0; jj < attached_object_count; jj++) {
AOM_ask_value_tag(deepcopydata_tags[jj], "targetObject",
&object_tag);
if (object_tag != last_object) {
WSOM_ask_object_id_string(object_tag, &id_string);
TCTYPE_ask_object_type(object_tag, &type_tag);
TCTYPE_ask_name(type_tag, type_name);
printf("%s (%s)\n", id_string, type_name);
}
last_object = object_tag;
AOM_ask_value_tag(deepcopydata_tags[jj], "attachedObject", &object_tag);
if (object_tag != NULLTAG) {
WSOM_ask_object_id_string(object_tag, &id_string);
TCTYPE_ask_object_type(object_tag, &type_tag);
TCTYPE_ask_name(type_tag, type_name);
printf("attachedObject: %s (%s)\n", id_string, type_name);
}
}
if (attached_object_count > 0) {
add_int_to_int_array(attached_object_count, &n_ints_in_list,
&all_attached_object_count);
for (int jj = 0; jj < attached_object_count; jj++) {
add_tag_to_tag_array(deepcopydata_tags[jj], &n_tags_in_list,
&all_deepcopydata_tags);
}
}
if (deepcopydata_tags) MEM_free(deepcopydata_tags);
}
TCTYPE_revise_objects(num_target_objs, target_object_tags,
revise_input_tags, all_attached_object_count, all_deepcopydata_tags,
&target_copy_tags, &ifails);
printf("\nNew Revisions:\n");
for (int ii = 0; ii < num_target_objs; ii++) {
WSOM_ask_object_id_string(target_copy_tags[ii],
&id_string);
TCTYPE_ask_object_type(target_copy_tags[ii], &type_tag);
TCTYPE_ask_name(type_tag, type_name);
if (ifails[ii] == ITK_ok) {
printf("%s (%s)\n", id_string, type_name);
(*tags).push_back(target_copy_tags[ii]);
} else {
char *error_message_string;
EMH_get_error_string(NULLTAG, ifails[ii], &error_message_string);
printf("\t%d %s\n", ifails[ii], error_message_string);
if (error_message_string) MEM_free(error_message_string);
}
}
if (revise_input_tags) MEM_free(revise_input_tags);
if (all_attached_object_count) MEM_free(all_attached_object_count);
if (all_deepcopydata_tags) MEM_free(all_deepcopydata_tags);
if (attached_objs_tags) MEM_free(attached_objs_tags);
if (target_copy_tags) MEM_free(target_copy_tags);
if (ifails) MEM_free(ifails);
if (id_string) MEM_free(id_string);
}
int jd_auto_revise(EPM_action_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);
vector<tag_t> revs;
vector<tag_t> tags;
POM_AM__set_application_bypass(true);
for (int i = 0;i < att_cnt;i++) {
if (isTypeOf(attachments[i], "ItemRevision")) {
revs.push_back(attachments[i]);
}
}
revise_item_revisions(revs.size(), &revs[0], &tags);
if (tags.size() > 0) {
tag_t owning_user, group;
char *name, **prefs;
int prefs_cnt = 0, tags_cnt = tags.size();
AOM_ask_value_tag(msg.task, "owning_user", &owning_user);
AOM_ask_value_string(owning_user, "object_string", &name);
cout << "owning_user:" << name << endl;
SA_ask_user_login_group(owning_user, &group);
char *group_name;
AOM_ask_value_string(group, "object_string", &group_name);
cout << "group name:" << group_name << endl;
PREF_ask_char_values("jd2_auto_revise_relations", &prefs_cnt, &prefs);
for (int i = 0;i < prefs_cnt;i++) {
cout << "relation:" << prefs[i] << endl;
for (int ii = 0;ii < tags_cnt;ii++) {
tag_t *temp;
int num = 0;
AOM_ask_value_tags(tags[ii], prefs[i], &num, &temp);
for (int iii = 0;iii < num;iii++) {
char *str;
AOM_ask_value_string(temp[iii], "object_string", &str);
cout << "add name:" << str << endl;
tags.push_back(temp[iii]);
}
}
}
for (int i = 0;i < tags.size();i++) {
AOM_lock(tags[i]);
int res = ITK_ok;
char *uid;
ITKCALL(AOM_set_ownership(tags[i], owning_user, group));
ITKCALL(res = AOM_save(tags[i]));
if (res != ITK_ok) {
ITK__convert_tag_to_uid(tags[i], &uid);
cout << uid << endl;
if (uid) MEM_free(uid);
}
AOM_unlock(tags[i]);
//if (isTypeOf(tags[i], "Dataset")) {
//int ref_cnt;
//tag_t *refs;
//AOM_ask_value_tags(tags[i], "ref_list", &ref_cnt, &refs);
//cout << "dataset ref cnt:" << ref_cnt << endl;
//for (int iiii = 0;iiii < ref_cnt;iiii++) {
// //tags.push_back(refs[iiii]);
// AOM_lock(refs[iiii]);
// ITKCALL(POM_set_owning_group(refs[iiii], group));
// ITKCALL(POM_set_owning_user(refs[iiii], owning_user));
// AOM_save(refs[iiii]);
// AOM_unlock(refs[iiii]);
//}
//tag_t latest_dataset;
//AE_ask_dataset_latest_rev(tags[i], &latest_dataset);
//AOM_lock(latest_dataset);
// ITKCALL(POM_set_owning_group(tags[i], group));
// ITKCALL(POM_set_owning_user(tags[i], owning_user));
// ITKCALL(POM_set_modification_user(tags[i], owning_user));
// ITKCALL(AE_save_myself(tags[i]));
//
// AOM_save(tags[i]);
// AOM_unlock(tags[i]);
//} else {
// ITKCALL(POM_set_owning_group(tags[i], group));
// ITKCALL(POM_set_owning_user(tags[i], owning_user));
// AOM_save(tags[i]);
// AOM_unlock(tags[i]);
//}
}
cout << "success" << endl;
} else {
cout << "revs cnt:0" << endl;
}
POM_AM__set_application_bypass(false);
return 0;
}

@ -16,10 +16,12 @@ DWORD WINAPI sendRequest(void *uid) {
http::Request request(ss.str().c_str());
const http::Response response = request.send("GET");
std::cout << std::string(response.body.begin(), response.body.end()) << '\n'; // print the result
} else {
}
else {
printf("jd2_server_ip error\n");
}
} catch (const std::exception& e) {
}
catch (const std::exception& e) {
std::cerr << "Request failed, error: " << e.what() << '\n';
}
return 0;
@ -33,7 +35,13 @@ int jd_batch_process(EPM_action_message_t msg) {
EPM_ask_root_task(msg.task, &rootTask);
EPM_ask_job(msg.task, &job);
EPM_ask_attachments(rootTask, EPM_target_attachment, &att_count, &attachments);
if (att_count < 2) {
int rev_cnt = 0;
for (int i = 0; i < att_count; i++) {
if (isTypeOf(attachments[i], "ItemRevision")) {
rev_cnt++;
}
}
if (rev_cnt < 2) {
return 0;
}
printf("att_count:%d\n", att_count);
@ -47,7 +55,7 @@ int jd_batch_process(EPM_action_message_t msg) {
AOM_ask_value_string(attachments[i], "object_type", &object_type);
AOM_ask_value_string(attachments[i], "object_string", &object_string);
printf("object_type:%s object_string:%s\n", object_type, object_string);
if (isTypeOf(attachments[i], "Form")) {
if (!isTypeOf(attachments[i], "ItemRevision")) {
char *name;
AOM_ask_value_string(attachments[i], "object_string", &name);
form_names << name;
@ -61,7 +69,7 @@ int jd_batch_process(EPM_action_message_t msg) {
tag_t *tasks;
EPM_ask_sub_tasks(rootTask, &sub_cnt, &tasks);
map<string, vector<tag_t>> task_map;
for (int i = 0;i < sub_cnt;i++) {
for (int i = 0; i < sub_cnt; i++) {
char *task_name, *task_type;
AOM_ask_value_string(tasks[i], "object_name", &task_name);
AOM_ask_value_string(tasks[i], "object_type", &task_type);
@ -71,12 +79,13 @@ int jd_batch_process(EPM_action_message_t msg) {
AOM_ask_value_tag(tasks[i], "fnd0Assignee", &assignee);
tags.push_back(assignee);
} else {
}
else {
tag_t *signoffs;
int signoff_cnt;
AOM_ask_value_tags(tasks[i], "valid_signoffs", &signoff_cnt, &signoffs);
printf("name:%s valid cnt:%d\n", task_name, signoff_cnt);
for (int j = 0;j < signoff_cnt;j++) {
for (int j = 0; j < signoff_cnt; j++) {
tag_t member;
AOM_ask_value_tag(signoffs[j], "group_member", &member);
tags.push_back(member);
@ -85,7 +94,7 @@ int jd_batch_process(EPM_action_message_t msg) {
task_map[task_name] = tags;
}
for (auto i = 0;i < process_vec.size();i++) {
for (auto i = 0; i < process_vec.size(); i++) {
ITKCALL(AOM_refresh(process_vec[i], false));
@ -94,7 +103,7 @@ int jd_batch_process(EPM_action_message_t msg) {
EPM_ask_sub_tasks(root, &sub_cnt, &tasks);
for (auto j = 0;j < sub_cnt;j++) {
for (auto j = 0; j < sub_cnt; j++) {
char *task_name, *task_type;
AOM_ask_value_string(tasks[j], "object_name", &task_name);
if (task_map[task_name].size() == 0)
@ -102,14 +111,15 @@ int jd_batch_process(EPM_action_message_t msg) {
AOM_ask_value_string(tasks[j], "object_type", &task_type);
if (tc_strcmp("EPMDoTask", task_type) == 0) {
EPM_assign_responsible_party(tasks[j], task_map[task_name][0]);
} else {
}
else {
tag_t sub_task;
int *types = (int*)MEM_alloc(task_map[task_name].size());
EPM_ask_sub_task(tasks[j], "select-signoff-team", &sub_task);
if (sub_task) {
for (int k = 0;k < task_map[task_name].size();k++) {
for (int k = 0; k < task_map[task_name].size(); k++) {
int temp_cnt;
tag_t *temp;
EPM_create_adhoc_signoff(sub_task, task_map[task_name][k], &temp_cnt, &temp);
@ -129,15 +139,17 @@ int jd_batch_process(EPM_action_message_t msg) {
int ref_cnt;
tag_t *refs;
tag_t root_task1;
for (int i = 0;i < att_count;i++) {
if (isTypeOf(attachments[i], "Form")) {
int process_index = 0;
for (int i = 0; i < att_count; i++) {
if (!isTypeOf(attachments[i], "ItemRevision")) {
continue;
}
EPM_ask_root_task(process_vec[i], &root_task1);
EPM_ask_root_task(process_vec[process_index], &root_task1);
process_index++;
EPM_ask_attachments(root_task1, EPM_reference_attachment, &ref_cnt, &refs);
char *name1;
AOM_ask_value_string(attachments[i], "object_string", &name1);
for (int ii = 0;ii < ref_cnt; ii++) {
for (int ii = 0; ii < ref_cnt; ii++) {
char *name2;
AOM_ask_value_string(refs[ii], "object_string", &name2);
if (tc_strcmp(name1, name2) == 0) {
@ -153,7 +165,6 @@ int jd_batch_process(EPM_action_message_t msg) {
break;
}
}
if (isTypeOf(attachments[i], "ItemRevision")) {
int form_cnt;
tag_t *forms;
char *name;
@ -169,7 +180,6 @@ int jd_batch_process(EPM_action_message_t msg) {
}
}
}
}
EMH_clear_errors();
cout << "batch success" << endl;

@ -3,7 +3,7 @@
#include <boost/lexical_cast.hpp>
void checkCGLX(tag_t bomline, bool *flag) {
void checkCGLX(tag_t bomline, bool *flag, vector<string> *res) {
int child_cnt;
tag_t *childrens;
ITKCALL(BOM_line_ask_child_lines(bomline, &child_cnt, &childrens));
@ -23,10 +23,12 @@ void checkCGLX(tag_t bomline, bool *flag) {
cout << "check item_id:" << item_id << endl;
cout << "cglx:" << cglx << endl;
*flag = *flag&&tc_strlen(cglx) > 0;
if (!*flag) {
return;
if (tc_strlen(cglx) == 0) {
char *rev_name;
AOM_ask_value_string(rev, "object_string", &rev_name);
(*res).push_back(rev_name);
}
checkCGLX(childrens[i], flag);
checkCGLX(childrens[i], flag, res);
}
}
@ -53,11 +55,18 @@ int jd_check_99_cglx(EPM_rule_message_t msg) {
continue;
}
bool flag = true;
checkCGLX(top_line, &flag);
vector<string> res;
checkCGLX(top_line, &flag, &res);
ITKCALL(BOM_close_window(window));
cout << "flag:" << boolalpha << flag << endl;
if (!flag) {
return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "包含未填写采购类型的物料,请检查");
string msg = "包含以下未填写采购类型的物料,请检查\n";
for (int ii = 0;ii < res.size();ii++) {
msg.append(res[ii]);
msg.append("\n");
}
return EMH_store_error_s1(EMH_severity_error, EMH_AE_error_base, msg.c_str());
}
}
return EPM_go;

@ -7,6 +7,7 @@ int jd_check_wlms_len(EPM_rule_message_t msg) {
EPM_ask_root_task(msg.task, &root_task);
//»ñµÃ¸ùÈÎÎñϵÄ×é¼þ
EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &attachments);
stringstream oss;
for (int i = 0; i < att_cnt; i++) {
if (isTypeOf(attachments[i], "ItemRevision")) {
int form_att;
@ -16,8 +17,10 @@ int jd_check_wlms_len(EPM_rule_message_t msg) {
continue;
}
char *wlms;
char *item_id;
AOM_ask_value_string(forms[0], "jd2_wlms", &wlms);
cout << "jd2_wlms:" << wlms << endl;
AOM_ask_value_string(attachments[i], "item_id", &item_id);
cout << "jd2_wlms" << wlms << endl;
int length = 0;
for (int i = 0; wlms[i] != 0; i++) {
if (wlms[i] < 128 && wlms[i]>0) {
@ -30,10 +33,19 @@ int jd_check_wlms_len(EPM_rule_message_t msg) {
cout << "length: " << length << endl;
if (length > 40) {
POM_AM__set_application_bypass(false);
return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "字符不能超过40!!!");
cout << "ID : " << item_id << endl;
string a = "ID : ";
string b = " , length : ";
// string c = " , 字符不能超过40!!!";
oss << a << item_id << b << length << endl;
}
}
}
if (oss.str().length() > 0) {
return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, oss.str().c_str());
}
POM_AM__set_application_bypass(false);
return EPM_go;
}
}

@ -238,11 +238,20 @@ extern "C" {
std::cout << "Added " << urlPath << " to the classpath." << std::endl;
}
bool find(int prop_cnt, char** props, char* prop) {
for (int i = 0;i < prop_cnt;i++) {
if (tc_strcmp(props[i], prop) == 0) {
return true;
}
}
return false;
}
int JD_clear(METHOD_message_t* msg, va_list args, tag_t new_rev) {
printf("升版执行\n");
//获取数据集
const char *sign_location1, *sign_str;
char *temp_path, *attach_type,*prop,**pref_values1;
char *temp_path, *attach_type, *prop, **pref_values1;
int n_attachs, pref_count1;
tag_t ref_obj, excelx_tag, excel_tag, wordx_tag, word_tag, type_tag, word_ref, excel_ref, *dataset;
stringstream sign_date;
@ -362,13 +371,18 @@ extern "C" {
//表单签名
for (auto iii = 0; iii < objects_count; iii++) {
AOM_lock(objects[iii]);
int prop_cnt;
char **prop_names;
ITKCALL(AOM_ask_prop_names(objects[iii], &prop_cnt, &prop_names));
for (int i = 0;i < pref_count1;i++) {
sign_date.str("");
sign_date << pref_values1[i];
sign_date << "rq";
AOM_ask_value_string(objects[iii], pref_values1[i], &prop);
if (tc_strlen(prop) != 0) {
if (find(prop_cnt, prop_names, pref_values1[i])) {
AOM_set_value_string(objects[iii], pref_values1[i], "");
}
if (find(prop_cnt, prop_names, (char *)sign_date.str().c_str())) {
AOM_set_value_string(objects[iii], sign_date.str().c_str(), "");
}
}
@ -485,9 +499,9 @@ extern "C" {
if (strcmp(operation, "Revise") == 0 || strcmp(operation, "SaveAs") == 0) {
if (isTypeOf(new_rev, "ItemRevision")) {
//获取首选项
PREF_ask_char_values("jd_revise_clear_revisions",&pref_count,&pref_values);
PREF_ask_char_values("jd_revise_clear_revisions", &pref_count, &pref_values);
for (int i = 0;i < pref_count;i++) {
if (strcmp(pref_values[i],type)==0) {
if (strcmp(pref_values[i], type) == 0) {
JD_clear(msg, args, new_rev);
break;
}

@ -8,7 +8,7 @@ int jd_get_target(EPM_action_message_t msg) {
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++) {
for (int i = 0; i < att_cnt; i++) {
char *item_id, *item_revision_id;
if (isTypeOf(attachments[i], "ItemRevision")) {
AOM_ask_value_string(attachments[i], "item_id", &item_id);
@ -20,19 +20,22 @@ int jd_get_target(EPM_action_message_t msg) {
}
}
string temp = ss.str().substr(0, ss.str().length() - 1);
//AOM_lock(root_task);
//AOM_set_value_string(root_task, "jd2_task_target", temp.c_str());
//AOM_save(root_task);
//AOM_unlock(root_task);
cout << temp.c_str() << endl;
AOM_set_value_string(root_task, "object_desc", temp.c_str());
AOM_save(root_task);
//char **p = (char **)malloc(sizeof(char *));
//p[0] = (char *)malloc(sizeof(char) * 2000);
//p[0] = (char *)temp.c_str();
//ITKCALL(PREF_set_char_values("jd2_task_target", 1, p));
//free(p);
POM_AM__set_application_bypass(false);
ofstream out;
stringstream file_location;
file_location << getenv("temp");
file_location << "\\";
file_location << "jd2_task_target.txt";
out.open(file_location.str().c_str(), ios::out | ios::trunc);
out << temp.c_str() << endl;
out.close();
//ofstream out;
//stringstream file_location;
//file_location << getenv("temp");
//file_location << "\\";
//file_location << "jd2_task_target.txt";
//out.open(file_location.str().c_str(), ios::out | ios::trunc);
//out << temp.c_str() << endl;
//out.close();
return 0;
}

@ -0,0 +1,43 @@
#include "util.h"
int jd_get_target2(EPM_action_message_t msg) {
POM_AM__set_application_bypass(true);
tag_t root_task, *attachments;
int att_cnt;
stringstream ss;
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, *item_revision_id;
if (isTypeOf(attachments[i], "ItemRevision")) {
char *uid;
ITK__convert_tag_to_uid(attachments[i], &uid);
ss << uid;
break;
}
}
cout << ss.str().c_str() << endl;
//string temp = ss.str().c_str();
//AOM_lock(root_task);
//AOM_set_value_string(root_task, "jd2_task_target", temp.c_str());
//AOM_save(root_task);
//AOM_unlock(root_task);
//char **p = (char **)MEM_alloc(sizeof(char *));
//p[0] = (char *)MEM_alloc(sizeof(char) * 50);
//p[0] = (char *)ss.str().c_str();
//ITKCALL(PREF_set_char_values("jd2_task_target2", 1, p));
//MEM_free(p);
AOM_set_value_string(root_task, "object_desc", ss.str().c_str());
AOM_save(root_task);
POM_AM__set_application_bypass(false);
//ofstream out;
//stringstream file_location;
//file_location << getenv("temp");
//file_location << "\\";
//file_location << "jd2_task_target2.txt";
//out.open(file_location.str().c_str(), ios::out | ios::trunc);
//out << temp.c_str() << endl;
//out.close();
return 0;
}

@ -0,0 +1,90 @@
#include "util.h"
#include "libxl.h"
using namespace libxl;
char *w2c(char *pcstr, const wchar_t *pwstr, size_t len)
{
int nlength = wcslen(pwstr);
//获取转换后的长度
int nbytes = WideCharToMultiByte(0, 0, pwstr, nlength, NULL, 0, NULL, NULL);
if (nbytes > len) nbytes = len;
// 通过以上得到的结果转换unicode 字符为ascii 字符
WideCharToMultiByte(0, 0, pwstr, nlength, pcstr, nbytes, NULL, NULL);
return pcstr;
}
int jd_prop_relate(METHOD_message_t *msg, va_list args) {
cout << "jd_prop_relate" << endl;
//获取属性对象
tag_t prop_tag = va_arg(args, tag_t), form;
//获取值
char* val = va_arg(args, char*);
cout << "jd2_flbm:" << val << endl;
ITKCALL(PROP_ask_owning_object(prop_tag, &form));
if (val&&strlen(val)) {
char **pref_temp;
map<string, vector<string>> pref_map;
int pref_cnt;
PREF_ask_char_values("connor_default_dataset", &pref_cnt, &pref_temp);
for (int i = 0; i < pref_cnt; i++) {
string temp1 = string(pref_temp[i]).substr(0, string(pref_temp[i]).find_first_of("="));
string temp2 = string(pref_temp[i]).substr(string(pref_temp[i]).find_first_of("=") + 1);
vector<string> temp_vec;
split(temp2, ",", &temp_vec);
pref_map[temp1] = temp_vec;
}
char *pref;
PREF_ask_char_value("jd_flbm_fldj_relation", 0, &pref);
tag_t dataset;
ITK__convert_uid_to_tag(pref, &dataset);
char* file_name;
ITKCALL(AOM_UIF_ask_value(dataset, "object_name", &file_name));
cout << "dataset file name:" << file_name << endl;
string suffix = string(file_name).substr(string(file_name).find_last_of(".") + 1);
if (pref_map.find(suffix) != pref_map.end()) {
string temp = getenv("temp");
temp.append("\\").append(file_name);
if (ACCESS(temp.c_str(), 0) == 0) {
cout << "delete exist file" << endl;
remove(temp.c_str());
}
ITKCALL(AE_export_named_ref(dataset, pref_map[suffix][1].c_str(), temp.c_str()));
cout << "download path:" << temp.c_str() << endl;
Book* book = xlCreateXMLBook();
book->setKey(L"TommoT", L"windows-2421220b07c2e10a6eb96768a2p7r6gc");
if (book->load(stringToWchar(temp.c_str()))) {
Sheet* sheet = book->getSheet(0);
if (sheet) {
cout << "open success" << endl;
for (int i = 0; i < sheet->lastRow(); i++) {
CellType celltype = sheet->cellType(i, 1);
if (celltype == CELLTYPE_NUMBER)
{
const wchar_t * t = sheet->readStr(i, 1);
char *pcstr = (char *)malloc(sizeof(char)*(2 * wcslen(t) + 1));
memset(pcstr, 0, 2 * wcslen(t) + 1);
w2c(pcstr, t, 2 * wcslen(t) + 1);
if (tc_strcmp(pcstr, val) == 0) {
const wchar_t * t2 = sheet->readStr(i, 3);
char *pcstr2 = (char *)malloc(sizeof(char)*(2 * wcslen(t2) + 1));
memset(pcstr2, 0, 2 * wcslen(t2) + 1);
w2c(pcstr2, t2, 2 * wcslen(t2) + 1);
cout << pcstr << "/tfind ckfj:" << pcstr2 << endl;
AOM_lock(form);
ITKCALL(AOM_set_value_string(form, "jd2_ckfj", pcstr2));
AOM_save(form);
AOM_unlock(form);
cout << "success" << endl;
book->release();
break;
}
free(pcstr);
}
}
}
}
}
}
return ITK_ok;
}

@ -0,0 +1,48 @@
#include "util.h"
int jd_rev_release(EPM_rule_message_t msg)
{
POM_AM__set_application_bypass(true);
tag_t root_task, *attachments, *boms, *xjxxds;
int att_cnt, bom_cnt, xjxxd_cnt;
char *object_string;
//获得根任务
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++)
{
AOM_ask_value_tags(attachments[i], "JD2_BGH", &xjxxd_cnt, &xjxxds);
//AOM_ask_value_tags(attachments[i], "FTH4xjxxdgx", &xjxxd_cnt, &xjxxds);
for (int i = 0; i < xjxxd_cnt; i++)
{
//零组件版本
if (isTypeOf(xjxxds[i], "ItemRevision"))
{
vector<tag_t> tags1(1, xjxxds[i]);
vector<int> types1(1, EPM_target_attachment);
EPM_add_attachments(root_task, 1, &tags1[0], &types1[0]);
AOM_ask_value_tags(xjxxds[i], "structure_revisions", &bom_cnt, &boms);
if (bom_cnt > 0)
{
//bom视图版本
for (int i = 0; i < bom_cnt; i++)
{
vector<tag_t> tags2(1, boms[i]);
vector<int> types2(1, EPM_target_attachment);
EPM_add_attachments(root_task, 1, &tags2[0], &types2[0]);
}
}
}
//版本表单
if (isTypeOf(xjxxds[i], "Form"))
{
vector<tag_t> tags3(1, xjxxds[i]);
vector<int> types3(1, EPM_target_attachment);
EPM_add_attachments(root_task, 1, &tags3[0], &types3[0]);
}
}
}
POM_AM__set_application_bypass(false);
return EPM_go;
}

@ -76,7 +76,7 @@ int jd_schedule_joint(EPM_action_message_t msg) {
printf("»ñÈ¡SCHDULEÈÎÎñ count =[%d] \n", count);
//printf("task_name:%s\n",task_name);
printf("task_name-------------\n");
if (count >0) {
if (count > 0) {
char * schdule_task_node_type = NULL;
AOM_ask_value_string(schdule_task_nodes[0], "object_type", &schdule_task_node_type);
@ -99,8 +99,8 @@ int jd_schedule_joint(EPM_action_message_t msg) {
int project_cnt;
char* project_name = NULL;
char* project_id = NULL;
AOM_ask_value_tags(schdule,"project_list",&project_cnt,&project_list);
if (project_list!=NULL) {
AOM_ask_value_tags(schdule, "project_list", &project_cnt, &project_list);
if (project_list != NULL) {
AOM_ask_value_string(project_list[0], "project_id", &project_id);
AOM_ask_value_string(project_list[0], "object_name", &project_name);
ss << job_name;
@ -111,9 +111,15 @@ int jd_schedule_joint(EPM_action_message_t msg) {
printf("new job name %s\n", ss.str().c_str());
AOM_lock(job);
printf("设置属性\n");
AOM_set_value_string(job, "object_name", ss.str().c_str());
cout << "更改所有者" << endl;
tag_t owning_user, group;
AOM_ask_value_tag(schdule, "owning_user", &owning_user);
SA_ask_user_login_group(owning_user, &group);
ITKCALL(AOM_set_ownership(job, owning_user, group));
//printf("str:%s\n", finish_date_str);
printf("设置属性\n");
AOM_save(job);
AOM_unlock(job);
}

@ -22,79 +22,39 @@ int jd_send_mail(EPM_action_message_t msg) {
if (att_cnt <= 0) {
return 0;
}
char target_str[2000];
char *target_str;
//PREF_refresh("jd2_task_target");
//PREF_ask_char_value("jd2_task_target", 0, &target_str);
//ITKCALL(AOM_refresh(root_task, false));
AOM_ask_value_string(root_task, "object_desc", &target_str);
vector<string> target_vec;
//AOM_ask_value_string(root_task, "jd2_task_target", &target_str);
ifstream in;
stringstream file_location;
file_location << getenv("temp");
file_location << "\\";
file_location << "jd2_task_target.txt";
in.open(file_location.str().c_str(), ios::in);
in >> target_str;
in.close();
//ifstream in;
//stringstream file_location;
//file_location << getenv("temp");
//file_location << "\\";
//file_location << "jd2_task_target.txt";
//in.open(file_location.str().c_str(), ios::in);
//in >> target_str;
//in.close();
printf("target_str====>%s\n", target_str);
if (tc_strlen(target_str) == 0) {
return EMH_store_error_s1(EMH_severity_error, EMH_AE_error_base, string("获取target内容异常,请检查handler:jd_get_target是否配置").c_str());;
}
//remove(file_location.str().c_str());
//char **p = (char **)malloc(sizeof(char *));
//p[0] = (char *)malloc(sizeof(char) * 10);
//p[0] = "";
//ITKCALL(PREF_set_char_values("jd2_task_target", 1, p));
//free(p);
split(target_str, ",", &target_vec);
for (int i = 0;i < target_vec.size();i++) {
for (int i = 0; i < target_vec.size(); i++) {
mail_content << target_vec[i].c_str();
mail_content << " ";
mail_content << paras["mail_para"];
mail_content << "\r\n";
}
//tag_t win;
//BOM_create_window(&win);
//for (int i = 0;i < att_cnt;i++) {
// if (isTypeOf(attachments[i], "Form")) {
// int rel_cnt, *levels;
// tag_t *rels, rev = NULLTAG, form;
// char **relations;
// form = attachments[i];
// WSOM_where_referenced2(form, 1, &rel_cnt, &levels, &rels, &relations);
// for (int j = 0;j < rel_cnt;j++) {
// printf("relations:%s\n", relations[j]);
// if (tc_strcmp(relations[j], "IMAN_master_form") == 0) {
// rev = rels[j];
// }
// }
// if (rev == NULLTAG) {
// printf("revision get error\n");
// continue;
// }
// char *item_id;
// AOM_ask_value_string(rev, "item_id", &item_id);
// char *rev_id;
// AOM_ask_value_string(rev, "item_revision_id", &rev_id);
// mail_content << item_id;
// mail_content << "/";
// mail_content << rev_id;
// mail_content << " ";
// mail_content << paras["mail_para"];
// mail_content << "\r\n";
// } else if (isTypeOf(attachments[i], "PSBOMViewRevision")) {
// tag_t top_line, rev;
// char *id;
// BOM_set_window_top_line_bvr(win, attachments[i], &top_line);
// if (top_line == NULLTAG)
// continue;
// AOM_ask_value_tag(top_line, "bl_line_object", &rev);
// if (rev == NULLTAG)
// continue;
// AOM_ask_value_string(rev, "item_id", &id);
// char *rev_id;
// AOM_ask_value_string(rev, "item_revision_id", &rev_id);
// mail_content << id;
// mail_content << "/";
// mail_content << rev_id;
// mail_content << " ";
// mail_content << paras["mail_para"];
// mail_content << "\r\n";
// }
//}
//BOM_close_window(win);
POM_AM__set_application_bypass(false);
vector<string> address, to_name, from_pref;
@ -110,13 +70,9 @@ int jd_send_mail(EPM_action_message_t msg) {
printf("from_user:%s\n", from_user);
for (int i = 0;i < pref_cnt;i++) {
for (int i = 0; i < pref_cnt; i++) {
split(pref_values[i], ":", &from_pref);
printf("pref:%s\n", pref_values[i]);
//if (tc_strcmp(from_user, from_pref[0].c_str()) == 0) {
// break;
//}
//from_pref.clear();
}
if (from_pref.size() == 0) {
@ -125,7 +81,6 @@ int jd_send_mail(EPM_action_message_t msg) {
}
CSendMail sMailer;
// freopen("F://mailfile//out.txt","w+",stdout);
sMailer.setServerName("smtp.mxhichina.com"); //邮箱smtp,如"smtp.126.com"
sMailer.setUserName("lvmh@jide.cn"); //邮箱账号名,如"****@126.com"

@ -0,0 +1,186 @@
#include "CSendMail.h"
#include "boost\algorithm\\string.hpp"
#include "util.h"
int jd_send_mail2(EPM_action_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);
TC_argument_list_t *arguments = msg.arguments;
int arg_cnt = TC_number_of_arguments(arguments);
map<string, string> paras;
for (auto i = 0; i < arg_cnt; i++) {
char *temp_key, *temp_val;
ITKCALL(ITK_ask_argument_named_value(TC_next_argument(arguments), &temp_key, &temp_val));
paras[temp_key] = temp_val;
}
tag_t parent_task, *signoffs;
vector<string> mail_address;
int signoff_cnt;
ITKCALL(EPM_ask_parent_task(msg.task, &parent_task));
ITKCALL(AOM_ask_value_tags(parent_task, "valid_signoffs", &signoff_cnt, &signoffs));
for (int i = 0; i < signoff_cnt; i++) {
tag_t user, person;
char *address;
AOM_ask_value_tag(signoffs[i], "fnd0Assignee", &user);
ITKCALL(SA_ask_user_person(user, &person));
ITKCALL(AOM_ask_value_string(person, "PA9", &address));
mail_address.push_back(address);
}
char *target_str;
//PREF_refresh("jd2_task_target2");
//PREF_ask_char_value("jd2_task_target2", 0, &target_str);
//ITKCALL(AOM_refresh(root_task, false));
ITKCALL(AOM_ask_value_string(root_task, "object_desc", &target_str));
//for (int i = 0; i < att_cnt; i++) {
// char *item_id, *item_revision_id;
// if (isTypeOf(attachments[i], "ItemRevision")) {
// ITK__convert_tag_to_uid(attachments[i], &target_str);
// break;
// }
//}
//vector<string> target_vec;
//ifstream in;
//stringstream file_location;
//file_location << getenv("temp");
//file_location << "\\";
//file_location << "jd2_task_target2.txt";
//in.open(file_location.str().c_str(), ios::in);
//in >> target_str;
//in.close();
printf("target_str====>%s\n", target_str);
if (tc_strlen(target_str) == 0) {
return EMH_store_error_s1(EMH_severity_error, EMH_AE_error_base, string("获取target内容异常,请检查handler:jd_get_target2是否配置").c_str());;
}
//remove(file_location.str().c_str());
//char **p = (char **)malloc(sizeof(char *));
//p[0] = (char *)malloc(sizeof(char) * 10);
//p[0] = "";
//ITKCALL(PREF_set_char_values("jd2_task_target2", 1, p));
//free(p);
vector<string> relations;
vector<string> file_types;
tag_t target = NULLTAG, excelx_tag, excel_tag, word_tag, wordx_tag, ppt_tag, pptx_tag;
vector<string> file_address;
map<string, vector<string>> pref_map;
char **pref_temp;
int pref_cnt;
PREF_ask_char_values("connor_default_dataset", &pref_cnt, &pref_temp);
for (int i = 0; i < pref_cnt; i++) {
string temp1 = string(pref_temp[i]).substr(0, string(pref_temp[i]).find_first_of("="));
string temp2 = string(pref_temp[i]).substr(string(pref_temp[i]).find_first_of("=") + 1);
vector<string> temp_vec;
split(temp2, ",", &temp_vec);
pref_map[temp1] = temp_vec;
}
//TCTYPE_find_type("MSExcel", "Dataset", &excel_tag);
//TCTYPE_find_type("MSExcelX", "Dataset", &excelx_tag);
//TCTYPE_find_type("MSWord", "Dataset", &word_tag);
//TCTYPE_find_type("MSWordX", "Dataset", &wordx_tag);
//TCTYPE_find_type("MSPowerPoint", "Dataset", &ppt_tag);
//TCTYPE_find_type("MSPowerPointX", "Dataset", &pptx_tag);
ITK__convert_uid_to_tag(target_str, &target);
if (target == NULLTAG) {
EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, "获取选中目标失败检查是否配置了jd_get_target2");
return 1;
}
else {
char *item_id;
AOM_ask_value_string(target, "item_id", &item_id);
cout << "item_id:" << item_id << endl;
}
split(paras["relation"], ",", &relations);
split(paras["suffix"], ",", &file_types);
for (int i = 0; i < relations.size(); i++) {
tag_t *dataset;
int dataset_cnt;
cout << relations[i].c_str() << endl;
AOM_ask_value_tags(target, relations[i].c_str(), &dataset_cnt, &dataset);
for (int ii = 0; ii < dataset_cnt; ii++) {
string temp = getenv("temp");
tag_t type;
char *file_name;
ITKCALL(AOM_UIF_ask_value(dataset[ii], "object_name", &file_name));
cout << "dataset file name:" << file_name << endl;
string suffix = string(file_name).substr(string(file_name).find_last_of(".") + 1);
//ITKCALL(TCTYPE_ask_object_type(dataset[ii], &type));
if (find(file_types.begin(), file_types.end(), suffix) != file_types.end() && pref_map.find(suffix) != pref_map.end()) {
temp.append("\\").append(file_name).c_str();
if (ACCESS(temp.c_str(), 0) == 0) {
cout << "delete exist file" << endl;
remove(temp.c_str());
}
ITKCALL(AE_export_named_ref(dataset[ii], pref_map[suffix][1].c_str(), temp.c_str()));
cout << "file path:" << temp.c_str() << endl;
file_address.push_back(temp);
}
//else if (type == excelx_tag&& find(file_types.begin(), file_types.end(), "xlsx") != file_types.end()) {
// ITKCALL(AOM_UIF_ask_value(dataset[ii], "object_name", &file_name));
// ITKCALL(AE_export_named_ref(dataset[ii], "excel", temp.append("\\").append(file_name).c_str()));
// cout << "file path:" << temp.c_str() << endl;
// file_address.push_back(temp);
//}
//else if (type == word_tag && find(file_types.begin(), file_types.end(), "doc") != file_types.end()) {
// ITKCALL(AOM_UIF_ask_value(dataset[ii], "object_name", &file_name));
// ITKCALL(AE_export_named_ref(dataset[ii], "word", temp.append("\\").append(file_name).c_str()));
// cout << "file path:" << temp.c_str() << endl;
// file_address.push_back(temp);
//}
//else if (type == wordx_tag&&find(file_types.begin(), file_types.end(), "docx") != file_types.end()) {
// ITKCALL(AOM_UIF_ask_value(dataset[ii], "object_name", &file_name));
// ITKCALL(AE_export_named_ref(dataset[ii], "word", temp.append("\\").append(file_name).c_str()));
// cout << "file path:" << temp.c_str() << endl;
// file_address.push_back(temp);
//}
//else if (type == ppt_tag && find(file_types.begin(), file_types.end(), "ppt") != file_types.end()) {
// ITKCALL(AOM_UIF_ask_value(dataset[ii], "object_name", &file_name));
// ITKCALL(AE_export_named_ref(dataset[ii], "powerpoint", temp.append("\\").append(file_name).c_str()));
// cout << "file path:" << temp.c_str() << endl;
// file_address.push_back(temp);
//}
//else if (type == pptx_tag&&find(file_types.begin(), file_types.end(), "pptx") != file_types.end()) {
// ITKCALL(AOM_UIF_ask_value(dataset[ii], "object_name", &file_name));
// ITKCALL(AE_export_named_ref(dataset[ii], "powerpoint", temp.append("\\").append(file_name).c_str()));
// cout << "file path:" << temp.c_str() << endl;
// file_address.push_back(temp);
//}
}
}
POM_AM__set_application_bypass(false);
CSendMail sMailer;
sMailer.setServerName("smtp.mxhichina.com");
sMailer.setUserName("lvmh@jide.cn");
sMailer.setUserPwd("lmh1995815.");
sMailer.setSenderName("PLM管理员");
sMailer.setSenderAddress("lvmh@jide.cn");
for (int i = 0; i < mail_address.size(); i++) {
tag_t user;
char *name;
AOM_ask_value_tag(signoffs[i], "fnd0Assignee", &user);
AOM_ask_value_string(user, "user_name", &name);
sMailer.addReceiver(name, mail_address[i]);
}
if (file_address.size() > 0) {
for (int i = 0; i < file_address.size(); i++) {
sMailer.AddFilePath(file_address[i].c_str());
}
}
if (sMailer.Connent()) {
if (sMailer.SendMail(paras["subject"], paras["content"]))
cout << "邮件发送成功" << endl;
}
if (file_address.size() > 0) {
for (int i = 0; i < file_address.size(); i++) {
remove(file_address[i].c_str());
}
}
//POM_AM__set_application_bypass(false);
return 0;
}

@ -1,55 +1,4 @@
#include "epm_handler_common.h"
#include <tc\tc_macros.h>
#include <tc\emh.h>
#include <tc\preferences.h>
#include <property\propdesc.h>
#include <epm\epm.h>
#include <epm\epm_toolkit_tc_utils.h>
#include <tccore\item.h>
#include <tccore\grmtype.h>
#include <tccore\grm.h>
#include <tccore\imantype.h>
#include <sa\am.h>
#include <sa\sa.h>
#include <tccore\aom.h>
#include <tccore\aom_prop.h>
#include <property\prop_errors.h>
#include <tccore\workspaceobject.h>
#include <qry\qry.h>
#include <bom\bom_attr.h>
#include <bom\bom.h>
#include <epm\signoff.h>
#include <pom\pom\pom.h>
#include <pom\pom\pom_errors.h>
#include <fclasses\tc_date.h>
#include <epm\cr.h>
#include <cfm\cfm.h>
#include <sa\am.h>
#include "tc/envelope.h"
#include <stdio.h>
#include "ae/dataset.h"
#include <ctype.h>
#include <string.h>
#include <string>
#include <iostream>
#include <iterator>
#include <map>
#include <vector>
#include "ce/ce.h"
#include <time.h>
#include <windows.h>
#include <iostream>
#include <sql.h>
#include <sqlext.h>
#include "string"
#include "sstream"
#include <sa/tcfile.h>
#include <tccore/aom.h>
#include <sa/tcfile_cache.h>
#include <form/form.h>
#include "ctime"
#include "tchar.h"
#include "jni.h"
#include "util.h"
#ifdef WIN32
#include <io.h>
@ -64,14 +13,6 @@
#define GUID_LEN 64
#ifdef WIN32
#define ACCESS(fileName,accessMode) _access(fileName,accessMode)
#define MKDIR(path) _mkdir(path)
#else
#define ACCESS(fileName,accessMode) access(fileName,accessMode)
#define MKDIR(path) mkdir(path,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)
#endif
#define LOCALJARPATH "D:\\Siemens\\Teamcenter12\\bin\\tc_extra_jar\\"
#define REMOTEJARPATH "D:\\app\\Siemens\\Teamcenter12\\bin\\tc_extra_jar\\"
@ -165,51 +106,51 @@ string GBKToUTF8(const char* strGBK) {
-path
-name
*/
static int sign(JNIEnv* env, jclass class_Test, const char* path, char* name, char* sign_location, char* sign_str) {
stringstream ss;
printf("signin\n");
jmethodID methodId_main = env->GetStaticMethodID(class_Test, "sign", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I");
if (methodId_main == NULL) {
printf("error, check jar location\n");
ss << "找不到sign2fileRunnable.jar 确认路径为:";
ss << REMOTEJARPATH;
EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, ss.str().c_str());
return 0;
}
string path1 = GBKToUTF8(path);
string name1 = GBKToUTF8(name);
string sign_location1 = GBKToUTF8(sign_location);
string sign_str1 = GBKToUTF8(sign_str);
jstring jpath = env->NewStringUTF(path1.c_str());
jstring jname = env->NewStringUTF(name1.c_str());
jstring jsign_location = env->NewStringUTF(sign_location1.c_str());
jstring jsign_str = env->NewStringUTF(sign_str1.c_str());
printf("path:%s\nname:%s\nsign_location:%s\nsign_str:%s\n", path1.c_str(), name1.c_str(), sign_location1.c_str(), sign_str1.c_str());
jint result = 0;
result = env->CallStaticIntMethod(class_Test, methodId_main, jpath, jname, jsign_location, jsign_str);
int res = result;
printf("result:%d\n", res);
printf("signout\n");
return res;
}
void add_path(JNIEnv* env, const std::string& path) {
const std::string urlPath = "file:/" + path;
jclass classLoaderCls = env->FindClass("java/lang/ClassLoader");
printf("111\n");
jmethodID getSystemClassLoaderMethod = env->GetStaticMethodID(classLoaderCls, "getSystemClassLoader", "()Ljava/lang/ClassLoader;");
jobject classLoaderInstance = env->CallStaticObjectMethod(classLoaderCls, getSystemClassLoaderMethod);
jclass urlClassLoaderCls = env->FindClass("java/net/URLClassLoader");
jmethodID addUrlMethod = env->GetMethodID(urlClassLoaderCls, "addURL", "(Ljava/net/URL;)V");
jclass urlCls = env->FindClass("java/net/URL");
jmethodID urlConstructor = env->GetMethodID(urlCls, "<init>", "(Ljava/lang/String;)V");
jobject urlInstance = env->NewObject(urlCls, urlConstructor, env->NewStringUTF(urlPath.c_str()));
env->CallVoidMethod(classLoaderInstance, addUrlMethod, urlInstance);
std::cout << "Added " << urlPath << " to the classpath." << std::endl;
}
//static int sign(JNIEnv* env, jclass class_Test, const char* path, char* name, char* sign_location, char* sign_str) {
// stringstream ss;
// printf("signin\n");
// jmethodID methodId_main = env->GetStaticMethodID(class_Test, "sign", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I");
// if (methodId_main == NULL) {
// printf("error, check jar location\n");
// ss << "找不到sign2fileRunnable.jar 确认路径为:";
// ss << REMOTEJARPATH;
// EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, ss.str().c_str());
// return 0;
// }
// string path1 = GBKToUTF8(path);
// string name1 = GBKToUTF8(name);
// string sign_location1 = GBKToUTF8(sign_location);
// string sign_str1 = GBKToUTF8(sign_str);
// jstring jpath = env->NewStringUTF(path1.c_str());
// jstring jname = env->NewStringUTF(name1.c_str());
// jstring jsign_location = env->NewStringUTF(sign_location1.c_str());
// jstring jsign_str = env->NewStringUTF(sign_str1.c_str());
// printf("path:%s\nname:%s\nsign_location:%s\nsign_str:%s\n", path1.c_str(), name1.c_str(), sign_location1.c_str(), sign_str1.c_str());
// jint result = 0;
// result = env->CallStaticIntMethod(class_Test, methodId_main, jpath, jname, jsign_location, jsign_str);
// int res = result;
// printf("result:%d\n", res);
// printf("signout\n");
// return res;
//}
//
//void add_path(JNIEnv* env, const std::string& path) {
// const std::string urlPath = "file:/" + path;
// jclass classLoaderCls = env->FindClass("java/lang/ClassLoader");
// printf("111\n");
// jmethodID getSystemClassLoaderMethod = env->GetStaticMethodID(classLoaderCls, "getSystemClassLoader", "()Ljava/lang/ClassLoader;");
// jobject classLoaderInstance = env->CallStaticObjectMethod(classLoaderCls, getSystemClassLoaderMethod);
// jclass urlClassLoaderCls = env->FindClass("java/net/URLClassLoader");
// jmethodID addUrlMethod = env->GetMethodID(urlClassLoaderCls, "addURL", "(Ljava/net/URL;)V");
// jclass urlCls = env->FindClass("java/net/URL");
// jmethodID urlConstructor = env->GetMethodID(urlCls, "<init>", "(Ljava/lang/String;)V");
// jobject urlInstance = env->NewObject(urlCls, urlConstructor, env->NewStringUTF(urlPath.c_str()));
// env->CallVoidMethod(classLoaderInstance, addUrlMethod, urlInstance);
// std::cout << "Added " << urlPath << " to the classpath." << std::endl;
//}
bool find(int prop_cnt, char** props, char* prop) {
for (int i = 0;i < prop_cnt;i++) {
for (int i = 0; i < prop_cnt; i++) {
if (tc_strcmp(props[i], prop) == 0) {
return true;
}
@ -301,7 +242,7 @@ int jd_signoff(EPM_action_message_t msg) {
PREF_ask_char_values("jd2_signoff_list", &pref_count, &pref_values);
flag = false;
stringstream temps;
for (int i = 0;i < pref_count;i++) {
for (int i = 0; i < pref_count; i++) {
printf("signoff:%s\n", pref_values[i]);
temps << pref_values[i];
temps << ",";
@ -371,64 +312,66 @@ int jd_signoff(EPM_action_message_t msg) {
//}
//printf("after load jvm\n");
wstringstream wss;
wss << getenv("JRE_HOME") << "\\bin\\server\\jvm.dll";
JavaVMInitArgs vmArgs;
const int OPTION_COUNT = 1;
vmArgs.nOptions = OPTION_COUNT;
JavaVMOption options[OPTION_COUNT] = { 0 };
options[0].optionString = "-Xmx1024m";
vmArgs.options = options;
vmArgs.version = JNI_VERSION_1_8;
vmArgs.ignoreUnrecognized = JNI_TRUE;
printf("before load dll\n");
HMODULE hModule = LoadLibrary(wss.str().c_str());
if (hModule == NULL) {
printf("error load dll");
return -1;
}
printf("after load dll\n");
typedef jint(JNICALL *CreateJavaVMFuncPtr)(JavaVM **pvm, void **penv, void *args);
CreateJavaVMFuncPtr CreateJavaVM = (CreateJavaVMFuncPtr)GetProcAddress(hModule, "JNI_CreateJavaVM");
typedef jint(JNICALL * GetCreatedJavaVMs)(JavaVM**, jsize, jsize*);
GetCreatedJavaVMs jni_GetCreatedJavaVMs;
jni_GetCreatedJavaVMs = (GetCreatedJavaVMs)GetProcAddress(GetModuleHandle(
TEXT("jvm.dll")), "JNI_GetCreatedJavaVMs");
JavaVM *jvm = nullptr, *jvms;
JNIEnv *env = nullptr;
jsize size = 0;
jni_GetCreatedJavaVMs(&jvms, 0, &size);
printf("before load jvm\n");
if (size) {
JavaVM** buffer = new JavaVM*[size];
jni_GetCreatedJavaVMs(buffer, size, &size);
buffer[0]->GetEnv((void**)&env, JNI_VERSION_1_8);
jint result = buffer[0]->AttachCurrentThread((void**)&env, NULL);
} else {
jint res = (*CreateJavaVM)(&jvm, (void**)&env, &vmArgs);
if (res < 0) {
printf("error load jvm");
return -1;
}
}
//wstringstream wss;
//wss << getenv("JRE_HOME") << "\\bin\\server\\jvm.dll";
//JavaVMInitArgs vmArgs;
//const int OPTION_COUNT = 1;
//vmArgs.nOptions = OPTION_COUNT;
//JavaVMOption options[OPTION_COUNT] = { 0 };
//options[0].optionString = "-Xmx1024m";
//vmArgs.options = options;
//vmArgs.version = JNI_VERSION_1_8;
//vmArgs.ignoreUnrecognized = JNI_TRUE;
//printf("before load dll\n");
//HMODULE hModule = LoadLibrary(wss.str().c_str());
//if (hModule == NULL) {
// printf("error load dll");
// return -1;
//}
//printf("after load dll\n");
//typedef jint(JNICALL *CreateJavaVMFuncPtr)(JavaVM **pvm, void **penv, void *args);
//CreateJavaVMFuncPtr CreateJavaVM = (CreateJavaVMFuncPtr)GetProcAddress(hModule, "JNI_CreateJavaVM");
//typedef jint(JNICALL * GetCreatedJavaVMs)(JavaVM**, jsize, jsize*);
//GetCreatedJavaVMs jni_GetCreatedJavaVMs;
//jni_GetCreatedJavaVMs = (GetCreatedJavaVMs)GetProcAddress(GetModuleHandle(
// TEXT("jvm.dll")), "JNI_GetCreatedJavaVMs");
//JavaVM *jvm = nullptr, *jvms;
//JNIEnv *env = nullptr;
//jsize size = 0;
//jni_GetCreatedJavaVMs(&jvms, 0, &size);
//printf("before load jvm\n");
//if (size) {
// JavaVM** buffer = new JavaVM*[size];
// jni_GetCreatedJavaVMs(buffer, size, &size);
// buffer[0]->GetEnv((void**)&env, JNI_VERSION_1_8);
// jint result = buffer[0]->AttachCurrentThread((void**)&env, NULL);
//}
//else {
// jint res = (*CreateJavaVM)(&jvm, (void**)&env, &vmArgs);
// if (res < 0) {
// printf("error load jvm");
// return -1;
// }
//}
printf("after load jvm\n");
//printf("after load jvm\n");
stringstream s;
stringstream jar_path;
if (ACCESS(LOCALJARPATH, 0) != 0) {
s << REMOTEJARPATH;
s << "sign2fileRunnable.jar";
add_path(env, s.str().c_str());
} else {
s << LOCALJARPATH;
s << "sign2fileRunnable.jar";
add_path(env, s.str().c_str());
jar_path << REMOTEJARPATH;
jar_path << "sign2fileRunnable.jar";
//add_path(env, s.str().c_str());
}
else {
jar_path << LOCALJARPATH;
jar_path << "sign2fileRunnable.jar";
//add_path(env, s.str().c_str());
}
printf("add path\n");
jclass class_Test;
//jclass class_Test;
int file_type = -1;
printf("user_name:%s\n", user_name);
@ -447,7 +390,7 @@ int jd_signoff(EPM_action_message_t msg) {
if (tc_strcmp(task_type, "EPMSelectSignoffTask") == 0 || tc_strcmp(task_type, "EPMPerformSignoffTask") == 0) {
AOM_ask_value_tags(msg.task, "valid_signoffs", &valid_signoffs_cnt, &valid_signoffs);
cout << "valid_signoffs_cnt:" << valid_signoffs_cnt << endl;
for (int i = 0;i < valid_signoffs_cnt;i++) {
for (int i = 0; i < valid_signoffs_cnt; i++) {
char *res;
AOM_ask_value_string(valid_signoffs[i], "fnd0Status", &res);
if (tc_strcmp(res, "批准") == 0) {
@ -459,7 +402,8 @@ int jd_signoff(EPM_action_message_t msg) {
new_name << name << ",";
}
}
} else {
}
else {
new_name << user_name << ",";
}
@ -471,31 +415,36 @@ int jd_signoff(EPM_action_message_t msg) {
ITKCALL(AOM_ask_prop_names(objects[iii], &prop_cnt, &prop_names));
AOM_lock(objects[iii]);
if (strcmp("clear", sign_location) == 0) {
for (int i = 0;i < pref_count;i++) {
for (int i = 0; i < pref_count; i++) {
sign_date.str("");
sign_date << pref_values[i];
sign_date << "rq";
if (find(prop_cnt, prop_names, pref_values[i])) {
ITKCALL(AOM_set_value_string(objects[iii], pref_values[i], ""));
} else {
}
else {
printf("属性\"%s\"不存在", pref_values[i]);
}
if (find(prop_cnt, prop_names, (char*)sign_date.str().c_str())) {
ITKCALL(AOM_set_value_string(objects[iii], sign_date.str().c_str(), ""));
} else {
}
else {
printf("属性\"%s\"不存在", sign_date.str().c_str());
}
}
printf("sign clear\n");
} else {
}
else {
if (find(prop_cnt, prop_names, (char*)sign_location)) {
ITKCALL(AOM_set_value_string(objects[iii], sign_location, signoff_name.c_str()));
} else {
}
else {
printf("属性\"%s\"不存在", sign_location);
}
if (find(prop_cnt, prop_names, (char*)sign_date.str().c_str())) {
ITKCALL(AOM_set_value_string(objects[iii], sign_date.str().c_str(), date.str().c_str()));
} else {
}
else {
printf("属性\"%s\"不存在", sign_date.str().c_str());
}
printf("%s,%s signoff\n", sign_location, sign_date.str().c_str());
@ -508,7 +457,7 @@ int jd_signoff(EPM_action_message_t msg) {
printf("startSign\n");
ITKCALL(AOM_ask_value_tags(attachments[ii], "IMAN_specification", &n_attachs, &dataset));
for (int i = 0;i < n_attachs;i++) {
for (int i = 0; i < n_attachs; i++) {
stringstream ss;
ss << dir.str().c_str();
printf(ss.str().c_str());
@ -523,7 +472,8 @@ int jd_signoff(EPM_action_message_t msg) {
printf("path:%s\n", ss.str().c_str());
ITKCALL(AE_export_named_ref(dataset[i], "word", ss.str().c_str()));
file_type = 0;
} else if (type_tag == excel_tag || type_tag == excelx_tag) {
}
else if (type_tag == excel_tag || type_tag == excelx_tag) {
ITKCALL(AE_ask_dataset_named_ref2(dataset[i], "excel", &ae_ref, &excel_ref));
char *file_name;
ITKCALL(AOM_UIF_ask_value(excel_ref, "file_name", &file_name));
@ -535,29 +485,47 @@ int jd_signoff(EPM_action_message_t msg) {
file_type = 1;
}
stringstream command;
command << "java -jar ";
command << jar_path.str().c_str();
command << " ";
command << ss.str().c_str();
command << " ";
command << signoff_name.c_str();
command << " ";
command << sign_location;
command << " ";
command << temps.str().c_str();
printf("file_type:%d\n", file_type);
if (file_type == 0) {
class_Test = env->FindClass("sign2file/SignToWord");
int res = sign(env, class_Test, ss.str().c_str(), (char *)signoff_name.c_str(), (char*)sign_location, (char*)temps.str().c_str());
if (res) {
//class_Test = env->FindClass("sign2file/SignToWord");
//int res = sign(env, class_Test, ss.str().c_str(), (char *)signoff_name.c_str(), (char*)sign_location, (char*)temps.str().c_str());
//if (res) {
system(command.str().c_str());
replace_dataset_named_reference(dataset[i], word_ref, ss.str().c_str(), "word");
} else {
return -1;
//}
//else {
//return -1;
//}
}
} else if (file_type == 1) {
class_Test = env->FindClass("sign2file/SignToExcel");
int res = sign(env, class_Test, ss.str().c_str(), (char *)signoff_name.c_str(), (char*)sign_location, (char*)temps.str().c_str());
if (res) {
else if (file_type == 1) {
//class_Test = env->FindClass("sign2file/SignToExcel");
//int res = sign(env, class_Test, ss.str().c_str(), (char *)signoff_name.c_str(), (char*)sign_location, (char*)temps.str().c_str());
//if (res) {
system(command.str().c_str());
replace_dataset_named_reference(dataset[i], excel_ref, ss.str().c_str(), "excel");
} else {
return -1;
}
//}
//else {
//return -1;
//}
}
command.str("");
command.clear();
file_type = -1;
}
MEM_free(dataset);
AOM_ask_value_tags(attachments[ii], "TC_Attaches", &n_attachs, &dataset);
for (int i = 0;i < n_attachs;i++) {
for (int i = 0; i < n_attachs; i++) {
stringstream ss;
ss << dir.str().c_str();
ITKCALL(TCTYPE_ask_object_type(dataset[i], &type_tag));
@ -571,7 +539,8 @@ int jd_signoff(EPM_action_message_t msg) {
printf("path:%s\n", ss.str().c_str());
ITKCALL(AE_export_named_ref(dataset[i], "word", ss.str().c_str()));
file_type = 0;
} else if (type_tag == excel_tag || type_tag == excelx_tag) {
}
else if (type_tag == excel_tag || type_tag == excelx_tag) {
ITKCALL(AE_ask_dataset_named_ref2(dataset[i], "excel", &ae_ref, &excel_ref));
char *file_name;
ITKCALL(AOM_UIF_ask_value(excel_ref, "file_name", &file_name));
@ -583,24 +552,44 @@ int jd_signoff(EPM_action_message_t msg) {
file_type = 1;
}
stringstream command;
command << "java -jar ";
command << jar_path.str().c_str();
command << " ";
command << ss.str().c_str();
command << " ";
command << signoff_name.c_str();
command << " ";
command << sign_location;
command << " ";
command << temps.str().c_str();
printf("file_type:%d\n", file_type);
if (file_type == 0) {
class_Test = env->FindClass("sign2file/SignToWord");
int res = sign(env, class_Test, ss.str().c_str(), (char *)signoff_name.c_str(), (char*)sign_location, (char*)temps.str().c_str());
if (res) {
//class_Test = env->FindClass("sign2file/SignToWord");
//int res = sign(env, class_Test, ss.str().c_str(), (char *)signoff_name.c_str(), (char*)sign_location, (char*)temps.str().c_str());
//if (res) {
cout << command.str().c_str() << endl;
system(command.str().c_str());
replace_dataset_named_reference(dataset[i], word_ref, ss.str().c_str(), "word");
} else {
return -1;
//}
//else {
//return -1;
//}
}
} else if (file_type == 1) {
class_Test = env->FindClass("sign2file/SignToExcel");
int res = sign(env, class_Test, ss.str().c_str(), (char *)signoff_name.c_str(), (char*)sign_location, (char*)temps.str().c_str());
if (res) {
else if (file_type == 1) {
//class_Test = env->FindClass("sign2file/SignToExcel");
//int res = sign(env, class_Test, ss.str().c_str(), (char *)signoff_name.c_str(), (char*)sign_location, (char*)temps.str().c_str());
//if (res) {
cout << command.str().c_str() << endl;
system(command.str().c_str());
replace_dataset_named_reference(dataset[i], excel_ref, ss.str().c_str(), "excel");
} else {
return -1;
}
//}
//else {
//return -1;
//}
}
command.str("");
command.clear();
file_type = -1;
}
new_name.str("");
@ -610,7 +599,7 @@ int jd_signoff(EPM_action_message_t msg) {
}
}
FreeLibrary(hModule);
//FreeLibrary(hModule);
POM_AM__set_application_bypass(false);
return 0;

@ -0,0 +1,23 @@
#include "util.h"
int jd_splicing_task(EPM_action_message_t msg) {
POM_AM__set_application_bypass(true);
tag_t root_task;
EPM_ask_root_task(msg.task, &root_task);
char* task_name;
AOM_ask_value_string(root_task, "object_name", &task_name);
cout << "task_name:" << task_name << endl;
tag_t job;
EPM_ask_job(msg.task, &job);
char* job_name;
AOM_ask_value_string(job, "object_name", &job_name);
cout << "job_name:" << job_name << endl;
string new_name = string(job_name).append(" ").append(task_name);
cout << "new_name:" << new_name.c_str() << endl;
AOM_lock(job);
AOM_set_value_string(job, "object_name", new_name.c_str());
AOM_save(job);
AOM_unlock(job);
POM_AM__set_application_bypass(false);
return ITK_ok;
}

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

@ -59,3 +59,93 @@ const char* newGUID()
return (const char*)buf;
}
#ifdef _WIN32
#include <windows.h>
string GbkToUtf8(const char *src_str) {
int len = MultiByteToWideChar(CP_ACP, 0, src_str, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len + 1];
memset(wstr, 0, len + 1);
MultiByteToWideChar(CP_ACP, 0, src_str, -1, wstr, len);
len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len + 1];
memset(str, 0, len + 1);
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
string strTemp = str;
if (wstr) delete[] wstr;
if (str) delete[] str;
return strTemp;
}
string Utf8ToGbk(const char *src_str) {
int len = MultiByteToWideChar(CP_UTF8, 0, src_str, -1, NULL, 0);
wchar_t* wszGBK = new wchar_t[len + 1];
memset(wszGBK, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, src_str, -1, wszGBK, len);
len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
char* szGBK = new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, szGBK, len, NULL, NULL);
string strTemp(szGBK);
if (wszGBK) delete[] wszGBK;
if (szGBK) delete[] szGBK;
return strTemp;
}
#else
#include <iconv.h>
int GbkToUtf8(char *str_str, size_t src_len, char *dst_str, size_t dst_len) {
iconv_t cd;
char **pin = &str_str;
char **pout = &dst_str;
cd = iconv_open("utf8", "gbk");
if (cd == 0)
return -1;
memset(dst_str, 0, dst_len);
if (iconv(cd, pin, &src_len, pout, &dst_len) == -1)
return -1;
iconv_close(cd);
*pout = '\0';
return 0;
}
int Utf8ToGbk(char *src_str, size_t src_len, char *dst_str, size_t dst_len) {
iconv_t cd;
char **pin = &src_str;
char **pout = &dst_str;
cd = iconv_open("gbk", "utf8");
if (cd == 0)
return -1;
memset(dst_str, 0, dst_len);
if (iconv(cd, pin, &src_len, pout, &dst_len) == -1)
return -1;
iconv_close(cd);
*pout = '\0';
return 0;
}
#endif
const wchar_t* stringToWchar(const std::string& str)
{
LPCSTR pszSrc = str.c_str();
int nLen = MultiByteToWideChar(CP_ACP, 0, pszSrc, -1, NULL, 0);
if (nLen == 0)
return std::wstring(L"").c_str();
wchar_t* pwszDst = new wchar_t[nLen];
if (!pwszDst)
return std::wstring(L"").c_str();
MultiByteToWideChar(CP_ACP, 0, pszSrc, -1, pwszDst, nLen);
std::wstring wstr(pwszDst);
delete[] pwszDst;
pwszDst = NULL;
return wstr.c_str();
}

@ -52,6 +52,8 @@
#include "ics/ics.h"
#include "ics/ics2.h"
#include <fstream>
#include <io.h>
#include <stdlib.h>
#using "./declib.dll"
using namespace std;
@ -59,11 +61,19 @@ using namespace Testdll;
using namespace System;
extern "C" int POM_AM__set_application_bypass(logical bypass);
#ifdef WIN32
#define ACCESS(fileName,accessMode) _access(fileName,accessMode)
#define MKDIR(path) _mkdir(path)
#else
#define ACCESS(fileName,accessMode) access(fileName,accessMode)
#define MKDIR(path) mkdir(path,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)
#endif
string ConvertToString(System::String^ str);
System::String ^ convert_to_cstring(const char *p);
bool isTypeOf(tag_t objtag, const char * type_name);
void split(std::string s, const char* delim, std::vector<std::string>* ret);
string GbkToUtf8(const char *src_str);
string Utf8ToGbk(const char *src_str);
const wchar_t* stringToWchar(const std::string& str);
const char* newGUID();

@ -1,13 +1,13 @@
e:\work\vs_workspace\jditk\hezon_itk\x64\release\vc140.pdb
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_prop_relate.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_get_target2.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\jd_auto_revise.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
@ -19,13 +19,19 @@ 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_rev_release.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_splicing_task.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_send_mail2.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\.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

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save