在 站点 下 找到 实用程序 ,进入 对象初始化规则
找到 document ,下载编辑
找到 set the number to a generated number
可以在 AttrValue 中 ,增加 Arg 标签,增加文档编号的固定值
<AttrValue id="number" algorithm="com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator">
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTDOCUMENTID_seq:10:0}</Arg>
</AttrValue>
如:增加 <Arg> WD </Arg>
<AttrValue id="number" algorithm="com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator">
<Arg> WD </Arg>
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTDOCUMENTID_seq:10:0}</Arg>
</AttrValue>
则生成出的文档编号为:
也可以自定义类,重置编码生成逻辑;
如:自定义编号(eg:A2020123)A+年份+三位序号
package ext.lyric.test;
import wt.rule.algorithm.RuleAlgorithm;
import wt.util.WTException;
import wt.inf.container.WTContainerRef;
import wt.pds.oracle81.OracleDataSource;
import java.util.TimeZone;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.*;
import java.util.*;
/**
* 打开“站点/实用程序/对象初始化规则管理器”,然后在初始化规则管理里找到wt.doc.WTDocument,
* 下载其初始化规则文件rule.xml到本地机,修改rule.xml文件,把编码代码行注释掉,使其不起作用,
* 然后把修改后的文件再上传到windchill系统,更新Document的初始化规则
* <!-- set the number to a generated number -->
* <!-- <AttrValue id="number" algorithm="com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator">
* <Arg>{GEN:wt.enterprise.SequenceGenerator:WTDOCUMENTID_seq:10:0}</Arg>
* </AttrValue> -->
* 替换成:
* <AttrValue id="number" algorithm="ext.lyric.test.DocNumTest">
* <Arg>{GEN:wt.enterprise.SequenceGenerator:WTDOCUMENTID_seq:10:0}</Arg>
* </AttrValue>
* 可以在 <AttrValue> 之间 加 <Arg> WD </Arg> 在编码前/后定义固定值
* @description 文档编码规则更改
* @author zhenqingshi
*
* 2023年3月14日
*/
public class DocNumTest implements RuleAlgorithm {
/**
* @description A + 年 + 三位流水号
* @author Lin
* @date 2023年3月14日
* @param args
* @param container
* @return
* @throws WTException
*/
public Object calculate(Object args[], WTContainerRef container) throws WTException {
Calendar gmtlocal = new GregorianCalendar(TimeZone.getTimeZone("GMT+8"));
SimpleDateFormat sf = new SimpleDateFormat("YYYY");
sf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
String head = "A" + sf.format(gmtlocal.getTime());
String num = getDocumentNumber(head);
if (num.length() == 1) {
num = "00" + num;
} else if (num.length() == 2) {
num = "0" + num;
}
return head + num;
}
public static String getDocumentNumber(String head) {
int n = 0;
try {
Connection dbConnection = OracleDataSource.getOracleDataSource().getConnection();
String sql = String.format(
"SELECT WTDOCUMENTNUMBER FROM WTDOCUMENTMASTER WHERE WTDOCUMENTNUMBER LIKE '%s%%' ORDER BY WTDOCUMENTNUMBER DESC",
head);
PreparedStatement ps = dbConnection.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
n = Integer.parseInt(rs.getString(1).substring(5)) + 1;
} else {
n = 1;
}
rs.close();
ps.close();
dbConnection.close();
} catch (SQLException e) {
System.out.println("Please chekc the oracle table ReviewInfo was created or not!");
e.printStackTrace();
}
return n + "";
}
}
将编译好的文件放到对应的文件夹中,然后上传后对象初始化规则;
更新对象初始化规则文件,修改指定编码对应 类,从:
<AttrValue id="number" algorithm="com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator">
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTDOCUMENTID_seq:10:0}</Arg>
</AttrValue>
修改为:
<AttrValue id="number" algorithm="ext.lyric.test.DocNumTest">
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTDOCUMENTID_seq:10:0}</Arg>
</AttrValue>
新增文档,编码则为 A2023002: