# OnTrack 工作日誌 2020/09 ## trello https://trello.com/b/DtjJ8kte/ontrack ## 生產流程 10箱=剛進貨 剛取貨 20箱=已分配工作元件 30箱=工作結束剩餘的原件 進元件 (客戶提供) 確認元件meterial check PartIn 確認數量 生產 left parts(剩下的原件) Final count 盤點(歸還) ## git 尚未推送 stock_inpart ## 常用名稱備註 part number 講解 cpn = customer part num otpn = ot part number (OntrackPartID 通常用PartNum反查!?) spn = 供應商 part num mpn = 生產商 part num #### 簡易串資料 ```sql select OntrackPartID,OntrackComponentID,PartNum,OntrackComponentName ,* from tbl_CustomerComponents a left join tbl_OntrackComponent b on a.OntrackPartID = b.OntrackComponentID ``` tbl_ontrackcomponent这是我们自己的元件表 tbl_customercomponent外客户元件表 ## 2020/11/02 新增一個錯誤管理文件 還沒處理到DB內 之後可以變成知識管理系統 https://hackmd.io/MCSf6jvtQs6bljujy6ArIQ?both EIP 只有原本的20箱才能開50箱嗎 ## 2020/10/28 //盤點直接取代同countID就好 //大庫所有 select Component,sum(CurrentQty) CurrentQty from s_View_dbx_oth_no_in_partsmark group by Component //扣掉暫存 //SMT s_Sp_SMTJobPlan_GetPartsWithShortage_V2 16 //TH s_Sp_GetTHJobPickingSummarywithProductionShortage_V2 224932 PickedQty 就是任務中的 select s.PartNum, s.BOMReqQty, s.PickedQty, s.BOMReqQty-s.PickedQty AS PickedShort, ISNULL(ps.QtyShort,0) ProductionShort,case when (select top 1 ShortageType from s_ProductionShortage where PartNum=s.PartNum and STValue='T')=2 then 'ByPass' else 'normal' end Status from THPickingSummary s LEFT JOIN s_ProductionShortage ps ON s.JobID=ps.JobID AND s.PartNum=ps.PartNum --add by andy inner join (select distinct PartNum,BOMType,JobID from bomfinal2) b2 on s.PartNum=b2.PartNum and b2.BOMType='T' and s.JobID=b2.JobID --end add by andy ORDER BY CASE WHEN s.BOMReqQty-s.PickedQty-ISNULL(ps.QtyShort,0)>0 THEN 0 ELSE 1 END, s.PartNum ## 2020/10/21 order in第二階段 建構中 要新建一張表 s_BatchOrderInTemp_New_ForSignify 內容跟s_BatchOrderInTemp_New 一樣 要新建pc9 s_Sp_GetDynaliteBatchOrder_PriceMatch_New_ForSignify 要覆蓋workfloor的程式碼 遇到的困難 因為sign跟D 還是不同公司 所以不能直接複製過去 不然有些沒有價格 或是BOM?? 總之會少一個product號碼的時候 會無法處理 所以目前多開了一個新頁面 用來處理另一邊 ## 2020/10/20 order in這個重新開始做 建立了測試機在舊機器(但完成度很低 簡易建置) 也建立的本地測試機 直接測試order 目前批量order完成度應該90% 明天找小劉測試一下 ## 2020/10/09 把PICK的SP存在桌面了 禮拜一上板實測 看數量對不對 第一筆count應該要 全數-全數 分出去的工作應該要 全數-全數 (一樣) 但備註要給jobid ## 2020/10/08 新功能 印LABEL 公司用選的 選完之後輸入CPN (OTPN要關聯出來) (描述關聯出來的) 最後會長 | | Inventory | | -------- | -------- | | QRCODE | 3057574 | | Company | DYNALITE | | PARTNUMBER | XXXXXXX | ims server 想要備份tbl_dbx_oth 看能不能在庫存查詢中找到紀錄 如果可以 就改小程序 增加一筆 -值的 然後看一下 平常final的地方 有沒有漏(這個最麻煩 明天先加一筆假資料到 ## 2020/10/07 早上修一小 把SQL 修好了 ![](https://i.imgur.com/w1NzMzJ.png) ## 2020/10/06 正在改order view 原本正確的條件 可是SQL跑太久 正在想有沒有辦法增速 gridview 前端一直出小問題 3010316 把SQL 修正 新增一個BUG 小程序 分配輸入格式有誤的問題 現在還有一點小缺陷 純數字會找不太到ordernum的資料 ## 2020/10/02 3057499 開最終箱 測試 job 226759 跟rebeca討論一下 final這些倒都無所謂 最終要達成的目標是 不管有沒有leftpart 在pickin的時候 就要預先扣庫存的數量 不要在TH取建總匯庫存還是這麼多(顯示邏輯) 還有 在排工作的網頁中 有一個借料的功能 假設先A在B B比較急 先從A拿件 但系統還是會判定B缺件 A不缺 到時候入件又怪怪的 下禮拜先把order view收尾 顯示有點醜 並上板 ## 2020/09/30 開始進行 盤點三合一 最後決定留SMT 這頁面 提示中文化已經完成90% ## 2020/09/29 新電腦來啦!!!!!!!建置環境中 有點麻煩 舊專案開不起來 相容度很差 ## 2020/09/28 代辦事項 30箱點數問題 這邊要查一下三個點庫存的功能有什麼差異 為什麼不能把現有的東西移箱 檢查上次orderIn的數據 有沒有錯 怕訂單錯誤 orderview要新增 過去歷史的功能 查詢的時候要能查詢order ID ## 2020/09/25 對比一下 ![](https://i.imgur.com/c6Gw8NM.png) 這幾個 生產用 出貨報告 用來退元件用的 輸入JOBID 227731(測試) 看一下是不是 有特別排除 把元件放在我們這的公司 (如果有 就把他們加回來 並在系統提示 這些是放在我們這的 不是特別情況的話 是不用歸還的) 上面SMT可以點進去 emptyreelcheck.aspx 新增一個查詢 上面要有company 跟 時間區間 就能查出 改數量的log紀錄 設定料件是否是放在我們公司的地方再 庫存管理 QC人員(QA 檢查) 要能看到 今天員工登錄的工作 新功能 放在 生產用 -> SMT Inspection / SMT查板程序 的上面 ## 2020/09/24 一早來使用者發現錯誤 庫存管理的->其他庫存管理->每周ontrack元件 http://192.168.0.3/Inparts/ontrackCycle.aspx 這邊有時候會入不到元件 參考單號為CPN MMZ2012Y121BT00 OTPN 090083040 條碼號 1700002639460 job 223680 箱號 33 完成了 ontrackCycle.aspx 頁面的 已點數量 尚未盤點數量 並把最新點的一筆 放在最上面 還有一些單號 奇怪點不到的 還有把一些提示改成中文 ![](https://i.imgur.com/748fBkD.png) ## 2020/09/23 inparts/oiredit.aspx 需要變更 新增的時候增加一些欄位 才不會每次都要到前面在編輯 未來打印的時候更新一下版面 inparts/oiredit.aspx 每次選負責人都會預設daniel 看能不能調整成STAFF ID 或是預設空白強制選 改order這塊改到嚇到了 還是要測試機 不然太不保險了 上午安裝測試機 ![](https://i.imgur.com/M1SwSqq.png) ![](https://i.imgur.com/Var3Rdk.png) 目前改到 (要新增ref type 跟QTY的新增 更新欄位 放置type跟QTY的欄位 要放在哪裡? 新增跟更新還沒驗證過 ref其實已經有了 但是沒有強制填寫而已 ## 2020/09/22 早上發布了 新版小程序 批量新增的部分應該可以了(增加欄位JobSort s_BatchOrderInTemp_V2 s_BatchOrderInTemp_New Inorder s_Sp_GetOrderView_V3 ## 2020/09/21 需求訪談 (小劉) 功能會碰到的地方有 Account Manager / 客户帐户管理员->Order Entry / 订单输入 Account Manager / 客户帐户管理员->Order View / 订单查询 Account Manager / 客户帐户管理员->Dynalite Batch Order Entry / 批量订单输入 ** 把遠端影印的東西 結案 把程式放到自動更新 (主要是IP不一樣) 新增了一個欄位 inorder的 jobsort (int) 用來存放排序 s_BatchOrderInTemp_New 目前的難處 workfloor這專案似乎不能建置 也就是說很難偵錯 本地IIS已經重裝了 嘗試使用執行緒偵錯 但dll不同 也偵測不到 目前打算重拆一個小專案試試看 不然workfloor太多東西導致建置失敗 原本嘗試排錯 但發現錯誤至少有50個 頁面至少有15個是壞的 有跟ANDY討論一下 表示情況可能也差不多 這個真的有點改不動 我嘗試使用不改程式的方法改看看 但從excel取參數 應該不太可能不碰到程式 不過遠端影印這點可以嘗試看看 另外這電腦真的開多一點分頁 程式就會直接停止工作 記憶體不足 ## 2020/09/18 需求訪談(小劉) 遠端影印功能 (其一) 需求 因為現在很多表的資料在網頁新增後 再從網頁顯示(少了一個欄位 REV ) 在網頁顯示後 又要手打進入 影印機的EXCEL表 才能再做列印 這個部份希望能改成抓DB資料 但要如何配合列印軟體 這個是問題 希望完成的部分是 1.網站上orderview 可以多一個欄位(REV) 2.顯示的部分也多一個欄位(REV) 3.新建一個頁面是影印用 可以輸入幾號到幾號的編號(unitID?) 就影印出來 4.影印部分要連接資料庫 送至影印伺服器的時候要用本地軟體還是自幹一個!? ## 2020/09/17 開會準備紀錄 怎麼樣算對 怎麼樣算錯 我該怎麼驗證對錯呢?? 跟Reserved有關 Reserved具體來說用在哪幾個頁面? 新增的頁面又在哪裡呢 需要查一下 SMT Reserved 不準 (參考連結 http://192.168.0.3/SMTEvo/SMTJobPlanCreateShortage.aspx http://192.168.0.3/SMTEvo_V2/Programming/OTBuySMTShort.aspx?JobID=227547 ## 2020/09/16 http://192.168.0.3/THEvo/Preparation/Default_2016.aspx TH - > 準備 ->工作計畫 這頁面因為數量不准 所以導致頁面不太可用 還有LIST裡面要排除Signfy PTY 這家公司 (特別排除) SMT也是做一樣變動 原本一直覺得奇怪 為什麼會先新增leftparts 再算新的splited into 時間點不對 原來是 先建立新的leftparts 再回去計算舊的 splited into 這樣就合理了 時間點也對 newQTY以前是拿來放jobID的 但是如果再分盤的時候就final 就沒有JOBID了 所以用代號999999 代替 ## 2020/09/15 進元件(自購) 確認元件meterial check PartIn 確認數量 (多的部分直接轉入30箱 等待入庫) 生產 Final count 盤點(入庫) s_Sp_PartsTransferIntoJob_THPartsIn_OTBUY 如果是left parts的話 這邊要退回庫存 這邊可能沒做到!? ## 2020/09/14 由於系統沒有一個總表 很奇怪 我建議建立總表做庫存管理 (這個不是很急迫 有時間可以做 *目前idea是先建一個系統在背後計數 執行一兩周再來看 跟實際狀況的差異 不然每次都要算 就算了 只要錯一條 永遠都會錯 (除非再改一次資料回去) 但這部分我想用較新技術 API 需要新作業系統跟好一點的電腦 目前可以先做的辦法是 把final的口堵住 然後也一樣觀察個幾周 第一步 找尋之前怎麼完成final的 TH s_Sp_FinalTHPartsQty 第二步 在小程序的SQL 新增之前final動作 s_Sp_SplitOTBuyPartsIntoJobs 小程序 把庫存切開時 s_Sp_UpdateTHPickedQtyByPartsIn SMT跟TH都有leftpart嗎? 目前找不到哪裡切出30箱 分元件的時候會執行 s_Sp_PartsTransferIntoJob_THPartsIn 他會去更新 select top 1000 * from [tbl_dbx_oth] order by CountID desc 同count id內最舊的一筆 變成partsInqty ((而且還會先找同countID的)) 到時候執行 exec s_Sp_FinalTHPartsQty @JobID , @CPN , @FinalQty , @StaffID ,@RouteID ,@FinalBoxNo 這個是遇寫好的final 填入參數就可以final 前提是要知道開好的30箱名稱還有job ID POID是什麼 ## 2020/09/11 研究小程序的邏輯 剛剛實際去問一下工作人員 程序 自購88箱->89箱->20箱->30箱 外客戶99箱 ->10箱->20箱->30箱 自購的30箱=庫存 外客戶的30箱=待歸還元件 TH沒有89跟10箱 直接20箱 且一個工作只有一個BOX ID(重要) 最後30箱可能會有很多是給同一個工作歸還的 (改箱號很容易) left parts的意思就是 剩餘的東西 (不管是庫存 還是 待歸還) 所以為什麼要判定left parts 就是因為東西不太會來剛好 只要left parts了 就要做 歸還清算 但如果分完元件就 left parts 就不用清算歸還了 (參考用 一般歸還 會執行 s_Sp_FinalTHPartsQty) s_Sp_FinalTHPartsQtyV1不知道幹嘛的 我會需要 jobID cpn final qty staffID 系統判定 routeID finalboxno ~~等於30箱 在這個時候就要自己創建一個了 而且要讓他們有地方印跟放(或是邏輯寫好 30箱號讓使用者輸入)~~ 這段可能根本不用做 因為已經有建立30箱了 otbuy重點 要注意有沒有轉回OT本身 非otbuy 重點 要注意在執行leftparts的時候 有沒有把數量預扣到總表上(目前可能沒扣 所以造成算庫存數量很常出錯 基本上都是少 因為數量都沒catch住 所以總數可能400 同時有兩筆300的 還會顯示可以做 所以再生成Part(JOB單)的時候 就要預扣完所需數量了 所以說還是要顯示總數(總共欠料的數) select * from s_SMTJobPlan SMT總表 ((s_Sp_GetArrangeJob_SMTJobPCBTypeList_JobFilter s_Sp_GetArrangeJob_SMTJobPCBTypePN_JobFilter select * from tbl_dbx_oth TH總表 ((s_Sp_GetShortageReportTH_Filter 還有會把資料輸入到s_THFinalCountSectionConfirm 我需要的資料有 JobID RouteSequence ConfirmBy ~~left parts 這樣改好嗎 雖然不用再點一次 可是當初設計的時候 是不是就是因為有考量到時常會有耗損 如果改成不用再做final的話 做到一半缺件又要補零件時(這段你說好像有地方做過 缺件) 不過我不知道那段邏輯怎麼跑的 主要是怕 到時候缺件要再多拿一個零件的時候 系統沒判斷 但30箱內其實還有 又在跟客戶要一次 有點奇怪~~ 現在otbuy跟外客戶都有leftparts的功能嗎? (包含SMT跟TH) 剛剛問小平表示 只有TH有leftparts 而目前不管otbuy 或外客戶 都有了 #### step1 第一個做 OTbuy 照理來說應該是 已經點完零件 要分給工作的時間 點完把 全部零件A 給到 B生產 最後C歸還 現在要改成 點完全部零件A 看B需要多少 給B所需零件A 剩餘直接放30箱入庫 則不用做C歸還 取得BARCODE之後 會新增PARTS (ADD PARTS) 抓ROW資料 PartsArrangeData.Rows 更新s_Sp_UpdateTHPickedQtyByPartsIn (應該是暫存卡著數量 讓別的不能用) 下一步 Save Packs Into Stock 在一次AddNewParts(這次目的應該是 修改庫存) 進來後會先執行這段 s_Sp_PartsTransferIntoJob_THPartsIn_OTBUY 用來更新實際收到的數量 <span style='color:red'>但不確定什麼時候入Tbl_purchaseprice2資料的</span> #### step2 第二個做 非OTBUY 照理來說應該是 已經點完零件 要分給工作的時間 點完把 全部零件A 給到 B生產 最後C歸還 現在要改成 點完全部零件A 看B需要多少 給B所需零件A 剩餘直接放30箱還客戶 則不用做C歸還 ## 2020/09/10 ### 需求 FrmPartsSplitIntoJobs 更改小程序 不只ot buy 是兩個流程都要更改 以前是 確定數量後 取零件(一次一大包 數一次總量) 全部拿去箱子 執行生產 所以使用後還要再點一次(在數一次剩餘總量) 很麻煩 要更改為 確定數量後 取零件 一次一大包 數一次總量(或是只數需要的數量 並直接取出 但如果只數需要的數量 就會少一次盤點數量 但如果零件包是新開的 有少的情況應該比較少會發生) 剩餘的直接入庫或者掛歸還 (但如果是客戶的 這樣缺件 會不會又要跟客戶拿 而不是30箱?? 這個流程可能要注意) 目前做法為 在小程序的階段 就把final count該做的動作取消 之後兩邊應該都沒有final count了 只會出現有少零件需要補一兩個 假設一大包零件 點完需要的數量之後 會再點還沒用到的數量入庫嗎? THPartsBorrowing 查了一下這頁的邏輯 * 1. s_ProductionShortage 這個表是做什麼的? QtyShort是短缺嗎 * 2. THPickingSummary的 BOMReqQty 是料的庫存嗎? PickedQty是所需要的零件量嗎? ### 需求 ComponentManagement 把partID改為 OTPN 順便查詢上方功能 ![Uploading file..._cqnuvy4vc]() 上方功能為新增按鈕 ### 需求 更改目前 自購歸還的邏輯 1.更改目前 自購歸還的邏輯 因為已經分好箱了 所以不需要歸還 final動作省略 可能需要一個 測試資料 (就是這筆有錯 不需要final還顯示 的資料) 顯示的資料列跟 tbl_dbx_oth 找不到直接的相關 count_ID 是什麼意思 NewQTY 是什麼意思 (我看之前程式照理說這裡有部分是紀錄跟JOBID的相關 但不確定 資料很雜 有看起來像jobID的 也有看起來像代號的0 8 6 1 7 ~~後來有問ANDY 紀錄leftparts 就只有那個notes的備註~~ 但我後面好像看到一個有點像的東西 ```sql select Boxno from s_PickingGroup_TH where IsLeftParts=1 ``` * 1. tbl_dbx_oth 這張表真的記錄的意義跟使用的方式 需要釐清一下 (因為裡面有很多資料像是在記錄log * 2. left parts的單 是不是都會在同一個box裡面 不會混合非left parts的? ```sql select top 10000 boxno,notes , * from tbl_dbx_oth where Boxno in( select top 10000 FullBoxNo from s_BoxNo where Boxno in( select Boxno from s_PickingGroup_TH where IsLeftParts=1 ) order by Boxno desc) AND BeginTime>'2020-07-04' order by tbl_dbx_oth.Boxno desc , BeginTime asc ``` * 3. boxNo_POID的 POID是什麼? 工作站回報的 调整数量/ NoSpecial/ 系统自动清空箱子 ((後來查到似乎是以前的code 已註解掉了 StockManagement_V2.aspx 是什麼? * 4. 這邊leftparts的邏輯大概用多久了? (4月還有不一定的資料 直接在上面顯示 TH缺件 是怎麼樣的情況回傳 * 5. 一般如果在實際情況下遇到 leftparts final 會怎麼樣先把它做掉? 目前尋找一下誰再用 s_Sp_UpdatePartsInQty ## 2020/09/09 上午功能講解 ![](https://i.imgur.com/un4mn3u.png) part number 講解 cpn = customer part num otpn = ot part number spn = 供應商 part num mpn = 生產商 part num tbl_ontrackcomponent这是我们自己的元件表 tbl_customercomponent外客户元件表 select * from tbl_dbx_oth WHERE NewQty IN (8,6,14) order by InventoryID desc 這個不知道NEW QTY 8跟6是什麼意思 目前先不管了 ### 需求 更改目前 自購歸還的邏輯 1.更改目前 自購歸還的邏輯 因為已經分好箱了 所以不需要歸還 final動作省略 ### 教育文件: 元件來的源頭有兩種 第一種 客戶提供 第二種 自購元件 客戶提供一定走 客戶提供這塊 要是有缺件 合併使用自購元件 基本流程是 客戶提供 = 確認MATERIAL CHECK ->PartIn (點數量) ->生產 -> Final count 最後數量確認->歸還庫 自購 = 確認MATERIAL CHECK -> 預先分好數量(若買一千 工作需要一百 則取一百 剩餘九百分回30箱) 最後需要歸還 final要=0 ### 會使用到的頁面有: 小程序 (PartIn) ~~FinalCount_TH_V1-MainContent_BtnHideJobList (STOCK v1)~~ (s_Sp_GetTHPartsFinalCountJobs) sp 影響顯示 Default_2016 ### 相關的資料表有: ### 會做到的變動有: ~~把FinalCount_TH_V1 - MainContent_BtnHideJobList 資料表顯示 不顯示TH自購的部分~~ 原本想改 MainContent_BtnHideJobList ~~但發現資料是一行一個BOX 有可能會有非leftparts在裡面 所以不能擋這邊~~ 其實是一行一個job history ID 所以原本邏輯可行 確認一下小程序 能不能在這邊在分表的時候 就把final設定完成 讓使用者不用在歸還 這邊實在找不到表的相關 後來改嘗試點[s_Sp_GetTHPartsFinalListByRouteID_V1] 也就是底下條列的部分 有找到PartsInBoxQty 或許可以從這裡進攻 ON f.PartNum=dbx.Component 會去找component 同編號的 ### 會遇到的問題: 如果分好了數量 又遇到缺件 確保Default_2016 顯示出來的數量是正確的 ### 可使用的測試資料: 可以用这个工作号查看, 但是不要按 ReturnBOX 227637 ## 2020/09/08 尋找winform的問題 但沒有原碼只能先看看是不是參數設定錯誤 嘗試改本地數據無效(CONFIG路徑)跟 程式開啟後設定的路徑 看起來能設定的參數也只有這些 嘗試在本機安裝FS3 但他需要licence才能安裝 不能測錯 若我重寫winform可能需要蠻長一段時間 我之前學是從webform開始 沒有學過winform 資料表相連不知道有沒有系統圖 相關的程序如果不能沿用的話 怕會有很多邏輯上的錯誤 不知道要撈大檔csv還是單檔csv 還有當初設定 撈取時間點是什麼時候 這個程式似乎一年前(2019年/11/12號 就已經失效了) 造成的問題有 1 不能用 SMTI_Repairing_Testing 查詢板子錯誤 造成不能回報(建議維修的評分系統) RepairSessionUpdate_RepairAction (狀態更改的程式) 回報的功能好像也是壞的 使用測試資料跑也跑不出資料 ![](https://i.imgur.com/GQFgK33.png) ## 2020/09/07 熟悉環境 原料>SMT>TH> 系統叫ism 1710803918622 輸入BARCODE FAIL 應該有fail CODE 打開時應該會顯示(建議) 維修點 (通常不同FAIL CODE 會有建議的維修點 假設X001 FAIL CODE 修A地方 有效 就加分 沒效就不加分(這功能有了)