讲起版本这件事,肯定每间公司的进版规则都不一样
甚至是明明同一间公司,但在各地区(国内、国外工厂)的规则不一致
这种状况会发生还是有可能的
或许同样是文件,但是文件类别不同也有进版上的差异
例如 00->01->02 或 A1->B1->C1 或 A1->A2->A3
这种时候就真的要在早期规划清楚
朝向另一个开版本栏位,并在变更单发行时自动写入新版本
接着在ECN、EN、ECO等流程中,发行时写入新版本,此时的栏位皆为客制版本栏位,如果Agile生命周期跟Aras系统用法不同,也要另外客制,如下图的受影响物件开了新版版本
那麽只是把栏位建立好,发行时写入料号
最後只剩进版规则如何调整
如果用系统规则进版,最多就是先预设好A1、A2...Z1、Z2,慢慢进版,也无法靠类别不同改成00、01
势必在变更单中自动客制程序,载入新版版本
举了实例
譬如
EN变更(量产前) => 00->01->02
ECN变更(量产後) => A1 -> B1 -> C1
图文变更 => A1 -> B1 -> C1 ,非量产或特定类别 00->01->02
用程序码来看
//当受影响物件版本栏位为空值
if(affectItem.getProperty("cn_new_revision","")==""){
//取得物件的版本
string strOldRevision = itmChangedItem.getProperty("cn_revision","");
if(strOldRevision!=""){
int tryResult=0;
if(int.TryParse(strOldRevision,out tryResult)){
//前一版数字,但在ECN转A1,EN就继续数字+1
if(currentChangeType=="ECN"){
sql="Update [innovator].[affected_item] set cn_new_revision='A1' where id='"+affectItem.getID()+"'";
}else{
//纯数字+1
int intOldRev = int.Parse(strOldRevision);
string newRev = (intOldRev+1).ToString().PadLeft(2,'0');
sql="Update [innovator].[affected_item] set cn_new_revision='"+newRev+"' where id='"+affectItem.getID()+"'";
}
}else{
//前一版不是数字,则看物件类型累加
//料号
if(changeItemType=="Part"){
int oldRevStr1 = Convert.ToInt32((strOldRevision.Substring(0,1))[0]);
int oldRevStr2 = Convert.ToInt32(strOldRevision.Substring(1,1));
int totalOldRev = oldRevStr1*10+oldRevStr2;
int totalNewRev = totalOldRev+1;
string strNewRev = totalNewRev.ToString();
string newRevStr1 = strNewRev.Substring(0,2);
string newRevStr2 = strNewRev.Substring(2,1);
strNewRev = Encoding.ASCII.GetString(new byte[]{ Convert.ToByte(int.Parse(newRevStr1)) })+newRevStr2;
sql="Update [innovator].[affected_item] set cn_new_revision='"+strNewRev+"' where id='"+affectItem.getID()+"'";
}else{
//Document、CAD
int oldRevStr1 = Convert.ToInt32((strOldRevision.Substring(0,1))[0]);
int oldRevStr2 = Convert.ToInt32(strOldRevision.Substring(1,1));
int totalNewRev,totalOldRev = 0;
switch(itmChangedItem.getProperty("classification","")){
case "D_Production Facility(生产设备)":
//用A1->A2->A3进版
totalOldRev = oldRevStr1*10+oldRevStr2;
totalNewRev = totalOldRev+1;
break;
default:
//用A1->B1->C1进版
if((strOldRevision.Substring(0,1))[0]=='Z'){
oldRevStr1 = Convert.ToInt32('A');
oldRevStr2 = oldRevStr2+1;
if(oldRevStr2==10){
oldRevStr2 = 1;
}
}else{
oldRevStr1 = oldRevStr1 + 1;
}
totalOldRev = oldRevStr1*10+oldRevStr2;
totalNewRev = totalOldRev;
break;
}
string strNewRev = totalNewRev.ToString();
string newRevStr1 = strNewRev.Substring(0,2);
string newRevStr2 = strNewRev.Substring(2,1);
strNewRev = Encoding.ASCII.GetString(new byte[]{ Convert.ToByte(int.Parse(newRevStr1)) })+newRevStr2;
sql="Update [innovator].[affected_item] set cn_new_revision='"+strNewRev+"' where id='"+affectItem.getID()+"'";
}
}
if(changeItemType=="Part" || changeItemType=="Document" ||changeItemType=="CAD"){
inn.applySQL(sql);
}
}
}
哈罗~ 前两天介绍了网路扫描的Hping 与 Nmap, 这两个工具可以协助我们搜索目前网域中的目标...
前言 git 是一种版本控制软件 (Version Control Software, VCS),V...
数位 I/O 视窗当然是要有数位讯号相关功能啦。 数位 I/O 功能 在 Supported Mod...
树(Tree)属於一种非线性结构,是一种上下阶层关系,举例: 组织架构图、家族谱、赛程表等,类似一棵...
这篇调整的方向只是把上一篇的 Html Helper 改为 Tag Helper 而已 ! Case...