public static List <KPListBase> GetKPListBySkuNo(string Skuno, MESDBHelper.OleExec SFCDB) { List <KPListBase> ret = new List <KPListBase>(); T_C_KP_LIST T = new T_C_KP_LIST(SFCDB, MESDataObject.DB_TYPE_ENUM.Oracle); List <string> IDS = T.GetListIDBySkuno(Skuno, SFCDB); for (int i = 0; i < IDS.Count; i++) { KPListBase I = new KPListBase(IDS[i], SFCDB); ret.Add(I); } return(ret); }
public static void UpdateWOKeypartID(MESPubLab.MESStation.MESStationBase Station, MESPubLab.MESStation.MESStationInput Input, List <R_Station_Action_Para> Paras) { if (Paras.Count != 1) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000050")); } MESStationSession sessionWO = Station.StationSession.Find(t => t.MESDataType == Paras[0].SESSION_TYPE && t.SessionKey == Paras[0].SESSION_KEY); if (sessionWO == null) { throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000052", new string[] { Paras[0].SESSION_TYPE })); } try { int result; WorkOrder objWorkorder = new WorkOrder(); objWorkorder = (WorkOrder)sessionWO.Value; T_C_KP_LIST t_c_kp_list = new T_C_KP_LIST(Station.SFCDB, Station.DBType); T_R_WO_BASE t_r_wo_base = new T_R_WO_BASE(Station.SFCDB, Station.DBType); Row_R_WO_BASE rowWOBase; List <string> kpList = t_c_kp_list.GetListIDBySkuno(objWorkorder.SkuNO, Station.SFCDB); if (kpList.Count == 0) { throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000255", new string[] { objWorkorder.SkuNO })); } rowWOBase = (Row_R_WO_BASE)t_r_wo_base.GetObjByID(objWorkorder.ID, Station.SFCDB); rowWOBase.KP_LIST_ID = kpList[0].ToString(); result = Station.SFCDB.ExecSqlNoReturn(rowWOBase.GetUpdateString(Station.DBType), null); if (result <= 0) { //報錯信息待改 throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000052", new string[] { objWorkorder.WorkorderNo })); } Station.AddMessage("MES00000063", new string[] { objWorkorder.WorkorderNo }, StationMessageState.Pass); } catch (Exception ex) { throw ex; } }
/// <summary> /// convert wo /// </summary> protected void ConvertWO() { if (_downloadWO != "") { dtConvertWO = R_WO_HEADER.GetConvertWoTableByWO(SFCDB, DB_TYPE_ENUM.Oracle, _downloadWO); } else { dtConvertWO = R_WO_HEADER.GetConvertWoTable(SFCDB, DB_TYPE_ENUM.Oracle, arrayConvertWO); } if (dtConvertWO.Rows.Count > 0) { foreach (DataRow row in dtConvertWO.Rows) { rowSku = null; rowRoute = null; rowWOBase = null; rowWOType = null; routeDetailList = null; keypartList = null; keypartIDList = null; linkStationList = null; C_Series = null; sql = ""; try { rowSku = (Row_C_SKU)C_SKU.GetSku(row["MATNR"].ToString(), SFCDB, DB_TYPE_ENUM.Oracle); if (rowSku == null) { throw new Exception(" sku " + row["MATNR"].ToString() + " can't exist"); } //if (!string.Equals(rowSku.VERSION.ToString(), row["REVLV"].ToString())) //{ // throw new Exception(" The sku version is not the same," + rowSku.VERSION.ToString() + "," + row["REVLV"].ToString()); //} C_Series = T_Series.GetDetailById(SFCDB, rowSku.C_SERIES_ID); if (C_Series == null) { throw new Exception(" the series of " + row["MATNR"].ToString() + " can't exist"); } rowWOType = WOType.GetWOTypeByWO(SFCDB, row["AUART"].ToString()); if (rowWOType == null) { throw new Exception("get wo type fail"); } rowRoute = (Row_C_ROUTE)C_ROUTE.GetRouteBySkuno(rowSku.ID, SFCDB, DB_TYPE_ENUM.Oracle); if (rowRoute == null) { throw new Exception(" the route of " + row["MATNR"].ToString() + " can't exist"); } routeDetailList = RouteDetail.GetByRouteIdOrderBySEQASC(rowRoute.ID, SFCDB); if (routeDetailList == null || routeDetailList.Count == 0) { throw new Exception("get route detail fail by " + rowRoute.ID); } keypartIDList = t_c_kp_list.GetListIDBySkuno(rowSku.SKUNO, SFCDB); if (keypartIDList.Count > 0 && keypartIDList.Count != 1) { throw new Exception("skuno:" + row["MATNR"].ToString() + " have more keypart id"); } //HWD的邏輯 //linkStationList = routeDetailList.Where(link => link.STATION_NAME == "LINK").ToList(); //if (linkStationList != null && linkStationList.Count > 0) //{ // keypartList = Keypart.GetKeypartListBySkuVersion(SFCDB, row["MATNR"].ToString(), row["REVLV"].ToString()); // keypartIDList = keypartList.Select(id => id.KEYPART_ID).Distinct().ToList(); // if (keypartIDList == null || keypartIDList.Count != 1) // { // throw new Exception("get keypart id fail by skuno:" + row["MATNR"].ToString() + " and version:" + row["REVLV"].ToString()); // } //} rowWOBase = (Row_R_WO_BASE)R_WO_BASE.NewRow(); rowWOBase.ID = R_WO_BASE.GetNewID(BU, SFCDB); rowWOBase.WORKORDERNO = row["AUFNR"].ToString(); rowWOBase.PLANT = row["WERKS"].ToString(); rowWOBase.RELEASE_DATE = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); rowWOBase.DOWNLOAD_DATE = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); rowWOBase.PRODUCTION_TYPE = "BTO";//HWD原有邏輯寫死 rowWOBase.WO_TYPE = rowWOType.WORKORDER_TYPE; rowWOBase.SKUNO = row["MATNR"].ToString(); rowWOBase.SKU_VER = row["REVLV"].ToString(); rowWOBase.SKU_SERIES = C_Series.SERIES_NAME; rowWOBase.SKU_NAME = rowSku.SKU_NAME; rowWOBase.SKU_DESC = rowSku.DESCRIPTION; rowWOBase.CUST_PN = rowSku.CUST_PARTNO; rowWOBase.CUST_PN_VER = ""; rowWOBase.CUSTOMER_NAME = rowSku.CUST_SKU_CODE; rowWOBase.ROUTE_ID = rowRoute.ID; rowWOBase.START_STATION = routeDetailList[0].STATION_NAME; rowWOBase.KP_LIST_ID = (keypartIDList != null && keypartIDList.Count > 0) ? keypartIDList[0] : ""; rowWOBase.CLOSED_FLAG = "0"; rowWOBase.WORKORDER_QTY = Convert.ToDouble(row["GAMNG"]); rowWOBase.INPUT_QTY = 0; rowWOBase.FINISHED_QTY = 0; rowWOBase.SCRAPED_QTY = 0; rowWOBase.STOCK_LOCATION = row["LGORT"].ToString(); rowWOBase.PO_NO = ""; rowWOBase.CUST_ORDER_NO = row["ABLAD"].ToString(); rowWOBase.ROHS = row["ROHS_VALUE"].ToString(); rowWOBase.EDIT_EMP = "interface"; rowWOBase.EDIT_TIME = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); SFCDB.ThrowSqlExeception = true; sql = rowWOBase.GetInsertString(DB_TYPE_ENUM.Oracle); SFCDB.ExecSQL(rowWOBase.GetInsertString(DB_TYPE_ENUM.Oracle)); SFCDB.CommitTrain(); } catch (Exception ex) { WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.HWD.DownLoadWO", "ConvertWO", ip + ";" + row["AUFNR"].ToString() + ";ConvertWO fail," + ex.Message.ToString(), sql, "interface"); } } } }
/// <summary> /// convert wo /// </summary> protected void ConvertWO() { if (_downloadWO != "") { //如果指定了工單Download,且工單不存在于R_WO_BASE表中,則返回該工單R_WO_Header記錄 dtConvertWO = R_WO_HEADER.GetConvertWoTableByWO(SFCDB, DB_TYPE_ENUM.Oracle, _downloadWO); } else { //否則抓取所有不存在于R_WO_BASE表中工單,并結合CONVERTWO=00251的設定返回工單R_WO_Header記錄 //MBD 正常工單類型,且ModelType不包含094的才轉 dtConvertWO = R_WO_HEADER.GetConvertWoTableForMBD(SFCDB, DB_TYPE_ENUM.Oracle, arrayConvertWO); } if (dtConvertWO.Rows.Count > 0) { //循環所有待轉工單 foreach (DataRow row in dtConvertWO.Rows) { rowSku = null; rowRoute = null; rowWOBase = null; rowWOType = null; routeDetailList = null; keypartList = null; keypartIDList = null; linkStationList = null; C_Series = null; sql = ""; try { //判斷料號是否存在 rowSku = (Row_C_SKU)C_SKU.GetSku(row["MATNR"].ToString(), SFCDB, DB_TYPE_ENUM.Oracle); if (rowSku == null) { throw new Exception(" sku " + row["MATNR"].ToString() + " not exist"); } if (rowSku.C_SERIES_ID == null) { throw new Exception(" the series of " + row["MATNR"].ToString() + " can not be null "); } //從C_Series表中獲取系列信息 C_Series = T_Series.GetDetailById(SFCDB, rowSku.C_SERIES_ID); if (C_Series == null) { throw new Exception(" the series of " + row["MATNR"].ToString() + " not exist"); } //從R_WO_TYPE表中獲取工單類型:這張表需要事先設定 rowWOType = WOType.GetWOTypeByWO(SFCDB, row["AUART"].ToString()); if (rowWOType == null) { throw new Exception("get wo type fail"); } //從R_Sku_Route&C_Route表中獲取默認路由 rowRoute = (Row_C_ROUTE)C_ROUTE.GetDefaultRouteBySkuno(rowSku.ID, SFCDB, DB_TYPE_ENUM.Oracle); if (rowRoute == null) { throw new Exception(" the route of " + row["MATNR"].ToString() + " not exist"); } //從C_Route_Detail表中獲取路由 routeDetailList = RouteDetail.GetByRouteIdOrderBySEQASC(rowRoute.ID, SFCDB); if (routeDetailList == null || routeDetailList.Count == 0) { throw new Exception("get route detail fail by " + rowRoute.ID); } //???KeyParts如何轉 keypartIDList = t_c_kp_list.GetListIDBySkuno(rowSku.SKUNO, SFCDB); if (keypartIDList.Count > 0 && keypartIDList.Count != 1) { throw new Exception("skuno:" + row["MATNR"].ToString() + " have more keypart id"); } rowWOBase = (Row_R_WO_BASE)R_WO_BASE.NewRow(); rowWOBase.ID = R_WO_BASE.GetNewID(BU, SFCDB); rowWOBase.WORKORDERNO = row["AUFNR"].ToString(); rowWOBase.PLANT = row["WERKS"].ToString(); rowWOBase.RELEASE_DATE = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); rowWOBase.DOWNLOAD_DATE = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); rowWOBase.PRODUCTION_TYPE = "BTO";//原有邏輯寫死 rowWOBase.WO_TYPE = rowWOType.WORKORDER_TYPE; rowWOBase.SKUNO = row["MATNR"].ToString(); rowWOBase.SKU_VER = row["REVLV"].ToString(); rowWOBase.SKU_SERIES = C_Series.SERIES_NAME; rowWOBase.SKU_NAME = rowSku.SKU_NAME; rowWOBase.SKU_DESC = rowSku.DESCRIPTION; rowWOBase.CUST_PN = rowSku.CUST_PARTNO; rowWOBase.CUST_PN_VER = ""; rowWOBase.CUSTOMER_NAME = rowSku.CUST_SKU_CODE; rowWOBase.ROUTE_ID = rowRoute.ID; rowWOBase.START_STATION = routeDetailList[0].STATION_NAME; //?????? rowWOBase.KP_LIST_ID = (keypartIDList != null && keypartIDList.Count > 0) ? keypartIDList[0] : ""; rowWOBase.CLOSED_FLAG = "0"; rowWOBase.WORKORDER_QTY = Convert.ToDouble(row["GAMNG"]); rowWOBase.INPUT_QTY = 0; rowWOBase.FINISHED_QTY = 0; rowWOBase.SCRAPED_QTY = 0; rowWOBase.STOCK_LOCATION = row["LGORT"].ToString(); rowWOBase.PO_NO = ""; rowWOBase.CUST_ORDER_NO = row["ABLAD"].ToString(); rowWOBase.ROHS = row["ROHS_VALUE"].ToString(); rowWOBase.EDIT_EMP = "interface"; rowWOBase.EDIT_TIME = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); SFCDB.ThrowSqlExeception = true; sql = rowWOBase.GetInsertString(DB_TYPE_ENUM.Oracle); SFCDB.ExecSQL(rowWOBase.GetInsertString(DB_TYPE_ENUM.Oracle)); SFCDB.CommitTrain(); } catch (Exception ex) { WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.MBD.DownLoadWO", "ConvertWO", ip + ";" + row["AUFNR"].ToString() + ";ConvertWO fail," + ex.Message.ToString(), sql, "interface"); } } } }
public void startWO(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JObject Data, MESStationReturn StationReturn) { OleExec Sfcdb = this.DBPools["SFCDB"].Borrow(); string WO = Data["WO"].ToString(); T_R_SN t_r_sn = new T_R_SN(Sfcdb, this.DBTYPE); string id = t_r_sn.findOneSNByWO(WO, Sfcdb); if (!string.IsNullOrEmpty(id)) { StationReturn.Status = StationReturnStatusValue.Fail; StationReturn.Message = "工单已展开,不能重复展开"; return; } T_R_WO_HEADER_TJ t_R_WO_HEADER_TJ = new T_R_WO_HEADER_TJ(Sfcdb, this.DBTYPE); Row_R_WO_HEADER_TJ row_R_WO_HEADER = t_R_WO_HEADER_TJ.GetWo(WO, Sfcdb); T_C_SKU table_sku = new T_C_SKU(Sfcdb, this.DBTYPE); string user = this.LoginUser.EMP_NO; MESDataObject.Module.SkuObject SkuObject = table_sku.GetSkuBySkuno(row_R_WO_HEADER.MATNR, Sfcdb); float qty = float.Parse(row_R_WO_HEADER.GAMNG); qty = 5; //获取路由id T_R_SKU_ROUTE t_R_SKU_ROUTE = new T_R_SKU_ROUTE(Sfcdb, this.DBTYPE); string routeid = t_R_SKU_ROUTE.getRouteIdBySkuName(row_R_WO_HEADER.MATNR, Sfcdb); //获取keypartlistid T_C_KP_LIST t_C_KP_LIST = new T_C_KP_LIST(Sfcdb, this.DBTYPE); List <string> keypartlistids = t_C_KP_LIST.GetListIDBySkuno(row_R_WO_HEADER.MATNR, Sfcdb); if (keypartlistids.Count == 0) { StationReturn.Status = StationReturnStatusValue.Fail; StationReturn.Message = "未配置keypartlistid"; return; } //生成工单基础表 T_R_WO_BASE t_R_WO_BASE = new T_R_WO_BASE(Sfcdb, this.DBTYPE); t_R_WO_BASE.deleteWOByWo(WO, Sfcdb); t_R_WO_BASE.addWOByWOHeader(BU, user, routeid, row_R_WO_HEADER, Sfcdb); WorkOrder objWorkorder = new WorkOrder(); objWorkorder.Init(WO, Sfcdb); objWorkorder.WorkorderNo = WO; objWorkorder.KP_LIST_ID = keypartlistids[0].ToString(); objWorkorder.SkuNO = row_R_WO_HEADER.MATNR; //生成SN for (int i = 0; i < qty; i++) { String nextSN = SNmaker.GetNextSN(SkuObject.SnRule, Sfcdb, WO); Console.Out.WriteLine(nextSN); t_r_sn.addStartSNRecords(BU, user, WO, routeid, row_R_WO_HEADER, nextSN, Sfcdb); } //生成keypartlistid List <R_SN> r_sns = t_r_sn.GETSN(WO, Sfcdb); for (int i = 0; i < r_sns.Count; i++) { T_C_KP_LIST c_kp_list = new T_C_KP_LIST(Sfcdb, this.DBTYPE); if (objWorkorder.KP_LIST_ID != "" && c_kp_list.KpIDIsExist(objWorkorder.KP_LIST_ID, Sfcdb)) { SN snObject = new SN(); MESStationBase Station = new MESStationBase(); Station.BU = this.LoginUser.BU; Station.LoginUser = this.LoginUser; Station.SFCDB = Sfcdb; snObject.InsertR_SN_KP(objWorkorder, r_sns[i], Sfcdb, Station, this.DBTYPE); } } StationReturn.Data = qty; StationReturn.Status = StationReturnStatusValue.Pass; StationReturn.Message = MESReturnMessage.GetMESReturnMessage("MSGCODE20180801141046"); }