Compare commits

...

77 Commits

Author SHA1 Message Date
熊朝柱 972dfc025f commit
2 weeks ago
王辰 7b752b108c 1
2 years ago
zouxk 9d3f4e42d6 发送邮件,拼接信息,属性自动更改等
5 years ago
zouxk a53067aa7c 8/11 最新已合并
5 years ago
zouxk f145efb846 bom传递判断
5 years ago
zouxk dd6137ddda 合并整理
5 years ago
zouxk bce2b87039 Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
5 years ago
李岩峰 9cec5b3be0 Merge branch 'master' of http://plmserver.cn:3000/jd/itk
5 years ago
李岩峰 4ab9bd0d4f 重复id判断
5 years ago
connor_test bf7e1742db 物料描述 长度判断 解决中文一个字符
5 years ago
zouxk 17862e083a Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
5 years ago
zouxk 615bbbd655 判断wlms长度
5 years ago
zouxk 8bd4d894bb Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
5 years ago
zouxk dcc7c6f0d1 5/26 邮件
5 years ago
zouxk 40570af6db Merge commit '083bb5d143a238c93254fb51d2477d1ab79de2c9' into zxk
5 years ago
zouxk c2dff8ef7a Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
5 years ago
zouxk 083bb5d143 On zxk: other
5 years ago
zouxk 3c636d0647 index on zxk: ddfec87 5/22
5 years ago
zouxk ddfec8755d 5/22
5 years ago
zouxk 4688dcce4a 添加 check 99 rule handler
5 years ago
zouxk 4be5ef110a Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
5 years ago
zouxk 8868b92936 99check
5 years ago
zouxk c114a2f0a4 5/14
5 years ago
zouxk dfb654c793 Merge remote-tracking branch 'refs/remotes/origin/master'
5 years ago
zouxk 5965edcfb4 5/13
5 years ago
zouxk 3e8539443c 合并5/21
5 years ago
zouxk 766968e1fd Merge remote-tracking branch 'refs/remotes/origin/master'
5 years ago
zouxk 7ae765396f 5/7
5 years ago
邹旭科 8d07c90a0d Merge pull request '批量发布流程' (#6) from zxk into master
5 years ago
zouxk 8b6825c116 4/26
5 years ago
zouxk d0e40460e5 Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
5 years ago
zouxk dcfbfb7d9e 4/24
5 years ago
李岩峰 9d6ea9f476 Rule->Action
5 years ago
李岩峰 6e706c10ad 修改了SAP传递 http://plmserver.cn:3000/jd/plm/issues/69
5 years ago
邹旭科 46e7bee588 Merge pull request '4/22 批量发起流程(有问题),流程对象添加' (#5) from zxk into master
5 years ago
zouxk 78771e699d Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
5 years ago
zouxk c05b16986f a/22
5 years ago
李岩峰 d07cdd5f67 Merge branch 'master' of http://plmserver.cn:3000/jd/itk
5 years ago
李岩峰 8b0356e4fb 修改检验发布的方式
5 years ago
zouxk 35ddf4a071 batch process
5 years ago
邹旭科 bc56b0b214 Merge pull request '4/9' (#4) from zxk into master
5 years ago
zouxk fcba6aeebb 4/9
5 years ago
邹旭科 14129f5094 Merge pull request 'zxk' (#3) from zxk into master
5 years ago
zouxk 6b6fec8697 Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
5 years ago
李岩峰 31fc859a69 更新传递方式
5 years ago
zouxk 145163d001 Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
5 years ago
zouxk 2cefc8d66c 3/20
5 years ago
李岩峰 75d75317d3 新增发布状态检查
5 years ago
李岩峰 5d25b74fe1 sap传递 bom保存更改
5 years ago
李岩峰 3f0b1d7bb0 BUG修复
5 years ago
李岩峰 419c133e31 Merge branch 'master' of http://plmserver.cn:3000/jd/itk
5 years ago
李岩峰 1ef46fed69 增加测试报告检测
5 years ago
zouxk 6fdf3ad45e Merge branch 'zxk' of jd/itk into master
5 years ago
zouxk 3f8ae907e1 2020/1/16 合并
5 years ago
zouxk d83392d2b1 Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
6 years ago
李岩峰 641238ca06 sap变更
6 years ago
李岩峰 289c91a45f sap传递更改
6 years ago
李岩峰 5b10ba7a0d 更改sap字段
6 years ago
zouxk 7c515db8a4 Merge remote-tracking branch 'refs/remotes/origin/master'
6 years ago
zouxk 604b8dc025 吉德签名完成
6 years ago
李岩峰 25b89805a7 sap传递添加错误提示
6 years ago
zouxk 375e610cdc Merge branch 'master' of http://plmserver.cn:3000/jd/itk into zxk
6 years ago
zouxk 6b23fc4c9d jd_signoff更改流程参数形式
6 years ago
李岩峰 18b38f1a0b 修改cad签名方式
6 years ago
zouxk 2e2b2c4a8b Merge branch 'zxk' of jd/itk into master
6 years ago
zouxk 4b3af548af 合并
6 years ago
zouxk 1659104a26 删除db
6 years ago
zouxk d4dbe88a11 12.24还原
6 years ago
zouxk df99813d25 表单签名
6 years ago
李岩峰 7630162419 BUG修改
6 years ago
zouxk 2bfc5f3f22 版本文件签名,升版清空域(有问题)
6 years ago
zouxk db5df65f49 版本表单签名完成
6 years ago
zouxk 1ae39b72b0 分支更新
6 years ago
李岩峰 ffede8be10 更新 '.gitignore'
6 years ago
李岩峰 c0afc53e90 delete misc
6 years ago
李岩峰 a4a7a30cb1 initial commit
6 years ago
jd 9f2764d880 Initial commit
6 years ago

8
.gitignore vendored

@ -367,3 +367,11 @@ ASALocalRun/
.localhistory/
HEZON_ITK/x64/
HEZON_ITK/HEZON_ITK.vcxproj
HEZON_ITK/HEZON_ITK.vcxproj.filters
HEZON_ITK/bs_sap.cpp.orig
HEZON_ITK/epm_handler_common.h.orig
HEZON_ITK/epm_register_handler.cxx.orig
HEZON_ITK/HEZON_ITK.vcxproj.filters~9cec5b3be0639e60437e0ba1a3035139d8301c0a
HEZON_ITK/HEZON_ITK.vcxproj~9cec5b3be0639e60437e0ba1a3035139d8301c0a
HEZON_ITK/jd_check_wlms_len.cpp.orig

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,479 @@
/*
**CSendMail
**
**program by six_beauty
*/
//#include <afx.h>
#include "CSendMail.h"
#include "time.h"
#include <sstream>
#include <fstream>
#pragma comment(lib,"WSOCK32")
#pragma comment(lib, "ws2_32")
const std::string _AppOctStrmContent_encode_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
//类的实现
CSendMail::CSendMail(void) { }
CSendMail::~CSendMail(void) {
clearReceiver();
DeleteAllPath();
}
//连接
bool CSendMail::Connent() {
//邮件信息设置判断
if (m_ServerName.empty() || m_UserName.empty() || m_UserPwd.empty()) {
m_logInfo.logInfo("Connect 失败,请先设置邮件登陆信息!");
return false;
}
if (!CReateSocket())//建立连接
{
m_logInfo.logInfo("建立连接失败!");
return false;
}
if (!Logon())//建立连接
{
m_logInfo.logInfo("登陆失败!");
return false;
}
return true;
}
//发送邮件的函数送
bool CSendMail::SendMail(const std::string mail_title, const std::string send_content) {
//参数赋值
m_MailTitle = mail_title;
m_TextBody = send_content;
if (m_SenderName.empty() || m_SenderAddr.empty() || m_Receivers.empty()) {
m_logInfo.logInfo("[SendMail]邮件参数设置错误,请检查邮件发送设置信息是否完整!");
return false;
}
if (!SendHead())//发送邮件头
{
m_logInfo.logInfo("发送邮件头失败!");
return false;
}
if (!SendTextBody())//发送邮件文本部分
{
return false;
}
if (!SendFileBody())//发送附件
{
return false;
}
if (!SendEnd())//结束邮件并关闭sock
{
return false;
}
return true;
}
////////////////////////////////////////////设置邮件信息/////////////////////////////////////////////////////////////////////
void CSendMail::setServerName(const std::string server_name) //smtp服务器地址
{
m_ServerName = server_name;
}
void CSendMail::setUserName(const std::string user_name) //邮箱用户名
{
m_UserName = user_name;
}
void CSendMail::setUserPwd(const std::string user_pwd) //邮箱用户密码
{
m_UserPwd = user_pwd;
}
void CSendMail::setSenderName(const std::string sender_name) //发送者的名字
{
m_SenderName = sender_name;
}
void CSendMail::setSenderAddress(const std::string sender_addr) //发送者的邮箱(mail form:)
{
m_SenderAddr = sender_addr;
}
void CSendMail::addReceiver(const std::string name, const std::string address) {
m_Receivers.insert(RECEIVERS::value_type(name, address));
}
void CSendMail::setReceiver(const std::string name, const std::string address) {
m_Receivers.clear();
m_Receivers.insert(RECEIVERS::value_type(name, address));
}
void CSendMail::clearReceiver() {
m_Receivers.clear();
}
void CSendMail::AddFilePath(std::string szFilePath)//添加附件路径
{
for (std::list<std::string>::iterator itrList = m_FilePathList.begin();itrList != m_FilePathList.end();++itrList) {
if (itrList->compare(szFilePath) == 0) {
//已经存在
return;
}
}
//还未加入
m_FilePathList.push_back(szFilePath);
}
void CSendMail::DeleteFilePath(std::string szFilePath)//删除附件路径
{
for (std::list<std::string>::iterator itrList = m_FilePathList.begin();itrList != m_FilePathList.end();) {
if (itrList->compare(szFilePath) == 0) {
itrList = m_FilePathList.erase(itrList);
} else {
itrList++;
}
}
}
void CSendMail::DeleteAllPath(void) {
m_FilePathList.clear();
}
////////////////////////////////////////////功能函数///////////////////////////////////////////////////////////////////
//实现CString的Replace
string& CSendMail::replace_all(string& str, const string& old_value, const string& new_value) {
while (true) {
string::size_type pos(0);
if ((pos = str.find(old_value)) != string::npos)
str.replace(pos, old_value.length(), new_value);
else
break;
}
return str;
}
//从附件的路径中获取文件名称
std::string CSendMail::GetFileName(std::string &szFilePath) {
replace_all(szFilePath, "/", "\\");
string szFileName = szFilePath.substr(szFilePath.rfind("\\") + 1, szFilePath.length());
return szFileName;
}
//以字符形式读入附件内容
std::string CSendMail::GetFileData(std::string szFilePath) {
std::string szBuffer;
if (szFilePath.empty()) {
m_logInfo.logInfo("[SendFileBody]Error:附件路径为空!");
return szBuffer;
}
ifstream ifFile(szFilePath.c_str(), ios::binary | ios::in);
if (!ifFile) {
m_logInfo.logInfo("[SendFileBody]Error:打开附件路径错误!");
return szBuffer;
}
ifFile.seekg(0, ios::beg);
std::ostringstream tmp;
tmp << ifFile.rdbuf();
szBuffer = tmp.str();
ifFile.close();
return szBuffer;
}
//把char类型转换成Base64类型
std::string CSendMail::Base64Encode(std::string in_str) {
std::string out_str;
unsigned char c1, c2, c3;
int i = 0;
int len = in_str.length();
while (i<len) {
// read the first byte
c1 = in_str[i++];
if (i == len) // pad with "="
{
out_str += _AppOctStrmContent_encode_chars[c1 >> 2];
out_str += _AppOctStrmContent_encode_chars[(c1 & 0x3) << 4];
out_str += "==";
break;
}
// read the second byte
c2 = in_str[i++];
if (i == len) // pad with "="
{
out_str += _AppOctStrmContent_encode_chars[c1 >> 2];
out_str += _AppOctStrmContent_encode_chars[((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)];
out_str += _AppOctStrmContent_encode_chars[(c2 & 0xF) << 2];
out_str += "=";
break;
}
// read the third byte
c3 = in_str[i++];
// convert into four bytes string
out_str += _AppOctStrmContent_encode_chars[c1 >> 2];
out_str += _AppOctStrmContent_encode_chars[((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)];
out_str += _AppOctStrmContent_encode_chars[((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)];
out_str += _AppOctStrmContent_encode_chars[c3 & 0x3F];
}
return out_str;
}
int CSendMail::sendRequest(const std::string content, bool bout) {
int len_s = send(_socket, content.c_str(), content.length(), 0);
if (len_s < 0) {
m_logInfo.logInfo("[ERROR]SEND:%s", content.c_str());
return false;
}
//输出信息
if (bout) {
m_logInfo.logInfo("[INFO]SEND:%s", content.c_str());
}
return len_s;
}
bool CSendMail::rcvResponse(const std::string expected_response) {
int recv_bytes = 0;
char response_buffer[MAX_BUFFER_SIZE];
if ((recv_bytes = recv(_socket, response_buffer, MAX_BUFFER_SIZE, 0)) < 0) {
m_logInfo.logInfo("[ERROR]RECV:%s", expected_response.c_str());
return false;
}
//输出信息
std::string response(response_buffer, recv_bytes);
m_logInfo.logInfo("[INFO]RECV(%s):%s", expected_response.c_str(), response.c_str());
if (response.substr(0, 3) != expected_response) {
return false;
}
return true;
}
std::string CSendMail::prepareDate() {
char date_string[MAX_BUFFER_SIZE];
time_t seconds;
time(&seconds);
strftime(date_string, MAX_BUFFER_SIZE,
"%a, %d %b %y %H:%M:%S +0800",
localtime(&seconds)); // +0800 maybe hard code
return date_string;
}
////////////////////////////////////////////////工作函数//////////////////////////////////////////////////////////////////////
bool CSendMail::CReateSocket() {
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0) {
m_logInfo.logInfo("WSAStartup调用失败!");
return false;
}
if (LOBYTE(wsaData.wVersion) != 2 ||
HIBYTE(wsaData.wVersion) != 2) {
WSACleanup();
return false;
}
_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if (_socket == INVALID_SOCKET) {
m_logInfo.logInfo("socket创建失败!");
return false;
}
sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(sockaddr_in));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERVICE_PORT);//发邮件一般都是25端口
struct hostent *hp = gethostbyname(m_ServerName.c_str());//使用名称
if (hp == NULL) {
DWORD dwErrCode = GetLastError();
return false;
}
servaddr.sin_addr.s_addr = *(int*)(*hp->h_addr_list);
int ret = connect(_socket, (sockaddr*)&servaddr, sizeof(servaddr));//建立连接
if (ret == SOCKET_ERROR) {
DWORD dwErr = GetLastError();
return false;
}
if (!rcvResponse("220"))
return false;
return true;
}
bool CSendMail::Logon() {
char local_host[MAX_BUFFER_SIZE];
if (gethostname(local_host, MAX_BUFFER_SIZE) != 0) {
m_logInfo.logInfo("Get local host name error!");
return false;
}
std::string msg;
msg = "HELO ";
msg += std::string(local_host) + "\r\n";
sendRequest(msg);
if (!rcvResponse("250")) {
return false;
}
msg = "AUTH LOGIN\r\n";
sendRequest(msg);
if (!rcvResponse("334")) {
return false;
}
msg = Base64Encode(m_UserName) + "\r\n";
sendRequest(msg);
if (!rcvResponse("334")) {
return false;
}
msg = Base64Encode(m_UserPwd) + "\r\n";
sendRequest(msg);
if (!rcvResponse("235")) {
return false;
}
return true;//登录成功
}
///////////////////////////////////SendMail////////////////////////////////////////////////////
//发送邮件头
bool CSendMail::SendHead() {
std::string msg;
msg = "MAIL FROM:<";
msg += m_SenderAddr + ">\r\n";
sendRequest(msg);
if (!rcvResponse("250")) {
m_logInfo.logInfo("邮件地址错误:%s", m_SenderAddr.c_str());
return false;
}
//遍历获得receiver
for (RECEIVERS::iterator itrRec = m_Receivers.begin();itrRec != m_Receivers.end();itrRec++) {
msg = "RCPT TO: <";
msg += itrRec->second + ">\r\n";
sendRequest(msg);
if (!rcvResponse("250")) {
return false;
}
}
msg = "DATA\r\n";
sendRequest(msg);
if (!rcvResponse("354")) {
return false;
}
//发送Headers
msg = "From:\"" + m_SenderName + "\"<" + m_SenderAddr + ">\r\n";
//遍历receiver
msg += "To: ";
for (RECEIVERS::iterator itrRec = m_Receivers.begin();itrRec != m_Receivers.end();itrRec++) {
std::string szRecv;
szRecv = "\"" + itrRec->first + "\"<" + itrRec->second + ">, ";
msg += szRecv;
}
msg += "\r\n";
msg += "Date: ";
msg += prepareDate() + "\r\n";
msg += "Subject: ";
msg += m_MailTitle + "\r\n";
msg += "X-Mailer: six_beauty \r\n";
msg += "MIME-Version: 1.0\r\n";
msg += "Content-type: multipart/mixed; boundary=\"INVT\"\r\n\r\n";
msg += "\r\n";
sendRequest(msg);
return true;
}
bool CSendMail::SendTextBody() {
std::string msg;
msg = "--INVT\r\nContent-Type: text/plain;\r\n charset=\"gb2312\"\r\n\r\n";
msg += m_TextBody;
msg += "\r\n\r\n";
int len_s = sendRequest(msg, true);
if (len_s != msg.length()) {
m_logInfo.logInfo("发送邮件正文出错,应该发送长度(%d实际发送长度%d", msg.length(), len_s);
return false;
}
return true;
}
bool CSendMail::SendFileBody() {
std::string msg;
//遍历发送附件文件
for (std::list<std::string>::iterator itrList = m_FilePathList.begin();itrList != m_FilePathList.end();itrList++) {
std::string filePath = *itrList;
std::string fileName = GetFileName(filePath);
std::string szContent = GetFileData(filePath);
msg = "--INVT\r\nContent-Type: application/octet-stream;\r\n name=\"";
msg += fileName;
msg += "\"\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment;\r\n filename=\"";
msg += fileName;
msg += "\"\r\n\r\n";
sendRequest(msg, true);
int npos = 0, len = szContent.length();
while (npos<len) {
std::string szBuffer = Base64Encode(szContent.substr(npos, min(len - npos, 3000)));
szBuffer += "\r\n";
sendRequest(szBuffer);
npos += min(len - npos, 3000);
}
}
return true;
}
bool CSendMail::SendEnd() {
std::string msg;
msg = "--INVT--\r\n.\r\n";
sendRequest(msg, true);
msg = "QUIT\r\n";
sendRequest(msg, true);
closesocket(_socket);
WSACleanup();
return true;
}

@ -0,0 +1,94 @@
/*
**CSendMail
**
**program by six_beauty
*/
#pragma once
#include <string>
#include <list>
#include <map>
#include "LogInfo.h"
#include <winsock2.h>
//类型定义
const int MAX_BUFFER_SIZE = 255; //send和recv的缓存buffer的size
const int SERVICE_PORT = 25; //端口
typedef std::map<std::string, std::string> RECEIVERS;
//CSendMail类
class CSendMail {
public:
CSendMail();
~CSendMail();
//////////////////////////////////////设置邮件信息/////////////////////////////////////////////////////////////////////////////////
/////////////////////////connent///////////////////////////////////
void setServerName(const std::string server_name); //smtp服务器地址
void setUserName(const std::string user_name); //邮箱用户名
void setUserPwd(const std::string user_pwd); //邮箱用户密码
/////////////////////////SendMail//////////////////////////////////
void setSenderName(const std::string sender_name); //发送者的名字
void setSenderAddress(const std::string sender_addr); //发送者的邮箱(mail form:)
//邮件接收者
void setReceiver(const std::string name, const std::string address); //先clear再add
void addReceiver(const std::string name, const std::string address); //增加邮件接收者name是收件人名字mail是地址
void clearReceiver(); //情况邮件接收者
//添加附件
void AddFilePath(std::string szFilePath); //添加附件路径到附件列表中一般的smtp服务器处理附件不超过50MB
void DeleteFilePath(std::string szFilePath); //删除附件路径,如果有的话
void DeleteAllPath(); //删除全部附件的路径
/////////////////////////////////////发送邮件//////////////////////////////////////////////////////////////////////////////////////
//连接
bool Connent();
//邮件发送
bool SendMail(const std::string mail_title, const std::string send_content); //发送邮件的函数
private:
//功能函数
inline std::string& replace_all(string& str, const string& old_value, const string& new_value); //其实就是CString的Replace
std::string GetFileName(std::string&szFilePath); //从附件的路径中获取文件名称
std::string GetFileData(std::string szFilePath); //以字符形式读入附件内容
std::string Base64Encode(std::string in_str); //把char类型转换成Base64类型
//获取时间
std::string prepareDate();
//通信recv和send的封装
int sendRequest(const std::string content, bool bout = false); //返回发送了多少字节
bool rcvResponse(const std::string expected_response); //返回接收的结果和expected_response是否相同
//工作函数
bool CReateSocket(); //建立socket连接
bool Logon(); //登录邮箱,主要进行发邮件前的准备工作
bool SendHead(); //发送邮件头
bool SendTextBody(); //发送邮件文本正文
bool SendFileBody(); //发送邮件附件
bool SendEnd(); //发送邮件结尾
SOCKET _socket;
LogInfo m_logInfo;
/////////////////////////邮件信息///////////////////////////////////
/////////////////////////connent///////////////////////////////////
std::string m_ServerName; //smtp服务器地址
std::string m_UserName; //邮箱用户
std::string m_UserPwd; //邮箱用户密
/////////////////////////SendMail//////////////////////////////////
std::string m_SenderName; //发送者的名
std::string m_SenderAddr; //发送者的邮箱(mail form:)
std::string m_MailTitle; //邮件标题(subject)
std::string m_TextBody; //邮件正文
RECEIVERS m_Receivers; //邮件接收者name,email_address)
std::list<std::string> m_FilePathList; //附件路径_list
/////////////////////////邮件信息///////////////////////////////////
};

@ -22,27 +22,27 @@
<ProjectGuid>{8E665218-4AC2-4DDD-A50E-4245BA64C3C3}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>HEZON_ITK</RootNamespace>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<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>
@ -50,7 +50,7 @@
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
@ -80,6 +80,7 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<TargetName>jd_check_jz</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
@ -137,10 +138,12 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<IgnoreSpecificDefaultLibraries>libuser_exits.ar.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<OutputFile>$(OutDir)\bs.dll</OutputFile>
<OutputFile>$(OutDir)\jd_check_jz.dll</OutputFile>
<AdditionalOptions>/FORCE %(AdditionalOptions)</AdditionalOptions>
<AdditionalLibraryDirectories>
</AdditionalLibraryDirectories>
</Link>
<ProjectReference>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
@ -154,6 +157,7 @@
<ItemGroup>
<ClCompile Include="bs_bom_check.cpp" />
<ClCompile Include="bs_bom_save_check.cpp" />
<ClCompile Include="bs_bom_transmit_check.cpp" />
<ClCompile Include="bs_bypass.cpp" />
<ClCompile Include="bs_file_transfer.cpp" />
<ClCompile Include="bs_sap.cpp" />
@ -161,19 +165,38 @@
<ClCompile Include="bs_sign_cad.cpp" />
<ClCompile Include="bs_test_release_check.cpp" />
<ClCompile Include="bs_wl_check.cpp" />
<ClCompile Include="check_release_issus.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" />
<ClCompile Include="jd_add_attachments.cpp" />
<ClCompile Include="jd_batch_process.cpp" />
<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="Sample_confirmation_sheet.cpp" />
<ClCompile Include="util.cpp" />
<ClCompile Include="jd_check_ID_wllx.cpp" />
<ClCompile Include="jd_rev_release.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="CSendMail.h" />
<ClInclude Include="epm_handler_common.h" />
<ClInclude Include="epm_register_handler.h" />
<ClInclude Include="jd_clear_field.h" />
<ClInclude Include="LogInfo.h" />
<ClInclude Include="util.h" />
<ClInclude Include="HTTPRequest.hpp" />
</ItemGroup>
@ -181,6 +204,8 @@
<ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\teamcenter.12.0.0\build\teamcenter.targets" Condition="Exists('..\packages\teamcenter.12.0.0\build\teamcenter.targets')" />
<Import Project="..\packages\javasdk.8.0.0\build\javasdk.targets" Condition="Exists('..\packages\javasdk.8.0.0\build\javasdk.targets')" />
<Import Project="..\packages\boost.1.72.0.0\build\boost.targets" Condition="Exists('..\packages\boost.1.72.0.0\build\boost.targets')" />
<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>
@ -188,5 +213,7 @@
</PropertyGroup>
<Error Condition="!Exists('..\packages\teamcenter.12.0.0\build\teamcenter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\teamcenter.12.0.0\build\teamcenter.targets'))" />
<Error Condition="!Exists('..\packages\javasdk.8.0.0\build\javasdk.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\javasdk.8.0.0\build\javasdk.targets'))" />
<Error Condition="!Exists('..\packages\boost.1.72.0.0\build\boost.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\boost.1.72.0.0\build\boost.targets'))" />
<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>

@ -83,6 +83,60 @@
<ClCompile Include="jd_add_attachments.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_check_99_bomyt.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_send_mail.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="CSendMail.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_get_target.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_check_wlms_len.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="bs_bom_transmit_check.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_ckeck_bom_use.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_check_bom_99.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_check_ID_wllx.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="jd_check_99_cglx.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<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>
<ClCompile Include="check_release_issus.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
<ClCompile Include="Sample_confirmation_sheet.cpp">
<Filter>epm-handler</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="epm_register_handler.h">
@ -100,5 +154,11 @@
<ClInclude Include="HTTPRequest.hpp">
<Filter>epm-handler</Filter>
</ClInclude>
<ClInclude Include="CSendMail.h">
<Filter>epm-handler</Filter>
</ClInclude>
<ClInclude Include="LogInfo.h">
<Filter>epm-handler</Filter>
</ClInclude>
</ItemGroup>
</Project>

@ -0,0 +1,25 @@
#include<iostream>
#include<stdarg.h>
using namespace std;
const int BUF_SIZE = 4096;
//实现输出类
class LogInfo {
public:
LogInfo() { };
~LogInfo() { };
void logInfo(char *szFormat, ...) {
char szBuf[BUF_SIZE] = { };
va_list args; //第一步
va_start(args, szFormat); //第二步
_vsnprintf(szBuf, BUF_SIZE, szFormat, args); //第三步
va_end(args); //第四步
//在这是实现输出方式
std::cout << szBuf << endl;
return;
}
};

@ -0,0 +1,172 @@
#include "util.h"
#include <ict/ict_userservice.h>
#include <tccore/uom.h>
bool startsWith(const char* str, const char* prefix) {
return strncmp(str, prefix, strlen(prefix)) == 0;
}
bool endsWith(const char* str, const char* suffix) {
if (!str || !suffix)
return str == suffix;
size_t lenStr = strlen(str);
size_t lenSuffix = strlen(suffix);
if (lenSuffix > lenStr)
return false;
return strncmp(str + lenStr - lenSuffix, suffix, lenSuffix) == 0;
}
bool isJD2_BJRevision(const char* type) {
return startsWith(type, "JD2") && endsWith(type, "BJRevision");
}
/*
*
*/
int getCharLength(char str[])
{
int count = 0;
for (int i = 0; str[i]; i++)
{
if (str[i] < 0) i++;
count++;
}
return count;
}
/*
*
*/
int jd_check_jz(EPM_rule_message_t msg) {
printf("Sample_confirmation_sheet is begin! \n");
int ifail = ITK_ok,
result_tag = EPM_go;
tag_t rootTask = NULLTAG;
int attachmentCount = 0;
tag_t* attachmentTags = NULL,
attachmentTag = NULLTAG;
char* type = NULL,
* name = NULL,
* jz = NULL;
int form_cnt = 0;
tag_t* forms = NULL;
ITKCALL(ifail = EPM_ask_root_task(msg.task, &rootTask));
ITKCALL(ifail = EPM_ask_attachments(rootTask, EPM_target_attachment, &attachmentCount, &attachmentTags));
//便利所有的流程目标下的对象
for (int i = 0; i < attachmentCount; i++) {
attachmentTag = attachmentTags[i];//PartRevisionMaster
ITKCALL(ifail = AOM_ask_value_string(attachmentTag, "object_type", &type));
ITKCALL(ifail = AOM_ask_value_string(attachmentTag, "object_name", &name));
printf(">>>当前流程下对象的类型为==[%s]\n", type);
//获取版本对象下的表单
ITKCALL(ifail = AOM_ask_value_tags(attachmentTag, "IMAN_master_form_rev", &form_cnt, &forms));
//==========================下面是检查特定版本类型JD2_XXBJRevision下的表单属性净重===========================================================================================================
if (isJD2_BJRevision(type)) {
//检查版本表单是否存在属性jd2_jz
ITKCALL(ifail = AOM_ask_value_string(forms[0], "jd2_jz", &jz));
printf("获取净重属性的ifail结果 = [%d] \n", ifail);
if (ifail != 0 && ifail != 2) {
//未获取到净重属性,流程正常发起
printf("未获取到净重属性,流程正常发起 \n");
continue;
}else {
if (jz != NULL && stricmp(jz, "") == 0) {
//弹出弹窗提示,且终止流程
printf(">>>部件净重为空,不允许发起流程,请检查!!\n");
char* message = "部件净重为空,不允许发起流程,请检查!!";
cout << "Exception:" << message << endl;
EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, message);
result_tag = EPM_nogo;
break;
}else if (jz != NULL && stricmp(jz, "0.001") < 0) {
//弹出弹窗提示,且终止流程
printf(">>>部件净重小于0.001,不允许发起流程,请检查!!\n");
char* message = "部件净重小于0.001,不允许发起流程,请检查!!";
cout << "Exception:" << message << endl;
EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, message);
result_tag = EPM_nogo;
break;
}else {
//正常发起流程
printf(">>>净重=[%s],允许发起流程!\n",jz);
}
}
}
else {
printf(">>>当前流程下对象[%s]类型为[%s]类型非部件类型JD2_[XX]BJRevision不必检查净重\n", name,type);
}
}
MEM_free(forms);
MEM_free(name);
MEM_free(type);
MEM_free(attachmentTags);
return result_tag;
}
/*
* userservice
*/
int USERSEVICE_getProperties(void* returnValue) {
int ifail = ITK_ok;
tag_t tag = NULL_TAG;
char* uomName = NULL;
tag_t* release_objs = NULL;
//接收参数
USERARG_get_tag_argument(&tag);
USERARG_get_string_argument(&uomName);
int num_could = 0;
tag_t* uoms = NULL, uom = NULLTAG;
// 获取所有单位的列表
ITKCALL(UOM_extent(&num_could, &uoms));
for (int i = 0; i < num_could; i++)
{
char* name = NULL;
UOM_ask_name(uoms[i], &name);
if (strcmp(name, uomName) == 0)
{
uom = uoms[i];
break;
}
}
// 初始化类ID、属性ID和标签变量
char* class_id = NULL;
tag_t attr_id = NULLTAG, class_tag = NULLTAG, tag_instance = NULLTAG;
// 锁定对象以防止在操作过程中被修改
ITKCALL(AOM_lock(tag));
// 获取对象所属类的标签和名称
ITKCALL(POM_class_of_instance(tag, &class_tag));
ITKCALL(POM_name_of_class(class_tag, &class_id));
// 获取类中名为"uom_tag"的属性的标签
ITKCALL(POM_attr_id_of_attr("uom_tag", class_id, &attr_id));
// 刷新对象的实例以确保数据是最新的
ITKCALL(POM_refresh_instances_any_class(1, &tag, POM_modify_lock));
// 将对象的单位属性设置为之前找到的单位标签
ITKCALL(POM_set_attr_tag(1, &tag, attr_id, uom));
// 保存对对象所做的更改
ITKCALL(POM_save_instances(1, &tag, true));
// 解锁对象
ITKCALL(AOM_unlock(tag));
// 刷新对象的状态
ITKCALL(AOM_refresh(tag, false));
return ifail;
}

@ -11,7 +11,7 @@ void judge(tag_t top,string &status,stringstream &ss)
AOM_UIF_ask_value(lines[j], "jd2_last_release_status", &val);
printf("status:%s\n", val);
string temp = val;
if (temp.length()>0&&status.find(val) != -1)
if (temp.length()>0&&status.find(val) == -1)
{
AOM_ask_value_string(lines[j], "bl_rev_object_string", &val);
ss << val << ',';
@ -21,7 +21,8 @@ void judge(tag_t top,string &status,stringstream &ss)
}
}
int bs_bom_check(EPM_rule_message_t msg)
int
_bom_check(EPM_rule_message_t msg)
{
int ifail = EPM_go, att_count, line_cnt;
tag_t rootTask, *attachments, win, top, *lines;
@ -53,6 +54,7 @@ int bs_bom_check(EPM_rule_message_t msg)
{
pass = true;
break;
}
}
if (!pass)
@ -67,7 +69,7 @@ int bs_bom_check(EPM_rule_message_t msg)
}
BOM_set_window_top_line(win, NULLTAG, attachments[i], NULLTAG, &top);
AOM_UIF_ask_value(top, "jd2_last_release_status", &val);
if (tc_strlen(val) && paras["status"].find(val) != -1)
if (tc_strlen(val) && paras["status"].find(val) == -1)
{
AOM_ask_value_string(top, "bl_rev_object_string", &val);
ss << val << ',';

@ -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);
@ -66,9 +60,8 @@ 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())
{
save_judge(top, check, name, type_vec, quantity_type_vec, ss, status_ss);
if (ss.str().length()) {
ss << "物料数量为空,请填写!\n";
ifail = 1;
}

@ -0,0 +1,89 @@
#include "util.h"
int bs_bom_transmit_check(EPM_rule_message_t msg)
{
POM_AM__set_application_bypass(true);
tag_t root_task, *attachments;
int att_cnt;
//获得参数列表
TC_argument_list_t * arguments = msg.arguments;
//获取参数数目
int arg_cnt = TC_number_of_arguments(arguments);
map<string, string> arg_map;
//遍历参数列表
for (auto i = 0; i < arg_cnt; i++)
{
char *temp_key, *temp_val;
ITK_ask_argument_named_value(TC_next_argument(arguments), &temp_key, &temp_val);
//参数以键值对的形式传递到arg_map
if (temp_val)
arg_map[temp_key] = temp_val;
}
//获得根节点
EPM_ask_root_task(msg.task, &root_task);
//获得根任务下的组件
EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &attachments);
//判断参数是否符合要求
int taskNum = 0, BOMNum = 0;
for (int i = 0; i < att_cnt; i++)
{
if (isTypeOf(attachments[i], "ItemRevision"))
{
taskNum = taskNum + 1;
int form_att;
tag_t *forms;
AOM_ask_value_tags(attachments[i], "IMAN_master_form_rev", &form_att, &forms);
//遍历参数
for (auto j = arg_map.begin(); j != arg_map.end(); j++)
{
//设置属性
ITKCALL(AOM_set_value_string(forms[0], j->first.c_str(), j->second.c_str()));
}
//保存
AOM_save(forms[0]);
//拿到指定参数判断参数值
if (form_att == 0)
{
continue;
}
char *cglx, *tscg;
AOM_ask_value_string(forms[0], "jd2_cglx", &cglx);
AOM_ask_value_string(forms[0], "jd2_tscg", &tscg);
cout << "jd2_cglx" << cglx << endl;
cout << "jd2_tscg" << tscg << endl;
if (((strcmp(cglx, "E") == 0) && (strcmp(tscg, "") == 0)) || ((strcmp(cglx, "E") == 0) && (strcmp(tscg, "50") == 0)))
{
//判断是否有 BOM 版本视图 structure_revisions 如果存在则可以发起流程
int structure_att;
tag_t *structures;
AOM_ask_value_tags(attachments[i], "structure_revisions", &structure_att, &structures);
if (structures != NULL)
{
BOMNum = BOMNum + 1;
}
}
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");
BOMNum = BOMNum + 1;
}
}
}
if (taskNum == BOMNum) {
POM_AM__set_application_bypass(false);
return EPM_go;
}
else {
POM_AM__set_application_bypass(false);
return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, "该物料类型需要包含BOM视图");
}
}

@ -28,43 +28,47 @@
#include "epm_register_handler.h"
#include "epm_handler_common.h"
#include "jd_clear_field.h"
#include "ict/ict_userservice.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @fn extern "C" DLLAPI int liborigin_register_callbacks
* @return usually return ITK_ok
* @brief liborigin customization entry
*/
DLLAPI int bs_register_callbacks()
DLLAPI int jd_check_jz_register_callbacks()
{
char* log_file = NULL;
printf("创建日志文件\n");
char* TO_SRM = (char*)malloc(sizeof("Main"));
strcpy(TO_SRM, "Main");
int ifail = ITK_ok;
ifail = CUSTOM_register_exit(
"bs",
"USERSERVICE_register_methods",
(CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_methods) ;
ifail = CUSTOM_register_exit(
"bs",
"USER_gs_shell_init_module",
(CUSTOM_EXIT_ftn_t)CUST_init_module);
Register_revise_msg();
ITKCALL(ifail = CUSTOM_register_exit("jd_check_jz", "USER_gs_shell_init_module",
(CUSTOM_EXIT_ftn_t)CUST_init_module));
if (ifail != ITK_ok)
{
TC_write_syslog("注册jd_check_jz回调失败[CUST_init_module]\n");
}else {
TC_write_syslog("注册jd_check_jz回调成功[CUST_init_module]\n");
}
fprintf(stdout, "\n bssss registering USERSERVICE_custom_register_handlers completed!\n");
ITKCALL(ifail = CUSTOM_register_exit("jd_check_jz", "USERSERVICE_register_methods",
(CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_methods));
if (ifail != ITK_ok) {
TC_write_syslog("注册回调失败[USERSERVICE_custom_register_handlers]\n");
}
else {
TC_write_syslog("注册回调成功[USERSERVICE_custom_register_handlers]\n");
}
return ifail;
}
#ifdef __cplusplus
}
#endif
/**
* @}
*/

@ -1,7 +1,6 @@
#include "util.h"
int bs_sap_material(EPM_action_message_t msg)
{
int bs_sap_material(EPM_action_message_t msg) {
printf("start sap material\n");
int ifail = ITK_ok, att_count;
tag_t rootTask, *attachments, relation_type;
@ -15,25 +14,24 @@ int bs_sap_material(EPM_action_message_t msg)
TC_argument_list_t * arguments = msg.arguments;
int arg_cnt = TC_number_of_arguments(arguments), status = 0;
POM_AM__set_application_bypass(true);
map<string, string> paras,rel_map;
map<string, string> paras, rel_map;
map<string, string> prop_map;
vector<string> rel_vec;
for (auto i = 0; i < arg_cnt; i++)
{
for (auto i = 0; i < arg_cnt; i++) {
char *temp_key, *temp_val;
ITK_ask_argument_named_value(TC_next_argument(arguments), &temp_key, &temp_val);
paras[temp_key] = temp_val;
}
string d0 = "D00", d1 = "D0";
for(int i=0;i<67;i++)
{
if(i>8)
{
class_map[1000+i] = d1 + to_string(i + 1);
}else
{
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 {
class_map[1000 + i] = d0 + to_string(i + 1);
}
}
@ -41,24 +39,20 @@ 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)
{
if (temp_vec.size() == 2) {
rel_map[temp_vec[0]] = temp_vec[1];
}
}
vector<string> rel_vec2;
split(pref_vals[5], ",", &rel_vec2);
for (int i = 0; i<rel_vec2.size(); i++)
{
for (int i = 0; i < rel_vec2.size(); i++) {
vector<string> temp_vec;
split(rel_vec2[i], "=", &temp_vec);
if (temp_vec.size() == 2)
{
if (temp_vec.size() == 2) {
prop_map[temp_vec[0]] = temp_vec[1];
}
}
@ -87,38 +81,50 @@ int bs_sap_material(EPM_action_message_t msg)
// prop_map["GEWEI"] = "jd2_zldw";
// prop_map["CLASS"] = "jd2_wllx";
printf("start111\n");
for (int i = 0; i < att_count; i++)
{
if (isTypeOf(attachments[i], "Form"))
{
int rel_cnt,*levels;
tag_t *rels,rev=NULLTAG,form;
for (int i = 0; i < att_count; 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++)
{
if(tc_strcmp(relations[j],"IMAN_master_form")==0)
{
for (int j = 0; j < rel_cnt; j++) {
if (tc_strcmp(relations[j], "IMAN_master_form") == 0) {
rev = rels[j];
}
}
if(rev==NULLTAG)
{
if (rev == NULLTAG) {
printf("revision get error\n");
continue;
}
char *idddd, *nameeee;
AOM_ask_value_string(rev, "item_id", &idddd);
AOM_ask_value_string(rev, "object_name", &nameeee);
printf("===>id=%s,name=%s\n", idddd, nameeee);
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);
System::Collections::Generic::Dictionary<String^, String^> ^dic = gcnew System::Collections::Generic::Dictionary<String^, String^>();
for (auto j = prop_map.begin(); j != prop_map.end(); j++)
{
char *val="";
for (auto j = prop_map.begin(); j != prop_map.end(); j++) {
char *val = "";
string temp_val;
if (j->second == "item_id")
{
if (j->second == "item_id") {
AOM_ask_value_string(rev, j->second.c_str(), &val);
temp_val = val;
}
@ -130,13 +136,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)
@ -149,18 +154,30 @@ int bs_sap_material(EPM_action_message_t msg)
}
tag_t class_obj;
ICS_ask_classification_object(rev, &class_obj);
if (class_obj)
{
if (class_obj) {
char ***vals;
int cnt, *ids,*val_count;
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])
dic[convert_to_cstring(class_map[ids[j]].c_str())] = convert_to_cstring(vals[j][0]);
if (class_map.find(ids[j]) != class_map.end()) {
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);
printf("--------特殊1069------\n", ids[j]);
printf("value1:%s\n", convert_to_cstring(class_map[ids[j]].c_str()));
printf("value2:%s\n", 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]);
printf("--------------\n", ids[j]);
printf("value1:%s\n", convert_to_cstring(class_map[ids[j]].c_str()));
printf("value2:%s\n", convert_to_cstring(vals[j][0]));
}
}
}
}
}
@ -169,8 +186,7 @@ int bs_sap_material(EPM_action_message_t msg)
dic["KLART"] = "001";
string result = ConvertToString(test->send_material(url, user, password, dic));
printf("result:%s\n", result.c_str());
if(result.length()&&result[0]=='E')
{
if (result.length() && result[0] == 'E') {
char *val;
AOM_ask_value_string(rev, "item_id", &val);
stringstream err;
@ -181,7 +197,6 @@ int bs_sap_material(EPM_action_message_t msg)
return 1;
}
}
}
@ -191,24 +206,23 @@ int bs_sap_material(EPM_action_message_t msg)
}
void get_bom(System::Collections::Generic::List<System::Collections::Generic::Dictionary<String^, String^>^> ^a_list,tag_t line,char *werks,char *stlan,string pid, tag_t relation_type,boolean is_hl,boolean is_judge)
{
void get_bom(System::Collections::Generic::List<System::Collections::Generic::Dictionary<String^, String^>^> ^a_list, tag_t line, char *werks, char *stlan, string pid, tag_t relation_type, boolean is_hl, boolean is_judge, vector<string> &bom_ids) {
int line_cnt;
tag_t *lines;
BOM_line_ask_child_lines(line, &line_cnt, &lines);
char *id;
AOM_UIF_ask_value(line, "bl_item_item_id", &id);
if(a_list->Count==0)
{
pid = pid.length()>0?pid:id;
int index = pid.find('-');
if (find(bom_ids.begin(), bom_ids.end(), id) != bom_ids.end())
return;
bom_ids.push_back(id);
if (a_list->Count == 0) {
pid = pid.length() > 0 ? pid : id; int index = pid.find('-');
if (index != -1)
pid = pid.substr(0,index);
pid = pid.substr(0, index);
}
for (int j = 0; j < line_cnt; j++)
{
for (int j = 0; j < line_cnt; j++) {
System::Collections::Generic::Dictionary<String^, String^> ^dic = gcnew System::Collections::Generic::Dictionary<String^, String^>();
dic["MATNR"] = convert_to_cstring(pid.length()>0?pid.c_str():id);
dic["MATNR"] = convert_to_cstring(pid.length() > 0 ? pid.c_str() : id);
dic["WERKS"] = convert_to_cstring(werks);
dic["STLAN"] = convert_to_cstring(stlan);
dic["BMENG"] = "1";
@ -216,20 +230,23 @@ 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)
dic["POSNR"] = convert_to_cstring(val);
//if (!is_judge)
dic["POSNR"] = convert_to_cstring(val);
char *child_id;
AOM_UIF_ask_value(lines[j], "bl_child_id", &child_id);
dic["IDNRK"] = convert_to_cstring(child_id);
// AOM_UIF_ask_value(lines[j], "bl_quantity", &val);
AOM_UIF_ask_value(lines[j], "JD2_XNJ", &val);
if (tc_strlen(val)) {
dic["SPPROCTYPE"] = convert_to_cstring(val);
}
AOM_UIF_ask_value(lines[j], "bl_uom", &val);
dic["MEINS"] = convert_to_cstring(val);
dic["STLAL"] = is_hl ? convert_to_cstring("02") : convert_to_cstring("01");
char *val1, *val2,*hl,*sffs;
tag_t tag,*rels;
char *val1, *val2, *hl, *sffs;
tag_t tag, *rels;
int rel_cnt;
AOM_ask_value_tag(lines[j], "bl_line_object", &tag);
@ -240,66 +257,57 @@ void get_bom(System::Collections::Generic::List<System::Collections::Generic::Di
AOM_ask_value_string(lines[j], "JD2_SFHL", &sffs);
printf("JD2_SFHL:%s\n", sffs);
string quantity;
if(tc_strcmp(sffs,"1")==0)
{
if (tc_strcmp(sffs, "1") == 0) {
AOM_ask_value_string(lines[j], "JD2_sl", &val);
quantity = val;
int index = quantity.find('.');
if(index!=-1&&quantity.length()>(index + 4))
{
quantity = quantity.substr(0,index + 4);
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;
}
dic["MENGE"] = convert_to_cstring(quantity.c_str());
if(is_judge){
if (rel_cnt)
{
if (is_judge) {
if (rel_cnt) {
AOM_ask_value_string(rels[0], "jd2_cglx", &val1);
AOM_ask_value_string(rels[0], "jd2_tscg", &val2);
}
char *obj_str;
AOM_ask_value_string(lines[j], "object_string", &obj_str);
if (tc_strcmp(val1, "F") == 0 && tc_strcmp(val2, "50") == 0)
{
printf("has f50:%s\n",obj_str);
if (tc_strcmp(val1, "F") == 0 && tc_strcmp(val2, "50") == 0) {
printf("has f50:%s\n", obj_str);
continue;
}
if (tc_strcmp(val1, "F") == 0 && tc_strcmp(val2, "10") == 0)
{
if (tc_strcmp(val1, "F") == 0 && tc_strcmp(val2, "10") == 0) {
printf("has f10:%s\n", obj_str);
a_list->Add(dic);
continue;
}
if (tc_strcmp(val1, "F") == 0 && tc_strlen(val2) == 0)
{
if (tc_strcmp(val1, "F") == 0 && tc_strlen(val2) == 0) {
printf("has fempty:%s\n", obj_str);
a_list->Add(dic);
continue;
}
if (tc_strcmp(val1, "E") == 0 && tc_strlen(val2) == 0)
{
if (tc_strcmp(val1, "E") == 0 && tc_strlen(val2) == 0) {
printf("has fempty:%s\n", obj_str);
a_list->Add(dic);
continue;
}
if (tc_strcmp(val1, "E") == 0 && tc_strcmp(val2, "50") == 0)
{
if (tc_strcmp(val1, "E") == 0 && tc_strcmp(val2, "50") == 0) {
printf("has e50:%s\n", obj_str);
if(pid.length()>0)
{
printf("obj:%s pid:%s\n",obj_str,pid.c_str());
}else
{
if (pid.length() > 0) {
printf("obj:%s pid:%s\n", obj_str, pid.c_str());
}
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);
get_bom(a_list, lines[j], werks, stlan, pid.length() > 0 ? pid : id, relation_type, child_is_hl, is_judge, bom_ids);
continue;
}
// if (tc_strcmp(val1, "F") == 0 && tc_strlen(val2) == 0)
@ -310,12 +318,11 @@ void get_bom(System::Collections::Generic::List<System::Collections::Generic::Di
}
a_list->Add(dic);
get_bom(a_list, lines[j], werks, stlan,"",relation_type, child_is_hl, is_judge);
get_bom(a_list, lines[j], werks, stlan, "", relation_type, child_is_hl, is_judge, bom_ids);
}
}
int bs_sap_bom(EPM_action_message_t msg)
{
int bs_sap_bom(EPM_action_message_t msg) {
printf("start sap bom2\n");
int ifail = ITK_ok, att_count;
tag_t rootTask, *attachments, relation_type, win;
@ -330,8 +337,7 @@ int bs_sap_bom(EPM_action_message_t msg)
POM_AM__set_application_bypass(true);
map<string, string> paras;
for (auto i = 0; i < arg_cnt; i++)
{
for (auto i = 0; i < arg_cnt; i++) {
char *temp_key, *temp_val;
ITK_ask_argument_named_value(TC_next_argument(arguments), &temp_key, &temp_val);
paras[temp_key] = temp_val;
@ -344,10 +350,8 @@ int bs_sap_bom(EPM_action_message_t msg)
String^ password = convert_to_cstring(pref_vals[3]);
bool has_99 = false;
BOM_create_window(&win);
for (int i = 0; i < att_count; i++)
{
if (isTypeOf(attachments[i], "PSBOMViewRevision"))
{
for (int i = 0; i < att_count; i++) {
if (isTypeOf(attachments[i], "PSBOMViewRevision")) {
tag_t top_line, rev;
char *id;
BOM_set_window_top_line_bvr(win, attachments[i], &top_line);
@ -357,23 +361,21 @@ int bs_sap_bom(EPM_action_message_t msg)
if (rev == NULLTAG)
continue;
AOM_ask_value_string(rev, "item_id", &id);
if(id[0]=='9'&&id[1]=='9')
{
if (id[0] == '9'&&id[1] == '9') {
has_99 = true;
break;
}
}
}
printf("has _99:%d\n", has_99);
for (int i = 0; i < att_count; i++)
{
if (isTypeOf(attachments[i], "PSBOMViewRevision"))
{
vector<string> bom_ids;
for (int i = 0; i < att_count; i++) {
if (isTypeOf(attachments[i], "PSBOMViewRevision")) {
printf("execute\n");
int rel_cnt, line_cnt;
System::Collections::Generic::List<System::Collections::Generic::Dictionary<String^, String^>^> ^a_list = gcnew System::Collections::Generic::List<System::Collections::Generic::Dictionary<String^, String^>^>();
tag_t top_line, *lines, rev, *rels;
char *id, *werks, *stlan,*hl;
char *id, *werks, *stlan, *hl;
BOM_set_window_top_line_bvr(win, attachments[i], &top_line);
if (top_line == NULLTAG)
continue;
@ -382,10 +384,11 @@ int bs_sap_bom(EPM_action_message_t msg)
continue;
GRM_list_secondary_objects_only(rev, relation_type, &rel_cnt, &rels);
AOM_ask_value_string(rev, "item_id", &id);
if(has_99)
{
if (id[0] != '9' || id[1] != '9')
{
if (find(bom_ids.begin(), bom_ids.end(), id) != bom_ids.end())
continue;
if (has_99) {
if (id[0] != '9' || id[1] != '9') {
printf("not 99:%s\n", id);
continue;
@ -396,16 +399,15 @@ int bs_sap_bom(EPM_action_message_t msg)
AOM_ask_value_string(rels[0], "jd2_gc", &werks);
AOM_ask_value_string(rels[0], "jd2_BOMyt", &stlan);
AOM_UIF_ask_value(rev, "jd2_ishl", &hl);
boolean is_hl = tc_strcmp(hl,"ÊÇ")?false:true;
if (tc_strlen(werks)==0||tc_strlen(stlan)==0)
boolean is_hl = tc_strcmp(hl, "") ? false : true;
if (tc_strlen(werks) == 0 || tc_strlen(stlan) == 0)
continue;
boolean is_judege = id[0] == '9'&&id[1] == '9';
get_bom(a_list, top_line, werks, stlan,"", relation_type,is_hl,is_judege);
get_bom(a_list, top_line, werks, stlan, "", relation_type, is_hl, is_judege, bom_ids);
string result = ConvertToString(test->send_bom(url, user, password, a_list));
printf("result:%s\n", result.c_str());
if(result.length()&&result[0]=='E')
{
if (result.length() && result[0] == 'E') {
BOM_close_window(win);
POM_AM__set_application_bypass(false);
EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, result.c_str());

@ -0,0 +1,54 @@
#include "util.h"
int check_release_issus(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 bjNum = 0;
//遍历任务组件
for (int i = 0; i < att_cnt; i++) {
if (isTypeOf(attachments[i], "ItemRevision")) {
//判断版本属性 release_status_list (是否发布)
int release_att;
tag_t* release;
AOM_ask_value_tags(attachments[i], "release_status_list", &release_att, &release);
cout << "release_att:" << release_att << endl;
cout << "release:" << release << endl;
if (release_att >= 1) {
continue;
}
else {
//如果date_released没有,打一个标记,并记录所有没有的对象
bjNum = -1;
AOM_ask_value_string(attachments[i], "object_string", &object_string);
names.append(object_string);
names.append(";");
}
}
}
if (bjNum == -1) {
std::string massage = "物料/图纸当前版本未发布!";
names.append(massage);
const char* p = names.c_str();
cout << "Exception:" << p << endl;
EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, p);
return EPM_nogo;
}
POM_AM__set_application_bypass(false);
return EPM_go;
}

@ -1,4 +1,4 @@
/**
/**
* @addtogroup handler
* @{
*/
@ -32,26 +32,42 @@ extern "C" {
#define TC_specification "IMAN_specification"
//#define NX_3W_DATASET_TYPE "UGMASTER"
//#define NX_2W_DATASET_TYPE "UGPART"
//#define DATASET_REF_TYPE "UGPART"
int bs_file_transfer(EPM_action_message_t msg);
int bs_sap_material(EPM_action_message_t msg);
int bs_sap_bom(EPM_action_message_t msg);
int bs_bom_check(EPM_rule_message_t msg);
int bs_wl_check(EPM_rule_message_t msg);
int bs_bom_save_check(METHOD_message_t *msg, va_list args);
int bs_sign_cad(EPM_action_message_t msg);
int jd_signoff(EPM_action_message_t msg);
int bs_test_release_check(EPM_action_message_t msg);
int bs_bypass(void *retValType);
int jd_schedule_joint(EPM_action_message_t msg);
int jd_batch_process(EPM_action_message_t msg);
int jd_add_attachments(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);
//#define NX_3W_DATASET_TYPE "UGMASTER"
//#define NX_2W_DATASET_TYPE "UGPART"
//#define DATASET_REF_TYPE "UGPART"
int bs_file_transfer(EPM_action_message_t msg);
int bs_sap_material(EPM_action_message_t msg);
int bs_sap_bom(EPM_action_message_t msg);
//int bs_bom_check(EPM_rule_message_t msg);
int bs_wl_check(EPM_rule_message_t msg);
int bs_bom_save_check(METHOD_message_t *msg, va_list args);
int bs_sign_cad(EPM_action_message_t msg);
int jd_signoff(EPM_action_message_t msg);
int bs_test_release_check(EPM_action_message_t msg);
int bs_bypass(void *retValType);
int jd_schedule_joint(EPM_action_message_t msg);
int jd_batch_process(EPM_action_message_t msg);
int jd_add_attachments(EPM_action_message_t msg);
int jd_check_99_bomyt(EPM_rule_message_t msg);
int jd_send_mail(EPM_action_message_t msg);
int jd_get_target(EPM_action_message_t msg);
int jd_check_wlms_len(EPM_rule_message_t msg);
int bs_bom_transmit_check(EPM_rule_message_t msg);
int jd_check_bom_use(EPM_rule_message_t msg);
int jd_check_bom_99(EPM_rule_message_t msg);
int jd_check_ID_wllx(EPM_rule_message_t msg);
int jd_check_99_cglx(EPM_rule_message_t msg);
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);
int check_release_issus(EPM_rule_message_t msg);
int jd_check_jz(EPM_rule_message_t msg);
//修改单位
int USERSEVICE_getProperties(void* returnValue);

@ -40,11 +40,10 @@ $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)
{
extern DLLAPI int CUST_init_module(int *decision, va_list args) {
int ifail = ITK_ok, n = 0;
char date_buf[80], *expire_date;
time_t now;
@ -52,166 +51,57 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args)
*decision = ALL_CUSTOMIZATIONS;
printf("register start\n");
ifail = EPM_register_action_handler("bs_file_transfer", "bs_file_transfer",
(EPM_action_handler_t)bs_file_transfer);
if (ifail)
{
printf("register bs_file_transfer failed\n");
}
else
{
printf("register bs_file_transfer successfully\n");
}
ifail = EPM_register_action_handler("bs_sap_material", "bs_sap_material",
(EPM_action_handler_t)bs_sap_material);
if (ifail)
{
printf("register bs_sap_material failed\n");
}
else
{
printf("register bs_sap_material successfully\n");
}
ifail = EPM_register_action_handler("bs_sap_bom", "bs_sap_bom",
(EPM_action_handler_t)bs_sap_bom);
if (ifail)
{
printf("register bs_sap_bom failed\n");
}
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
{
printf("register bs_bom_check successfully\n");
printf("==》register start\n");
ifail = EPM_register_rule_handler("jd_check_jz", "jd_check_jz",
(EPM_rule_handler_t)jd_check_jz);
if (ifail) {
printf("注册 jd_check_jz 失败\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 {
printf("注册 jd_check_jz 成功\n");
}
else
{
printf("register bs_wl_check successfully\n");
}
ifail = EPM_register_action_handler("bs_sign_cad", "bs_sign_cad",
(EPM_action_handler_t)bs_sign_cad);
if (ifail)
{
printf("register bs_sign_cad failed\n");
}
else
{
printf("register bs_sign_cad successfully\n");
return ifail;
}
}
ifail = EPM_register_action_handler("bs_test_release_check", "bs_test_release_check",
(EPM_action_handler_t)bs_test_release_check);
if (ifail)
extern DLLAPI int USERSERVICE_custom_register_methods() {
int ifail = ITK_ok;
int argCount = 0,
returnArgType = 0,
* argList = NULL;
USER_function_t functionPoint;
//===========1 Uservice============
argCount = 2;
//处理当前服务的函数方法USERSEVICE_getProperties来源cust-uservice.h中声明方法
functionPoint = USERSEVICE_getProperties;
//手动开辟一块地址
argList = (int*)MEM_alloc(argCount * sizeof(int));
argList[0] = USERARG_TAG_TYPE;
argList[1] = USERARG_ARRAY_TYPE + USERARG_STRING_TYPE;
returnArgType = USERARG_STRING_TYPE;
//参数1服务名称
//参数2-functionPoint,:函数指针;
//参数3-argCount服务入参个数
//参数4-argList服务入参的参数类型
//参数5-returnArgType返回值类型
ITKCALL(ifail = USERSERVICE_register_method("USERSEVICE_getProperties", functionPoint, argCount, argList, returnArgType));
if (ifail == ITK_ok)
{
printf("register bs_test_release_check failed\n");
printf("USERVICE [USERSEVICE_getProperties] 注册成功!\n");
}
else
{
printf("register bs_test_release_check successfully\n");
printf("USERVICE [USERSEVICE_getProperties] 注册失败!\n");
}
MEM_free(argList);
ifail = EPM_register_action_handler("jd_signoff", "jd_signoff",
(EPM_action_handler_t)jd_signoff);
if (ifail) {
printf("register jd_signoff failed\n");
}
else {
printf("register jd_signoff successfully\n");
}
ifail = EPM_register_action_handler("jd_schedule_joint", "jd_schedule_joint",
(EPM_action_handler_t)jd_schedule_joint);
if (ifail == ITK_ok) {
fprintf(stdout, "Registering action handler jd_schedule_joint completed!\n");
} 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 {
printf("register jd_batch_process successfully\n");
}
ifail = EPM_register_action_handler("jd_add_attachments", "jd_add_attachments",
(EPM_action_handler_t)jd_add_attachments);
if (ifail) {
printf("register jd_add_attachments failed\n");
} else {
printf("register jd_add_attachments successfully\n");
}
//if(ifail == ITK_ok)
//{
// fprintf(stdout,"Registering action handler qtmc-sign-ir completed!\n");
//}
//else
//{
// fprintf(stdout , "Registering action handler qtmc-sign-ir failed %d!\n",ifail);
//}
//===================2 Uservice=================================
return ifail;
}
//
////register service method
extern DLLAPI int USERSERVICE_custom_register_methods()
{
int status = 0;
METHOD_id_t mth_tag;
METHOD_find_method("BOMWindow", "BOMWindow_save", &mth_tag);
printf("register service\n");
if (mth_tag.id)
{
printf("register bomwindow_save\n");
status = METHOD_add_action(mth_tag, METHOD_pre_action_type, (METHOD_function_t)bs_bom_save_check, NULL);
if (status == ITK_ok)
{
printf("register bomwindow_save success\n");
}
else
{
printf("register bomwindow_save failed\n");
}
int numberOfArguments = 1,
returnValueType = USERARG_STRING_TYPE,
*argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int));
argumentList[0] = USERARG_LOGICAL_TYPE;;
USER_function_t functionPtr;
functionPtr = bs_bypass;
status = USERSERVICE_register_method("bs_bypass", functionPtr, numberOfArguments, argumentList, returnValueType);
if (status == ITK_ok) {
printf("register bs_bypass success\n");
} else {
printf("register bs_bypass failed\n");
}
}
return 0;
}

@ -21,6 +21,8 @@ extern "C" {
#endif
extern DLLAPI int CUST_init_module(int *, va_list);
//extern DLLAPI int USERSERVICE_custom_register_methods();
extern DLLAPI int USERSERVICE_custom_register_methods();

@ -70,24 +70,27 @@ int jd_add_attachments(EPM_action_message_t msg) {
char *temp_key, *temp_val;
ITK_ask_argument_named_value(TC_next_argument(arguments), &temp_key, &temp_val);
paras[temp_key] = temp_val;
cout << temp_key << endl;
}
const char *relation = paras["realtion"].c_str();
const char *relation = paras["relation"].c_str();
const char *item = paras["item"].c_str();
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);
if (tc_strcmp(att_type, "ItemRevision") == 0) {
printf("target type:%s\n", att_type);
if (tc_strcmp(att_type, "JD2_GTSYWTSRevision") == 0) {
tag_t *csjh;
int csjh_cnt;
AOM_ask_value_tags(attachments[i], relation, &csjh_cnt, &csjh);
for (int ii = 0;ii < csjh_cnt;ii++) {
char *item_type;
AOM_ask_value_string(csjh[ii], "object_type", &item_type);
printf("csjh_type:%s\n", item_type);
if (tc_strcmp(item_type, item) == 0) {
tag_t *csjh_revs;
int rev_cnt;
@ -98,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);
}
@ -108,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,312 @@
#include "util.h"
#include <ae/dataset.h>
#include <sa/am.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;
//为输入业务对象构造一个SaveAsInput对象。
//使用这个SaveAsInput对象来保存用于创建对象的输入数据。
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;
//检索输入对象(正在进行的顶级对象)的DeepCopyData标记opvar指定的操作类型如SaveAs或modify。
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) {
//返回指定工作空间对象的对象ID。字符串是出现在工作区显示的对象列中的对象ID。
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) {
//返回指定工作空间对象的对象ID。字符串是出现在工作区显示的对象列中的对象ID。
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);
}
//控件中的修改数据对指定的输入对象进行修改,属性和深度复制附加的对象,DeepCopyData提供。
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++) {
//返回指定工作空间对象的对象ID。字符串是出现在工作区显示的对象列中的对象ID。
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);
}
static int grant_access(tag_t dataset_tag, tag_t user)
{
int ifail = ITK_ok;
tag_t write_prev = NULLTAG;
ifail = AOM_refresh(dataset_tag, POM_modify_lock);
if (ifail != ITK_ok)
{
return ifail;
}
ifail = AM_find_privilege("WRITE", &write_prev);
if (ifail != ITK_ok)
{
AOM_unlock(dataset_tag);
return ifail;
}
ifail = AM_grant_privilege(dataset_tag, user, write_prev);//赋予写权限
if (ifail != ITK_ok)
{
AOM_unlock(dataset_tag);
return ifail;
}
ifail = AM_save_acl(dataset_tag);
if (ifail != ITK_ok)
{
AOM_unlock(dataset_tag);
return ifail;
}
ifail = AE_save_myself(dataset_tag);
if (ifail != ITK_ok)
{
AOM_unlock(dataset_tag);
return ifail;
}
return ifail;
}
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;
vector<tag_t> items;
POM_AM__set_application_bypass(true);
//遍历任务组件
for (int i = 0;i < att_cnt;i++) {
if (isTypeOf(attachments[i], "ItemRevision")) {
revs.push_back(attachments[i]);
//////////////////////////////////////////////////////////////////////////////////////
int object_att;
tag_t* object;
//得到零组件
AOM_ask_value_tags(attachments[i], "items_tag", &object_att, &object);
tag_t owning_user, group;
//询问单值属性的值。获取对象所有者
AOM_ask_value_tag(msg.task, "owning_user", &owning_user);
//给写权限
grant_access(object[0], owning_user);
//返回用户的默认登录组属性。
//SA_ask_user_login_group(owning_user, &group);
//AOM_lock(object[0]);
//int res = ITK_ok;
//char* uid;
////设置对象的用户和组所有权。
//ITKCALL(AOM_set_ownership(object[0], owning_user, group));
////将应用程序对象保存到数据库中。在调用save之前必须首先加载或刷新对象以进行修改。
//ITKCALL(res = AOM_save(object[0]));
//if (res != ITK_ok) {
// //注意返回的“UID”对于一个BOM标签不是持久化到另一个会话并且对于道具标签是无效的
// ITK__convert_tag_to_uid(object[0], &uid);
// cout << uid << endl;
// //释放指定的内存块。
// if (uid) MEM_free(uid);
//}
//AOM_unlock(object[0]);
//////////////////////////////////////////////////////////////////////////////////////
}
}
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);
//询问单值属性的值。获取用户name
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;
//询问数据类型为“String”的首选项的所有值。
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));
//将应用程序对象保存到数据库中。在调用save之前必须首先加载或刷新对象以进行修改。
ITKCALL(res = AOM_save(tags[i]));
if (res != ITK_ok) {
//注意返回的“UID”对于一个BOM标签不是持久化到另一个会话并且对于道具标签是无效的
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;
}

@ -1,59 +1,5 @@
#include "HTTPRequest.hpp"
#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 <iostream>
#include <string>
#include <fstream>
#include "util.h"
using namespace std;
DWORD WINAPI sendRequest(void *uid) {
@ -70,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;
@ -87,19 +35,32 @@ 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);
AOM_ask_value_tag(job, "process_template", &process_template);
vector<tag_t> process_vec;
stringstream form_names;
for (int i = 0; i < att_count; i++) {
char *object_string, *object_type;
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], "ItemRevision")) {
char *name;
AOM_ask_value_string(attachments[i], "object_string", &name);
form_names << name;
continue;
}
tag_t new_process;
ITKCALL(EPM_create_process(object_string, "", process_template, 1, &attachments[i], &type, &new_process));
process_vec.push_back(new_process);
@ -108,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);
@ -118,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);
@ -132,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));
@ -141,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)
@ -149,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);
@ -176,12 +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++) {
EPM_ask_root_task(process_vec[i], &root_task1);
int process_index = 0;
for (int i = 0; i < att_count; i++) {
if (!isTypeOf(attachments[i], "ItemRevision")) {
continue;
}
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) {
@ -197,9 +165,24 @@ int jd_batch_process(EPM_action_message_t msg) {
break;
}
}
int form_cnt;
tag_t *forms;
char *name;
AOM_ask_value_tags(attachments[i], "IMAN_master_form_rev", &form_cnt, &forms);
if (form_cnt > 0) {
AOM_ask_value_string(forms[0], "object_string", &name);
if (form_names.str().find(name) != string::npos) {
tag_t *new_atts = (tag_t *)MEM_alloc(sizeof(tag_t));
new_atts[0] = forms[0];
int types[1];
types[0] = EPM_target_attachment;
ITKCALL(EPM_add_attachments(root_task1, 1, new_atts, types));
}
}
}
EMH_clear_errors();
cout << "batch success" << endl;
char *uid;
ITK__convert_tag_to_uid(job, &uid);
printf("start delete job_uid======>%s\n", uid);

@ -0,0 +1,130 @@
#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 <iostream>
#include <string>
#include <fstream>
using namespace std;
extern "C" int POM_AM__set_application_bypass(logical bypass);
int is_begin_with(const char * str1, char *str2) {
if (str1 == NULL || str2 == NULL)
return -1;
int len1 = strlen(str1);
int len2 = strlen(str2);
if ((len1 < len2) || (len1 == 0 || len2 == 0))
return -1;
char *p = str2;
int i = 0;
while (*p != '\0') {
if (*p != str1[i])
return 0;
p++;
i++;
}
return 1;
}
bool isTypeOf(tag_t objtag, const char * type_name) {
tag_t type = NULLTAG;
TCTYPE_ask_object_type(objtag, &type);
tag_t item_type = NULLTAG;
TCTYPE_find_type(type_name, "", &item_type);
bool is_type = false;
if (item_type != NULLTAG) {
logical isok = FALSE;
TCTYPE_is_type_of(type, item_type, &isok);
if (isok) {
is_type = true;
}
}
return is_type;
}
int jd_check_99_bomyt(EPM_rule_message_t msg) {
POM_AM__set_application_bypass(true);
int ifail = EPM_nogo, 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 *name;
AOM_ask_value_string(attachments[i], "object_string", &name);
printf("name=====>%s\n", name);
if (is_begin_with(name, "99")) {
tag_t *forms;
int form_cnt;
if (isTypeOf(attachments[i], "ItemRevision")) {
AOM_ask_value_tags(attachments[i], "IMAN_master_form_rev", &form_cnt, &forms);
} else if (isTypeOf(attachments[i], "Item")) {
tag_t *revs;
int rev_cnt;
AOM_ask_value_tags(attachments[i], "revision_list", &rev_cnt, &revs);
AOM_ask_value_tags(revs[rev_cnt - 1], "IMAN_master_form_rev", &form_cnt, &forms);
}
if (form_cnt > 0) {
char *prop;
AOM_ask_value_string(forms[0], "jd2_BOMyt", &prop);
if (tc_strcmp(prop, "5") == 0) {
ifail = EPM_go;
}
}
} else {
ifail = EPM_go;
}
}
POM_AM__set_application_bypass(false);
return ifail;
}

@ -0,0 +1,74 @@
#include "util.h"
#include <boost/algorithm/string/predicate.hpp>
#include <boost/lexical_cast.hpp>
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));
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 (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, res);
}
}
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;
vector<string> res;
checkCGLX(top_line, &flag, &res);
ITKCALL(BOM_close_window(window));
cout << "flag:" << boolalpha << flag << endl;
if (!flag) {
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;
}

@ -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[10] = { "ZF01" ,"ZF02" ,"ZF03" ,"ZF04" ,"ZF05" ,"ZF06" ,"ZF07","ZF09","ZF10"};
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,51 @@
#include "util.h"
int jd_check_wlms_len(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);
stringstream oss;
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;
}
char *wlms;
char *item_id;
AOM_ask_value_string(forms[0], "jd2_wlms", &wlms);
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) {
length++;
} else {
i += 1;
length++;
}
}
cout << "length: " << length << endl;
if (length > 40) {
POM_AM__set_application_bypass(false);
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;
}

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

@ -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;
@ -341,7 +350,7 @@ extern "C" {
s << "sign2fileRunnable.jar";
add_path(env, s.str().c_str());
}
printf("add path\n");
jclass class_Test;
int file_type = -1;
@ -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,17 +499,17 @@ 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;
}
}
}
}
return ifail;
}

@ -0,0 +1,41 @@
#include "util.h"
int jd_get_target(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")) {
AOM_ask_value_string(attachments[i], "item_id", &item_id);
AOM_ask_value_string(attachments[i], "item_revision_id", &item_revision_id);
ss << item_id;
ss << "/";
ss << item_revision_id;
ss << ",";
}
}
string temp = ss.str().substr(0, ss.str().length() - 1);
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();
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,13 +111,19 @@ 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);
}
if (job_name != NULL) {
MEM_free(job_name);
job_name = NULL;

@ -0,0 +1,109 @@
#include "CSendMail.h"
#include "boost\algorithm\\string.hpp"
#include "util.h"
int jd_send_mail(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;
ITK_ask_argument_named_value(TC_next_argument(arguments), &temp_key, &temp_val);
paras[temp_key] = temp_val;
}
stringstream mail_content;
if (att_cnt <= 0) {
return 0;
}
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();
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++) {
mail_content << target_vec[i].c_str();
mail_content << " ";
mail_content << paras["mail_para"];
mail_content << "\r\n";
}
POM_AM__set_application_bypass(false);
vector<string> address, to_name, from_pref;
stringstream mail_body;
tag_t owning;
char *from_user, **pref_values;
int pref_cnt, from_index = -1;
split(paras["mail_address"], ",", &address);
AOM_ask_value_tag(root_task, "owning_user", &owning);
AOM_ask_value_string(owning, "object_string", &from_user);
PREF_ask_char_values("jd2_user_mail_account", &pref_cnt, &pref_values);
printf("from_user:%s\n", from_user);
for (int i = 0; i < pref_cnt; i++) {
split(pref_values[i], ":", &from_pref);
printf("pref:%s\n", pref_values[i]);
}
if (from_pref.size() == 0) {
printf("没有找到对应用户邮箱\n");
return 0;
}
CSendMail sMailer;
sMailer.setServerName("smtp.mxhichina.com"); //邮箱smtp,如"smtp.126.com"
sMailer.setUserName("lvmh@jide.cn"); //邮箱账号名,如"****@126.com"
sMailer.setUserPwd("lmh1995815."); //邮箱密码
sMailer.setSenderName(from_user); //发件人名字
sMailer.setSenderAddress("lvmh@jide.cn"); //发送邮箱地址,填你账号的地址,上面的邮箱账号名"****@126.com"
mail_content << "\r\n";
mail_content << "from: ";
mail_content << from_user;
mail_content << "\r\n";
mail_content << "email: ";
mail_content << from_pref[1];
mail_content << "\r\n";
for (int i = 0; i < address.size(); i++) {
split(address[i], "@", &to_name);
sMailer.addReceiver(to_name[0].c_str(), address[i].c_str()); //添加邮件接收者
to_name.clear();
}
if (sMailer.Connent()) { //每次发邮件前都需要connect
if (sMailer.SendMail("SAP更改", mail_content.str().c_str())) //第一个字符串是邮件标题,第二个是邮件内容
cout << "邮件发送成功!\n";
}
return 0;
}

@ -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\\"
@ -111,7 +52,7 @@ static void replace_dataset_named_reference(tag_t dataset_tag, tag_t old_file,
AOM_lock(old_file);
IMF_ask_original_file_name2(old_file, &name);
printf("old name:%s\n",name);
printf("old name:%s\n", name);
IMF_replace_file_and_get_new_tag(old_file, new_file_path,
FALSE, &new_file_tag);
@ -121,8 +62,10 @@ static void replace_dataset_named_reference(tag_t dataset_tag, tag_t old_file,
AE_replace_dataset_named_ref2(dataset_tag, old_file, ref_name,
AE_PART_OF, new_file_tag);
AE_save_myself(dataset_tag);
AOM_lock(new_file_tag);
IMF_set_original_file_name2(new_file_tag, name);
AOM_save(new_file_tag);
AOM_unlock(new_file_tag);
AOM_unlock(dataset_tag);
IMF_release_file_access(&file_data);
}
@ -163,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;
}
@ -270,6 +213,7 @@ int jd_signoff(EPM_action_message_t msg) {
//获取当前用户
POM_get_user(&user_name, &user_tag);
cout << "login user:" << user_name << endl;
//获取选中的目标对象
TC_argument_list_t * arguments = msg.arguments;
@ -278,6 +222,9 @@ int jd_signoff(EPM_action_message_t msg) {
EPM_ask_root_task(msg.task, &rootTask);
EPM_ask_attachments(rootTask, EPM_target_attachment, &att_count, &attachments);
char *task_uid;
ITK__convert_tag_to_uid(rootTask, &task_uid);
//获取流程中配置的handler属性
map<string, string> paras;
for (auto i = 0; i < arg_cnt; i++) {
@ -295,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 << ",";
@ -365,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*);
printf("after load jvm\n");
//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;
// }
//}
stringstream s;
//printf("after load jvm\n");
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);
@ -432,36 +381,70 @@ int jd_signoff(EPM_action_message_t msg) {
if (isTypeOf(attachments[ii], "ItemRevision")) {
ITKCALL(AOM_ask_value_tags(attachments[ii], "IMAN_master_form_rev", &objects_count, &objects));
//表单签名
char *task_type;
int valid_signoffs_cnt;
tag_t *valid_signoffs;
AOM_ask_value_string(msg.task, "task_type", &task_type);
cout << "任务类型:" << task_type << endl;
stringstream new_name;
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++) {
char *res;
AOM_ask_value_string(valid_signoffs[i], "fnd0Status", &res);
if (tc_strcmp(res, "批准") == 0) {
tag_t performer;
char *name;
AOM_ask_value_tag(valid_signoffs[i], "fnd0Performer", &performer);
AOM_ask_value_string(performer, "user_name", &name);
cout << "执行者:" << name << endl;
new_name << name << ",";
}
}
}
else {
new_name << user_name << ",";
}
string signoff_name(new_name.str().substr(0, new_name.str().length() - 1).c_str());
//new_name << user_name;
map<char*, char*> props;
for (auto iii = 0; iii < objects_count; iii++) {
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, user_name));
} else {
ITKCALL(AOM_set_value_string(objects[iii], sign_location, signoff_name.c_str()));
}
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());
@ -474,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());
@ -489,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));
@ -501,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(), user_name, (char*)sign_location, (char*)temps.str().c_str());
if (res) {
replace_dataset_named_reference(dataset[i], word_ref, ss.str().c_str(), "word");
} else {
return -1;
}
} else if (file_type == 1) {
class_Test = env->FindClass("sign2file/SignToExcel");
int res = sign(env, class_Test, ss.str().c_str(), user_name, (char*)sign_location, (char*)temps.str().c_str());
if (res) {
replace_dataset_named_reference(dataset[i], excel_ref, ss.str().c_str(), "excel");
} else {
return -1;
}
//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 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;
//}
}
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));
@ -537,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));
@ -549,32 +552,54 @@ 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(), user_name, (char*)sign_location, (char*)temps.str().c_str());
if (res) {
replace_dataset_named_reference(dataset[i], word_ref, ss.str().c_str(), "word");
} else {
return -1;
}
} else if (file_type == 1) {
class_Test = env->FindClass("sign2file/SignToExcel");
int res = sign(env, class_Test, ss.str().c_str(), user_name, (char*)sign_location, (char*)temps.str().c_str());
if (res) {
replace_dataset_named_reference(dataset[i], excel_ref, ss.str().c_str(), "excel");
} else {
return -1;
}
//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 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;
//}
}
command.str("");
command.clear();
file_type = -1;
}
new_name.str("");
new_name.clear();
MEM_free(dataset);
printf("endSign\n");
}
}
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,5 +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>

@ -58,4 +58,94 @@ 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();
}

@ -51,6 +51,9 @@
#include "tchar.h"
#include "ics/ics.h"
#include "ics/ics2.h"
#include <fstream>
#include <io.h>
#include <stdlib.h>
#using "./declib.dll"
using namespace std;
@ -58,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,4 +0,0 @@
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.00.24210.0
; Generated by VC++ for Common Language Runtime
.file "C:\Users\lyf\AppData\Local\Temp\.NETFramework,Version=v4.0.AssemblyAttributes.cpp"

@ -1,34 +1,48 @@
e:\work\vs_workspace\jditk\hezon_itk\x64\release\vc140.pdb
e:\work\vs_workspace\jditk\hezon_itk\x64\release\util.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_signoff.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_schedule_joint.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_complate_first_task.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_clear_field.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_batch_process.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\jd_add_attachments.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_custom_main.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\epm_register_handler.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_wl_check.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_test_release_check.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_sign_cad.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_signoff.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_sap.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_file_transfer.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_bypass.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\bs_bom_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\.netframework,version=v4.0.assemblyattributes.obj
e:\work\vs_workspace\jditk\hezon_itk\x64\release\.netframework,version=v4.0.assemblyattributes.asm
e:\work\vs_workspace\jditk\x64\release\bs.dll
e:\work\vs_workspace\jditk\x64\release\hezon_itk.pdb
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\metagen.write.1.tlog
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.vcxprojresolveassemblyreference.cache
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\cl.command.1.tlog
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\cl.read.1.tlog
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\cl.write.1.tlog
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\link.command.1.tlog
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\link.read.1.tlog
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\link.write.1.tlog
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\metagen.read.1.tlog
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\declib.dll.metagen
e:\work\vs_workspace\jditk\hezon_itk\x64\release\hezon_itk.tlog\tzres.dll.bi
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\vc142.pdb
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_send_mail.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_prop_relate.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_get_target2.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_get_target.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_ckeck_bom_use.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_check_bom_99.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_check_99_cglx.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_auto_revise.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\csendmail.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\check_release_issus.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_wl_check.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_test_release_check.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_sign_cad.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_signoff.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_sap.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_file_transfer.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_bypass.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_bom_transmit_check.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_bom_save_check.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_bom_check.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\.netframework,version=v4.0.assemblyattributes.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_rev_release.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_check_id_wllx.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\util.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\sample_confirmation_sheet.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_splicing_task.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_check_wlms_len.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_signoff.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_send_mail2.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_schedule_joint.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_clear_field.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_check_99_bomyt.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_batch_process.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\jd_add_attachments.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\bs_custom_main.obj
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\epm_register_handler.obj
e:\itk_workspace\itk\吉德\itk\itk\x64\release\bs.dll
e:\itk_workspace\itk\吉德\itk\itk\x64\release\hezon_itk.pdb
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\hezon_itk.tlog\metagen.write.1.tlog
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\hezon_itk.tlog\cl.command.1.tlog
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\hezon_itk.tlog\cl.read.1.tlog
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\hezon_itk.tlog\cl.write.1.tlog
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\hezon_itk.tlog\link.command.1.tlog
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\hezon_itk.tlog\link.read.1.tlog
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\hezon_itk.tlog\link.write.1.tlog
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\hezon_itk.tlog\metagen.read.1.tlog
e:\itk_workspace\itk\吉德\itk\itk\hezon_itk\x64\release\hezon_itk.tlog\declib.dll.metagen

@ -1,2 +0,0 @@
#v4.0:v110:false
Release|x64|C:\Users\Administrator\Documents\c++\HEZON_ITK\|

@ -1,202 +0,0 @@
 bs_bom_check.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
bs_bom_check.cpp(27): warning C4101: “lines”: 未引用的局部变量
bs_bom_check.cpp(26): warning C4101: “line_cnt”: 未引用的局部变量
bs_bom_save_check.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
bs_bom_save_check.cpp(47): warning C4101: “num”: 未引用的局部变量
bs_bypass.cpp
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
bs_file_transfer.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
bs_sap.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
bs_sap.cpp(8): warning C4101: “obj_type”: 未引用的局部变量
bs_sap.cpp(260): warning C4101: “obj_type”: 未引用的局部变量
bs_sap.cpp(292): warning C4101: “lines”: 未引用的局部变量
bs_sap.cpp(290): warning C4101: “line_cnt”: 未引用的局部变量
bs_signoff.cxx
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
bs_signoff.cxx(63): warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\time.h(505): note: 参见“localtime”的声明
bs_sign_cad.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
bs_sign_cad.cpp(36): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdlib.h(1183): note: 参见“getenv”的声明
bs_test_release_check.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
bs_test_release_check.cpp(44): warning C4101: “rels”: 未引用的局部变量
bs_test_release_check.cpp(45): warning C4101: “val”: 未引用的局部变量
bs_test_release_check.cpp(44): warning C4101: “win”: 未引用的局部变量
bs_test_release_check.cpp(44): warning C4101: “top”: 未引用的局部变量
bs_test_release_check.cpp(44): warning C4101: “tags”: 未引用的局部变量
bs_test_release_check.cpp(44): warning C4101: “tag”: 未引用的局部变量
bs_test_release_check.cpp(43): warning C4101: “tag_cnt”: 未引用的局部变量
bs_test_release_check.cpp(43): warning C4101: “rel_cnt”: 未引用的局部变量
bs_wl_check.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
epm_register_handler.cxx
epm_register_handler.cxx(50): warning C4101: “now”: 未引用的局部变量
epm_register_handler.cxx(49): warning C4101: “expire_date”: 未引用的局部变量
epm_register_handler.cxx(49): warning C4101: “date_buf”: 未引用的局部变量
epm_register_handler.cxx(51): warning C4101: “p”: 未引用的局部变量
bs_custom_main.cxx
jd_add_attachments.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
jd_add_attachments.cpp(114): warning C4267: “参数”: 从“size_t”转换到“int”可能丢失数据
jd_batch_process.cpp
e:\work\vs_workspace\jditk\hezon_itk\HTTPRequest.hpp(193): warning C4267: “参数”: 从“size_t”转换到“int”可能丢失数据
e:\work\vs_workspace\jditk\hezon_itk\HTTPRequest.hpp(199): warning C4267: “参数”: 从“size_t”转换到“int”可能丢失数据
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
jd_batch_process.cpp(155): warning C4267: “参数”: 从“size_t”转换到“int”可能丢失数据
jd_batch_process.cpp(85): warning C4101: “rels”: 未引用的局部变量
jd_batch_process.cpp(85): warning C4101: “new_process”: 未引用的局部变量
jd_batch_process.cpp(86): warning C4101: “val”: 未引用的局部变量
jd_batch_process.cpp(85): warning C4101: “win”: 未引用的局部变量
jd_batch_process.cpp(85): warning C4101: “top”: 未引用的局部变量
jd_batch_process.cpp(85): warning C4101: “tags”: 未引用的局部变量
jd_batch_process.cpp(85): warning C4101: “tag”: 未引用的局部变量
jd_batch_process.cpp(84): warning C4101: “tag_cnt”: 未引用的局部变量
jd_batch_process.cpp(84): warning C4101: “rel_cnt”: 未引用的局部变量
jd_clear_field.cpp
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
jd_clear_field.cpp(119): warning C4267: “初始化”: 从“size_t”转换到“uint32_t”可能丢失数据
jd_clear_field.cpp(181): warning C4190: “GBKToUTF8”有指定的 C 链接,但返回了与 C 不兼容的 UDT“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xstring(2633): note: 参见“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”的声明
jd_clear_field.cpp(255): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdlib.h(1183): note: 参见“getenv”的声明
jd_clear_field.cpp(275): warning C4996: '_snprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h(1952): note: 参见“_snprintf”的声明
jd_clear_field.cpp(287): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdlib.h(1183): note: 参见“getenv”的声明
jd_clear_field.cpp(289): warning C4477: “printf”: 格式字符串“%s”需要类型“char *”的参数,但可变参数 1 拥有了类型“const wchar_t *”
jd_clear_field.cpp(289): note: 请考虑在格式字符串中使用“%ls”
jd_clear_field.cpp(289): note: 请考虑在格式字符串中使用“%lls”
jd_clear_field.cpp(289): note: 请考虑在格式字符串中使用“%Ls”
jd_clear_field.cpp(289): note: 请考虑在格式字符串中使用“%ws”
jd_clear_field.cpp(244): warning C4101: “sign_location1”: 未引用的局部变量
jd_clear_field.cpp(249): warning C4101: “rev_attachments”: 未引用的局部变量
jd_clear_field.cpp(247): warning C4101: “ref_obj”: 未引用的局部变量
jd_clear_field.cpp(245): warning C4101: “attach_type”: 未引用的局部变量
jd_clear_field.cpp(244): warning C4101: “sign_str”: 未引用的局部变量
jd_clear_field.cpp(504): warning C4101: “err_function”: 未引用的局部变量
jd_clear_field.cpp(504): warning C4101: “err_string”: 未引用的局部变量
jd_schedule_joint.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
jd_signoff.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
jd_signoff.cpp(82): warning C4267: “初始化”: 从“size_t”转换到“uint32_t”可能丢失数据
jd_signoff.cpp(232): warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\time.h(505): note: 参见“localtime”的声明
jd_signoff.cpp(247): warning C4996: '_snprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h(1952): note: 参见“_snprintf”的声明
jd_signoff.cpp(266): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdlib.h(1183): note: 参见“getenv”的声明
jd_signoff.cpp(369): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdlib.h(1183): note: 参见“getenv”的声明
jd_signoff.cpp(226): warning C4101: “verdict”: 未引用的局部变量
jd_signoff.cpp(260): warning C4101: “rev_attachments”: 未引用的局部变量
jd_signoff.cpp(259): warning C4101: “ref_obj”: 未引用的局部变量
jd_signoff.cpp(257): warning C4101: “attach_type”: 未引用的局部变量
jd_signoff.cpp(221): warning C4101: “sign_str”: 未引用的局部变量
util.cpp
e:\work\vs_workspace\jditk\hezon_itk\epm_handler_common.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
E:\work\include12_2\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
util.cpp(32): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
util.cpp(49): warning C4996: '_snprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h(1952): note: 参见“_snprintf”的声明
正在生成代码...
c:\java\jdk1.8.0_231\include\jni.h(1442): warning C4793: “JNIEnv_::CallStaticIntMethod”: 编译为本机的函数:
/clr 下不支持 varargs
c:\java\jdk1.8.0_231\include\jni.h(1445): warning C4793: “JNIEnv_::CallStaticIntMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1447): warning C4793: “JNIEnv_::CallStaticIntMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1352): warning C4793: “JNIEnv_::CallStaticObjectMethod”: 编译为本机的函数:
/clr 下不支持 varargs
c:\java\jdk1.8.0_231\include\jni.h(1355): warning C4793: “JNIEnv_::CallStaticObjectMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1357): warning C4793: “JNIEnv_::CallStaticObjectMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(868): warning C4793: “JNIEnv_::NewObject”: 编译为本机的函数:
/clr 下不支持 varargs
c:\java\jdk1.8.0_231\include\jni.h(871): warning C4793: “JNIEnv_::NewObject”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(873): warning C4793: “JNIEnv_::NewObject”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1051): warning C4793: “JNIEnv_::CallVoidMethod”: 编译为本机的函数:
/clr 下不支持 varargs
c:\java\jdk1.8.0_231\include\jni.h(1053): warning C4793: “JNIEnv_::CallVoidMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1055): warning C4793: “JNIEnv_::CallVoidMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
e:\work\vs_workspace\jditk\hezon_itk\jd_clear_field.cpp(480): warning C4793: “JD_Revise_clear”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
e:\work\vs_workspace\jditk\hezon_itk\jd_clear_field.cpp(481): warning C4793: “JD_Revise_clear”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1442): warning C4793: “JNIEnv_::CallStaticIntMethod”: 编译为本机的函数:
/clr 下不支持 varargs
c:\java\jdk1.8.0_231\include\jni.h(1445): warning C4793: “JNIEnv_::CallStaticIntMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1447): warning C4793: “JNIEnv_::CallStaticIntMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1352): warning C4793: “JNIEnv_::CallStaticObjectMethod”: 编译为本机的函数:
/clr 下不支持 varargs
c:\java\jdk1.8.0_231\include\jni.h(1355): warning C4793: “JNIEnv_::CallStaticObjectMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1357): warning C4793: “JNIEnv_::CallStaticObjectMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(868): warning C4793: “JNIEnv_::NewObject”: 编译为本机的函数:
/clr 下不支持 varargs
c:\java\jdk1.8.0_231\include\jni.h(871): warning C4793: “JNIEnv_::NewObject”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(873): warning C4793: “JNIEnv_::NewObject”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1051): warning C4793: “JNIEnv_::CallVoidMethod”: 编译为本机的函数:
/clr 下不支持 varargs
c:\java\jdk1.8.0_231\include\jni.h(1053): warning C4793: “JNIEnv_::CallVoidMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
c:\java\jdk1.8.0_231\include\jni.h(1055): warning C4793: “JNIEnv_::CallVoidMethod”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
e:\work\vs_workspace\jditk\hezon_itk\bs_bom_save_check.cpp(50): warning C4793: “bs_bom_save_check”: 编译为本机的函数:
托管代码中发现一个不受支持的内部函数
.NETFramework,Version=v4.0.AssemblyAttributes.cpp
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(1189,5): warning MSB8012: TargetPath(E:\work\vs_workspace\jditk\x64\Release\HEZON_ITK.dll) does not match the Linker's OutputFile property value (E:\work\vs_workspace\jditk\x64\Release\bs.dll). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(1191,5): warning MSB8012: TargetName(HEZON_ITK) does not match the Linker's OutputFile property value (bs). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
util.obj : warning LNK4006: "bool __cdecl isTypeOf(unsigned int,char const *)" (?isTypeOf@@$$FYA_NIPEBD@Z) 已在 jd_signoff.obj 中定义;已忽略第二个定义
util.obj : warning LNK4006: "bool __cdecl isTypeOf(unsigned int,char const *)" (?isTypeOf@@YA_NIPEBD@Z) 已在 jd_signoff.obj 中定义;已忽略第二个定义
MSVCRT.lib(default_local_stdio_options.obj) : warning LNK4006: __local_stdio_printf_options 已在 libassy_jt.lib(libassy_jt.dll) 中定义;已忽略第二个定义
正在创建库 E:\work\vs_workspace\jditk\x64\Release\\bs.lib 和对象 E:\work\vs_workspace\jditk\x64\Release\\bs.exp
jd_signoff.obj : warning LNK4248: 无法解析 typeref 标记(01000016)(为“_jmethodID”);映像可能无法运行
jd_clear_field.obj : warning LNK4248: 无法解析 typeref 标记(01000017)(为“_jmethodID”);映像可能无法运行
E:\work\vs_workspace\jditk\x64\Release\\bs.dll : warning LNK4088: 因 /FORCE 选项生成了映像;映像可能不能运行
HEZON_ITK.vcxproj -> E:\work\vs_workspace\jditk\x64\Release\HEZON_ITK.dll
HEZON_ITK.vcxproj -> E:\work\vs_workspace\jditk\x64\Release\HEZON_ITK.pdb (Full PDB)

@ -1,583 +0,0 @@
ImageRuntimeVersion: v4.0.30319
Assembly declib, Version=1.0.*, Culture=固定语言(固定国家/地区):
hash=SHA1, flags=PublicKey
Assembly mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:
hash=None, flags=None
Assembly System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:
hash=None, flags=None
Assembly System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a:
hash=None, flags=None
Assembly System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:
hash=None, flags=None
Assembly System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:
hash=None, flags=None
Assembly Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a:
hash=None, flags=None
Class SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqService: AutoLayout, AnsiClass, Class, Public, BeforeFieldInit
:System.Web.Services.Protocols.SoapHttpClientProtocol
Void .ctor(): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Void .ctor(System.String): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Events:
SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventHandler SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqCompleted:
Methods:
add_SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqCompleted(SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventHandler): PrivateScope, Public, HideBySig, SpecialName
remove_SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqCompleted(SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventHandler): PrivateScope, Public, HideBySig, SpecialName
SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_Req(ZMMS003[]&, ZMMT004[]&): PrivateScope, Public, HideBySig
BeginSI_PLM001_PLM2ERP_SOAP2Proxy_Syn_Req(ZMMS003[], ZMMT004[], AsyncCallback, Object): PrivateScope, Public, HideBySig
EndSI_PLM001_PLM2ERP_SOAP2Proxy_Syn_Req(IAsyncResult, ZMMS003[]&(Out), ZMMT004[]&(Out)): PrivateScope, Public, HideBySig
SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqAsync(ZMMS003[], ZMMT004[]): PrivateScope, Public, HideBySig
SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqAsync(ZMMS003[], ZMMT004[], Object): PrivateScope, Public, HideBySig
CancelAsync(Object): PrivateScope, Public, HideBySig
Class ZMMS003: AutoLayout, AnsiClass, Class, Public, Serializable, BeforeFieldInit
Void .ctor(): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Void .ctor(System.Collections.Generic.Dictionary`2[System.String,System.String]): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Properties:
System.String MBRSH 'get set' :
System.String MTART 'get set' :
System.String MATNR 'get set' :
System.String MAKTX 'get set' :
System.String MEINS 'get set' :
System.String MATKL 'get set' :
System.String SPART 'get set' :
System.String PRDHA 'get set' :
System.String EXTWG 'get set' :
System.String MSTAE 'get set' :
System.Decimal VOLUM 'get set' :
Boolean VOLUMSpecified 'get set' :
System.String VOLEH 'get set' :
System.String BISMT 'get set' :
System.String FERTH 'get set' :
System.String WRKST 'get set' :
System.String GROES 'get set' :
System.String ZEINR 'get set' :
System.Decimal BRGEW 'get set' :
Boolean BRGEWSpecified 'get set' :
System.Decimal NTGEW 'get set' :
Boolean NTGEWSpecified 'get set' :
System.String GEWEI 'get set' :
System.String KLART 'get set' :
System.String CLASS 'get set' :
System.String D001 'get set' :
System.String D002 'get set' :
System.String D003 'get set' :
System.String D004 'get set' :
System.String D005 'get set' :
System.String D006 'get set' :
System.String D007 'get set' :
System.String D008 'get set' :
System.String D009 'get set' :
System.String D010 'get set' :
System.String D011 'get set' :
System.String D012 'get set' :
System.String D013 'get set' :
System.String D014 'get set' :
System.String D015 'get set' :
System.String D016 'get set' :
System.String D017 'get set' :
System.String D018 'get set' :
System.String D019 'get set' :
System.String D020 'get set' :
System.String D021 'get set' :
System.String D022 'get set' :
System.String D023 'get set' :
System.String D024 'get set' :
System.String D025 'get set' :
System.String D026 'get set' :
System.String D027 'get set' :
System.String D028 'get set' :
System.String D029 'get set' :
System.String D030 'get set' :
System.String D031 'get set' :
System.String D032 'get set' :
System.String D033 'get set' :
System.String D034 'get set' :
System.String D035 'get set' :
System.String D036 'get set' :
System.String D037 'get set' :
System.String D038 'get set' :
System.String D039 'get set' :
System.String D040 'get set' :
System.String D041 'get set' :
System.String D042 'get set' :
System.String D043 'get set' :
System.String D044 'get set' :
System.String D045 'get set' :
System.String D046 'get set' :
System.String D047 'get set' :
System.String D048 'get set' :
System.String D049 'get set' :
System.String D050 'get set' :
System.String D051 'get set' :
System.String D052 'get set' :
System.String D053 'get set' :
System.String D054 'get set' :
System.String D055 'get set' :
System.String D056 'get set' :
System.String D057 'get set' :
System.String D058 'get set' :
System.String D059 'get set' :
System.String D060 'get set' :
System.String D061 'get set' :
System.String D062 'get set' :
System.String D063 'get set' :
System.String D064 'get set' :
System.String D065 'get set' :
System.String D066 'get set' :
System.String D067 'get set' :
System.String D068 'get set' :
System.String D069 'get set' :
System.String D070 'get set' :
System.String D071 'get set' :
System.String D072 'get set' :
System.String STATUS 'get set' :
Methods:
get_D060(): PrivateScope, Public, HideBySig, SpecialName
set_D060(String): PrivateScope, Public, HideBySig, SpecialName
get_D061(): PrivateScope, Public, HideBySig, SpecialName
set_D061(String): PrivateScope, Public, HideBySig, SpecialName
get_D062(): PrivateScope, Public, HideBySig, SpecialName
set_D062(String): PrivateScope, Public, HideBySig, SpecialName
get_D063(): PrivateScope, Public, HideBySig, SpecialName
set_D063(String): PrivateScope, Public, HideBySig, SpecialName
get_D064(): PrivateScope, Public, HideBySig, SpecialName
set_D064(String): PrivateScope, Public, HideBySig, SpecialName
get_D065(): PrivateScope, Public, HideBySig, SpecialName
set_D065(String): PrivateScope, Public, HideBySig, SpecialName
get_D066(): PrivateScope, Public, HideBySig, SpecialName
set_D066(String): PrivateScope, Public, HideBySig, SpecialName
get_D067(): PrivateScope, Public, HideBySig, SpecialName
set_D067(String): PrivateScope, Public, HideBySig, SpecialName
get_D068(): PrivateScope, Public, HideBySig, SpecialName
set_D068(String): PrivateScope, Public, HideBySig, SpecialName
get_D069(): PrivateScope, Public, HideBySig, SpecialName
set_D069(String): PrivateScope, Public, HideBySig, SpecialName
get_D070(): PrivateScope, Public, HideBySig, SpecialName
set_D070(String): PrivateScope, Public, HideBySig, SpecialName
get_D071(): PrivateScope, Public, HideBySig, SpecialName
set_D071(String): PrivateScope, Public, HideBySig, SpecialName
get_D072(): PrivateScope, Public, HideBySig, SpecialName
set_D072(String): PrivateScope, Public, HideBySig, SpecialName
get_STATUS(): PrivateScope, Public, HideBySig, SpecialName
set_STATUS(String): PrivateScope, Public, HideBySig, SpecialName
set_D017(String): PrivateScope, Public, HideBySig, SpecialName
get_D018(): PrivateScope, Public, HideBySig, SpecialName
set_D018(String): PrivateScope, Public, HideBySig, SpecialName
get_D019(): PrivateScope, Public, HideBySig, SpecialName
set_D019(String): PrivateScope, Public, HideBySig, SpecialName
get_D020(): PrivateScope, Public, HideBySig, SpecialName
set_D020(String): PrivateScope, Public, HideBySig, SpecialName
get_D021(): PrivateScope, Public, HideBySig, SpecialName
set_D021(String): PrivateScope, Public, HideBySig, SpecialName
get_D022(): PrivateScope, Public, HideBySig, SpecialName
set_D022(String): PrivateScope, Public, HideBySig, SpecialName
get_D023(): PrivateScope, Public, HideBySig, SpecialName
set_D023(String): PrivateScope, Public, HideBySig, SpecialName
get_D024(): PrivateScope, Public, HideBySig, SpecialName
set_D024(String): PrivateScope, Public, HideBySig, SpecialName
get_D025(): PrivateScope, Public, HideBySig, SpecialName
set_D025(String): PrivateScope, Public, HideBySig, SpecialName
get_D026(): PrivateScope, Public, HideBySig, SpecialName
set_D026(String): PrivateScope, Public, HideBySig, SpecialName
get_D027(): PrivateScope, Public, HideBySig, SpecialName
set_D027(String): PrivateScope, Public, HideBySig, SpecialName
get_D028(): PrivateScope, Public, HideBySig, SpecialName
set_D028(String): PrivateScope, Public, HideBySig, SpecialName
get_D029(): PrivateScope, Public, HideBySig, SpecialName
set_D029(String): PrivateScope, Public, HideBySig, SpecialName
get_D030(): PrivateScope, Public, HideBySig, SpecialName
set_D030(String): PrivateScope, Public, HideBySig, SpecialName
get_D031(): PrivateScope, Public, HideBySig, SpecialName
set_D031(String): PrivateScope, Public, HideBySig, SpecialName
get_D032(): PrivateScope, Public, HideBySig, SpecialName
set_D032(String): PrivateScope, Public, HideBySig, SpecialName
get_D033(): PrivateScope, Public, HideBySig, SpecialName
set_D033(String): PrivateScope, Public, HideBySig, SpecialName
get_D034(): PrivateScope, Public, HideBySig, SpecialName
set_D034(String): PrivateScope, Public, HideBySig, SpecialName
get_D035(): PrivateScope, Public, HideBySig, SpecialName
set_D035(String): PrivateScope, Public, HideBySig, SpecialName
get_D036(): PrivateScope, Public, HideBySig, SpecialName
set_D036(String): PrivateScope, Public, HideBySig, SpecialName
get_D037(): PrivateScope, Public, HideBySig, SpecialName
set_D037(String): PrivateScope, Public, HideBySig, SpecialName
get_D038(): PrivateScope, Public, HideBySig, SpecialName
set_D038(String): PrivateScope, Public, HideBySig, SpecialName
get_D039(): PrivateScope, Public, HideBySig, SpecialName
set_D039(String): PrivateScope, Public, HideBySig, SpecialName
get_D040(): PrivateScope, Public, HideBySig, SpecialName
set_D040(String): PrivateScope, Public, HideBySig, SpecialName
get_D041(): PrivateScope, Public, HideBySig, SpecialName
set_D041(String): PrivateScope, Public, HideBySig, SpecialName
get_D042(): PrivateScope, Public, HideBySig, SpecialName
set_D042(String): PrivateScope, Public, HideBySig, SpecialName
get_D043(): PrivateScope, Public, HideBySig, SpecialName
set_D043(String): PrivateScope, Public, HideBySig, SpecialName
get_D044(): PrivateScope, Public, HideBySig, SpecialName
set_D044(String): PrivateScope, Public, HideBySig, SpecialName
get_D045(): PrivateScope, Public, HideBySig, SpecialName
set_D045(String): PrivateScope, Public, HideBySig, SpecialName
get_D046(): PrivateScope, Public, HideBySig, SpecialName
set_D046(String): PrivateScope, Public, HideBySig, SpecialName
get_D047(): PrivateScope, Public, HideBySig, SpecialName
set_D047(String): PrivateScope, Public, HideBySig, SpecialName
get_D048(): PrivateScope, Public, HideBySig, SpecialName
set_D048(String): PrivateScope, Public, HideBySig, SpecialName
get_D049(): PrivateScope, Public, HideBySig, SpecialName
set_D049(String): PrivateScope, Public, HideBySig, SpecialName
get_D050(): PrivateScope, Public, HideBySig, SpecialName
set_D050(String): PrivateScope, Public, HideBySig, SpecialName
get_D051(): PrivateScope, Public, HideBySig, SpecialName
set_D051(String): PrivateScope, Public, HideBySig, SpecialName
get_D052(): PrivateScope, Public, HideBySig, SpecialName
set_D052(String): PrivateScope, Public, HideBySig, SpecialName
get_D053(): PrivateScope, Public, HideBySig, SpecialName
set_D053(String): PrivateScope, Public, HideBySig, SpecialName
get_D054(): PrivateScope, Public, HideBySig, SpecialName
set_D054(String): PrivateScope, Public, HideBySig, SpecialName
get_D055(): PrivateScope, Public, HideBySig, SpecialName
set_D055(String): PrivateScope, Public, HideBySig, SpecialName
get_D056(): PrivateScope, Public, HideBySig, SpecialName
set_D056(String): PrivateScope, Public, HideBySig, SpecialName
get_D057(): PrivateScope, Public, HideBySig, SpecialName
set_D057(String): PrivateScope, Public, HideBySig, SpecialName
get_D058(): PrivateScope, Public, HideBySig, SpecialName
set_D058(String): PrivateScope, Public, HideBySig, SpecialName
get_D059(): PrivateScope, Public, HideBySig, SpecialName
set_D059(String): PrivateScope, Public, HideBySig, SpecialName
get_MBRSH(): PrivateScope, Public, HideBySig, SpecialName
set_MBRSH(String): PrivateScope, Public, HideBySig, SpecialName
get_MTART(): PrivateScope, Public, HideBySig, SpecialName
set_MTART(String): PrivateScope, Public, HideBySig, SpecialName
get_MATNR(): PrivateScope, Public, HideBySig, SpecialName
set_MATNR(String): PrivateScope, Public, HideBySig, SpecialName
get_MAKTX(): PrivateScope, Public, HideBySig, SpecialName
set_MAKTX(String): PrivateScope, Public, HideBySig, SpecialName
get_MEINS(): PrivateScope, Public, HideBySig, SpecialName
set_MEINS(String): PrivateScope, Public, HideBySig, SpecialName
get_MATKL(): PrivateScope, Public, HideBySig, SpecialName
set_MATKL(String): PrivateScope, Public, HideBySig, SpecialName
get_SPART(): PrivateScope, Public, HideBySig, SpecialName
set_SPART(String): PrivateScope, Public, HideBySig, SpecialName
get_PRDHA(): PrivateScope, Public, HideBySig, SpecialName
set_PRDHA(String): PrivateScope, Public, HideBySig, SpecialName
get_EXTWG(): PrivateScope, Public, HideBySig, SpecialName
set_EXTWG(String): PrivateScope, Public, HideBySig, SpecialName
get_MSTAE(): PrivateScope, Public, HideBySig, SpecialName
set_MSTAE(String): PrivateScope, Public, HideBySig, SpecialName
get_VOLUM(): PrivateScope, Public, HideBySig, SpecialName
set_VOLUM(Decimal): PrivateScope, Public, HideBySig, SpecialName
get_VOLUMSpecified(): PrivateScope, Public, HideBySig, SpecialName
set_VOLUMSpecified(Boolean): PrivateScope, Public, HideBySig, SpecialName
get_VOLEH(): PrivateScope, Public, HideBySig, SpecialName
set_VOLEH(String): PrivateScope, Public, HideBySig, SpecialName
get_BISMT(): PrivateScope, Public, HideBySig, SpecialName
set_BISMT(String): PrivateScope, Public, HideBySig, SpecialName
get_FERTH(): PrivateScope, Public, HideBySig, SpecialName
set_FERTH(String): PrivateScope, Public, HideBySig, SpecialName
get_WRKST(): PrivateScope, Public, HideBySig, SpecialName
set_WRKST(String): PrivateScope, Public, HideBySig, SpecialName
get_GROES(): PrivateScope, Public, HideBySig, SpecialName
set_GROES(String): PrivateScope, Public, HideBySig, SpecialName
get_ZEINR(): PrivateScope, Public, HideBySig, SpecialName
set_ZEINR(String): PrivateScope, Public, HideBySig, SpecialName
get_BRGEW(): PrivateScope, Public, HideBySig, SpecialName
set_BRGEW(Decimal): PrivateScope, Public, HideBySig, SpecialName
get_BRGEWSpecified(): PrivateScope, Public, HideBySig, SpecialName
set_BRGEWSpecified(Boolean): PrivateScope, Public, HideBySig, SpecialName
get_NTGEW(): PrivateScope, Public, HideBySig, SpecialName
set_NTGEW(Decimal): PrivateScope, Public, HideBySig, SpecialName
get_NTGEWSpecified(): PrivateScope, Public, HideBySig, SpecialName
set_NTGEWSpecified(Boolean): PrivateScope, Public, HideBySig, SpecialName
get_GEWEI(): PrivateScope, Public, HideBySig, SpecialName
set_GEWEI(String): PrivateScope, Public, HideBySig, SpecialName
get_KLART(): PrivateScope, Public, HideBySig, SpecialName
set_KLART(String): PrivateScope, Public, HideBySig, SpecialName
get_CLASS(): PrivateScope, Public, HideBySig, SpecialName
set_CLASS(String): PrivateScope, Public, HideBySig, SpecialName
get_D001(): PrivateScope, Public, HideBySig, SpecialName
set_D001(String): PrivateScope, Public, HideBySig, SpecialName
get_D002(): PrivateScope, Public, HideBySig, SpecialName
set_D002(String): PrivateScope, Public, HideBySig, SpecialName
get_D003(): PrivateScope, Public, HideBySig, SpecialName
set_D003(String): PrivateScope, Public, HideBySig, SpecialName
get_D004(): PrivateScope, Public, HideBySig, SpecialName
set_D004(String): PrivateScope, Public, HideBySig, SpecialName
get_D005(): PrivateScope, Public, HideBySig, SpecialName
set_D005(String): PrivateScope, Public, HideBySig, SpecialName
get_D006(): PrivateScope, Public, HideBySig, SpecialName
set_D006(String): PrivateScope, Public, HideBySig, SpecialName
get_D007(): PrivateScope, Public, HideBySig, SpecialName
set_D007(String): PrivateScope, Public, HideBySig, SpecialName
get_D008(): PrivateScope, Public, HideBySig, SpecialName
set_D008(String): PrivateScope, Public, HideBySig, SpecialName
get_D009(): PrivateScope, Public, HideBySig, SpecialName
set_D009(String): PrivateScope, Public, HideBySig, SpecialName
get_D010(): PrivateScope, Public, HideBySig, SpecialName
set_D010(String): PrivateScope, Public, HideBySig, SpecialName
get_D011(): PrivateScope, Public, HideBySig, SpecialName
set_D011(String): PrivateScope, Public, HideBySig, SpecialName
get_D012(): PrivateScope, Public, HideBySig, SpecialName
set_D012(String): PrivateScope, Public, HideBySig, SpecialName
get_D013(): PrivateScope, Public, HideBySig, SpecialName
set_D013(String): PrivateScope, Public, HideBySig, SpecialName
get_D014(): PrivateScope, Public, HideBySig, SpecialName
set_D014(String): PrivateScope, Public, HideBySig, SpecialName
get_D015(): PrivateScope, Public, HideBySig, SpecialName
set_D015(String): PrivateScope, Public, HideBySig, SpecialName
get_D016(): PrivateScope, Public, HideBySig, SpecialName
set_D016(String): PrivateScope, Public, HideBySig, SpecialName
get_D017(): PrivateScope, Public, HideBySig, SpecialName
Class ZMMT004: AutoLayout, AnsiClass, Class, Public, Serializable, BeforeFieldInit
Void .ctor(): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Properties:
System.String MANDT 'get set' :
System.String MATNR 'get set' :
System.String ZSTATUS 'get set' :
System.String MESSAGE 'get set' :
Methods:
get_MANDT(): PrivateScope, Public, HideBySig, SpecialName
set_MANDT(String): PrivateScope, Public, HideBySig, SpecialName
get_MATNR(): PrivateScope, Public, HideBySig, SpecialName
set_MATNR(String): PrivateScope, Public, HideBySig, SpecialName
get_ZSTATUS(): PrivateScope, Public, HideBySig, SpecialName
set_ZSTATUS(String): PrivateScope, Public, HideBySig, SpecialName
get_MESSAGE(): PrivateScope, Public, HideBySig, SpecialName
set_MESSAGE(String): PrivateScope, Public, HideBySig, SpecialName
Class SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventHandler: AutoLayout, AnsiClass, Class, Public, Sealed
:System.MulticastDelegate
Void .ctor(System.Object, IntPtr): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Methods:
Invoke(Object, SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventArgs): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask
BeginInvoke(Object, SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventArgs, AsyncCallback, Object): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask
EndInvoke(IAsyncResult): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask
Class SI_PLM001_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventArgs: AutoLayout, AnsiClass, Class, Public, BeforeFieldInit
:System.ComponentModel.AsyncCompletedEventArgs
Properties:
ZMMS003[] IT_DATA 'get ' :
ZMMT004[] IT_RETURN 'get ' :
Methods:
get_IT_DATA(): PrivateScope, Public, HideBySig, SpecialName
get_IT_RETURN(): PrivateScope, Public, HideBySig, SpecialName
Class SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqService: AutoLayout, AnsiClass, Class, Public, BeforeFieldInit
:System.Web.Services.Protocols.SoapHttpClientProtocol
Void .ctor(): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Void .ctor(System.String): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Events:
SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventHandler SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqCompleted:
Methods:
add_SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqCompleted(SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventHandler): PrivateScope, Public, HideBySig, SpecialName
remove_SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqCompleted(SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventHandler): PrivateScope, Public, HideBySig, SpecialName
SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_Req(ZPPS001[]&, ZPPT001[]&): PrivateScope, Public, HideBySig
BeginSI_PLM002_PLM2ERP_SOAP2Proxy_Syn_Req(ZPPS001[], ZPPT001[], AsyncCallback, Object): PrivateScope, Public, HideBySig
EndSI_PLM002_PLM2ERP_SOAP2Proxy_Syn_Req(IAsyncResult, ZPPS001[]&(Out), ZPPT001[]&(Out)): PrivateScope, Public, HideBySig
SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqAsync(ZPPS001[], ZPPT001[]): PrivateScope, Public, HideBySig
SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqAsync(ZPPS001[], ZPPT001[], Object): PrivateScope, Public, HideBySig
CancelAsync(Object): PrivateScope, Public, HideBySig
Class ZPPS001: AutoLayout, AnsiClass, Class, Public, Serializable, BeforeFieldInit
Void .ctor(): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Void .ctor(System.Collections.Generic.Dictionary`2[System.String,System.String]): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Properties:
System.String MATNR 'get set' :
System.String WERKS 'get set' :
System.String STLAN 'get set' :
System.Decimal BMENG 'get set' :
Boolean BMENGSpecified 'get set' :
System.String STLST 'get set' :
System.String POSNR 'get set' :
System.String POSTP 'get set' :
System.String IDNRK 'get set' :
System.Decimal MENGE 'get set' :
Boolean MENGESpecified 'get set' :
System.String MEINS 'get set' :
System.Decimal AUSCH 'get set' :
Boolean AUSCHSpecified 'get set' :
Methods:
get_MATNR(): PrivateScope, Public, HideBySig, SpecialName
set_MATNR(String): PrivateScope, Public, HideBySig, SpecialName
get_WERKS(): PrivateScope, Public, HideBySig, SpecialName
set_WERKS(String): PrivateScope, Public, HideBySig, SpecialName
get_STLAN(): PrivateScope, Public, HideBySig, SpecialName
set_STLAN(String): PrivateScope, Public, HideBySig, SpecialName
get_BMENG(): PrivateScope, Public, HideBySig, SpecialName
set_BMENG(Decimal): PrivateScope, Public, HideBySig, SpecialName
get_BMENGSpecified(): PrivateScope, Public, HideBySig, SpecialName
set_BMENGSpecified(Boolean): PrivateScope, Public, HideBySig, SpecialName
get_STLST(): PrivateScope, Public, HideBySig, SpecialName
set_STLST(String): PrivateScope, Public, HideBySig, SpecialName
get_POSNR(): PrivateScope, Public, HideBySig, SpecialName
set_POSNR(String): PrivateScope, Public, HideBySig, SpecialName
get_POSTP(): PrivateScope, Public, HideBySig, SpecialName
set_POSTP(String): PrivateScope, Public, HideBySig, SpecialName
get_IDNRK(): PrivateScope, Public, HideBySig, SpecialName
set_IDNRK(String): PrivateScope, Public, HideBySig, SpecialName
get_MENGE(): PrivateScope, Public, HideBySig, SpecialName
set_MENGE(Decimal): PrivateScope, Public, HideBySig, SpecialName
get_MENGESpecified(): PrivateScope, Public, HideBySig, SpecialName
set_MENGESpecified(Boolean): PrivateScope, Public, HideBySig, SpecialName
get_MEINS(): PrivateScope, Public, HideBySig, SpecialName
set_MEINS(String): PrivateScope, Public, HideBySig, SpecialName
get_AUSCH(): PrivateScope, Public, HideBySig, SpecialName
set_AUSCH(Decimal): PrivateScope, Public, HideBySig, SpecialName
get_AUSCHSpecified(): PrivateScope, Public, HideBySig, SpecialName
set_AUSCHSpecified(Boolean): PrivateScope, Public, HideBySig, SpecialName
Class ZPPT001: AutoLayout, AnsiClass, Class, Public, Serializable, BeforeFieldInit
Void .ctor(): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Properties:
System.String MANDT 'get set' :
System.String MATNR 'get set' :
System.String TYPE 'get set' :
System.String ID 'get set' :
System.String NUMBER1 'get set' :
System.String MESSAGE 'get set' :
Methods:
get_MANDT(): PrivateScope, Public, HideBySig, SpecialName
set_MANDT(String): PrivateScope, Public, HideBySig, SpecialName
get_MATNR(): PrivateScope, Public, HideBySig, SpecialName
set_MATNR(String): PrivateScope, Public, HideBySig, SpecialName
get_TYPE(): PrivateScope, Public, HideBySig, SpecialName
set_TYPE(String): PrivateScope, Public, HideBySig, SpecialName
get_ID(): PrivateScope, Public, HideBySig, SpecialName
set_ID(String): PrivateScope, Public, HideBySig, SpecialName
get_NUMBER1(): PrivateScope, Public, HideBySig, SpecialName
set_NUMBER1(String): PrivateScope, Public, HideBySig, SpecialName
get_MESSAGE(): PrivateScope, Public, HideBySig, SpecialName
set_MESSAGE(String): PrivateScope, Public, HideBySig, SpecialName
Class SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventHandler: AutoLayout, AnsiClass, Class, Public, Sealed
:System.MulticastDelegate
Void .ctor(System.Object, IntPtr): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Methods:
Invoke(Object, SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventArgs): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask
BeginInvoke(Object, SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventArgs, AsyncCallback, Object): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask
EndInvoke(IAsyncResult): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask
Class SI_PLM002_PLM2ERP_SOAP2Proxy_Syn_ReqCompletedEventArgs: AutoLayout, AnsiClass, Class, Public, BeforeFieldInit
:System.ComponentModel.AsyncCompletedEventArgs
Properties:
ZPPS001[] IT_DATA 'get ' :
ZPPT001[] IT_RETURN 'get ' :
Methods:
get_IT_DATA(): PrivateScope, Public, HideBySig, SpecialName
get_IT_RETURN(): PrivateScope, Public, HideBySig, SpecialName
Class Testdll.Testclass: AutoLayout, AnsiClass, Class, Public, BeforeFieldInit
Void .ctor(): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName
Methods:
test(): PrivateScope, Public, Static, HideBySig
GetToken(String, String): PrivateScope, Public, HideBySig
Send(String, String, String): PrivateScope, Public, HideBySig
send_material(String, String, String, Dictionary`2): PrivateScope, Public, HideBySig
send_bom(String, String, String, List`1): PrivateScope, Public, HideBySig
signCad(String, String, Dictionary`2, String&(Out)): PrivateScope, Public, Static, HideBySig
signCad(String, String, Dictionary`2): PrivateScope, Public, Static, HideBySig
Encrypt(String, String): PrivateScope, Public, HideBySig
Decrypt(String, String): PrivateScope, Public, HideBySig
Interface Autodesk.AutoCAD.Interop.AcadApplication: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.IAcadApplication
Autodesk.AutoCAD.Interop._DAcadApplicationEvents_Event
Interface Autodesk.AutoCAD.Interop.AcadDocument: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.IAcadDocument
Autodesk.AutoCAD.Interop.Common.IAcadDatabase
Autodesk.AutoCAD.Interop._DAcadDocumentEvents_Event
Interface Autodesk.AutoCAD.Interop.AcadDocuments: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.IAcadDocuments
System.Collections.IEnumerable
Interface Autodesk.AutoCAD.Interop.IAcadApplication: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Properties:
Boolean Visible 'get set' :
Autodesk.AutoCAD.Interop.AcadDocuments Documents 'get ' :
Methods:
get_Visible(): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
set_Visible(Boolean(In)): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
Quit(): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract
get_Documents(): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
Interface Autodesk.AutoCAD.Interop.IAcadDocument: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.Common.IAcadDatabase
Properties:
Autodesk.AutoCAD.Interop.Common.AcadModelSpace ModelSpace 'get ' :
Methods:
get_ModelSpace(): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
SaveAs(String(In, HasFieldMarshal), Object(In, Optional, HasFieldMarshal), Object(In, Optional, HasFieldMarshal)): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract
Close(Object(In, Optional, HasFieldMarshal), Object(In, Optional, HasFieldMarshal)): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract
Interface Autodesk.AutoCAD.Interop.IAcadDocuments: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
System.Collections.IEnumerable
Methods:
Item(Object(In, HasFieldMarshal)): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract
Open(String(In, HasFieldMarshal), Object(In, Optional, HasFieldMarshal), Object(In, Optional, HasFieldMarshal)): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract
Interface Autodesk.AutoCAD.Interop._DAcadApplicationEvents: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interface Autodesk.AutoCAD.Interop._DAcadApplicationEvents_Event: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interface Autodesk.AutoCAD.Interop._DAcadDocumentEvents: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interface Autodesk.AutoCAD.Interop._DAcadDocumentEvents_Event: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interface Autodesk.AutoCAD.Interop.Common.AcadAttributeReference: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.Common.IAcadAttributeReference
Autodesk.AutoCAD.Interop.Common.IAcadEntity
Autodesk.AutoCAD.Interop.Common.IAcadObject
Autodesk.AutoCAD.Interop.Common.IAcadObjectEvents_Event
Interface Autodesk.AutoCAD.Interop.Common.AcadBlockReference: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.Common.IAcadBlockReference
Autodesk.AutoCAD.Interop.Common.IAcadEntity
Autodesk.AutoCAD.Interop.Common.IAcadObject
Autodesk.AutoCAD.Interop.Common.IAcadObjectEvents_Event
Interface Autodesk.AutoCAD.Interop.Common.AcadEntity: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.Common.IAcadEntity
Autodesk.AutoCAD.Interop.Common.IAcadObject
Autodesk.AutoCAD.Interop.Common.IAcadObjectEvents_Event
Interface Autodesk.AutoCAD.Interop.Common.AcadModelSpace: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.Common.IAcadModelSpace
Autodesk.AutoCAD.Interop.Common.IAcadBlock
Autodesk.AutoCAD.Interop.Common.IAcadObject
System.Collections.IEnumerable
Autodesk.AutoCAD.Interop.Common.IAcadObjectEvents_Event
Interface Autodesk.AutoCAD.Interop.Common.IAcadAttributeReference: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.Common.IAcadEntity
Autodesk.AutoCAD.Interop.Common.IAcadObject
Properties:
System.String TagString 'get set' :
System.String TextString 'get set' :
Methods:
get_TagString(): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
set_TagString(String(In, HasFieldMarshal)): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
get_TextString(): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
set_TextString(String(In, HasFieldMarshal)): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
Interface Autodesk.AutoCAD.Interop.Common.IAcadBlock: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.Common.IAcadObject
System.Collections.IEnumerable
Methods:
Item(Object(In, HasFieldMarshal)): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract
Interface Autodesk.AutoCAD.Interop.Common.IAcadBlockReference: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.Common.IAcadEntity
Autodesk.AutoCAD.Interop.Common.IAcadObject
Properties:
System.String Name 'get set' :
Methods:
get_Name(): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
set_Name(String(In, HasFieldMarshal)): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
GetAttributes(): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract
Interface Autodesk.AutoCAD.Interop.Common.IAcadDatabase: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interface Autodesk.AutoCAD.Interop.Common.IAcadEntity: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.Common.IAcadObject
Properties:
System.String EntityName 'get ' :
Methods:
get_EntityName(): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract, SpecialName
Interface Autodesk.AutoCAD.Interop.Common.IAcadModelSpace: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interfaces:
Autodesk.AutoCAD.Interop.Common.IAcadBlock
Autodesk.AutoCAD.Interop.Common.IAcadObject
System.Collections.IEnumerable
Methods:
Item(Object(In, HasFieldMarshal)): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract
GetEnumerator(): PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask, Abstract
Interface Autodesk.AutoCAD.Interop.Common.IAcadObject: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interface Autodesk.AutoCAD.Interop.Common.IAcadObjectEvents: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import
Interface Autodesk.AutoCAD.Interop.Common.IAcadObjectEvents_Event: AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract, Import

@ -1,2 +1,2 @@
#TargetFrameworkVersion=v4.0:PlatformToolSet=v140:EnableManagedIncrementalBuild=true:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
Release|x64|E:\work\vs_workspace\jditk\|
PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.29.30133:TargetPlatformVersion=10.0.19041.0:TargetFrameworkVersion=v4.0::EnableManagedIncrementalBuild=true:
Release|x64|E:\ITK_WorkSpace\ITK\吉德\jd_check_jz\itk\|

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,7 +0,0 @@
ImageRuntimeVersion: v4.0.30319
Assembly bs, Version=0.0.*, Culture=固定语言(固定国家/地区):
hash=SHA1, flags=PublicKey
Assembly mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:
hash=None, flags=None
Assembly declib, Version=1.0.*, Culture=固定语言(固定国家/地区):
hash=None, flags=None

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