iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
自我挑戰組

從Agile PLM 移轉 Aras PLM大小事系列 第 8

8.移轉 Aras PLM大小事-料號版本

第8話-料號版本

講起版本這件事,肯定每間公司的進版規則都不一樣
甚至是明明同一間公司,但在各地區(國內、國外工廠)的規則不一致
這種狀況會發生還是有可能的
或許同樣是文件,但是文件類別不同也有進版上的差異
例如 00->01->02 或 A1->B1->C1 或 A1->A2->A3

這種時候就真的要在早期規劃清楚
朝向另一個開版本欄位,並在變更單發行時自動寫入新版本
https://ithelp.ithome.com.tw/upload/images/20210908/20106503iH8PaC7cWg.png

接著在ECN、EN、ECO等流程中,發行時寫入新版本,此時的欄位皆為客製版本欄位,如果Agile生命週期跟Aras系統用法不同,也要另外客製,如下圖的受影響物件開了新版版本
https://ithelp.ithome.com.tw/upload/images/20210908/20106503uuVqXW3aHe.png

那麼只是把欄位建立好,發行時寫入料號
最後只剩進版規則如何調整
如果用系統規則進版,最多就是先預設好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);
        }
    }
}

上一篇
7.移轉 Aras PLM大小事-匯入Aras如何有效執行
下一篇
9.移轉 Aras PLM大小事-BOM的差異
系列文
從Agile PLM 移轉 Aras PLM大小事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言