示例#1
0
        private DataTable GetLotTitle()
        {
            DataTable dt = _LotData.CopyDataToTable("MES_WIP_LOT");

            dt.Columns.Add("DeviceCode");//料號的2,3碼
            dt.Columns.Add("LotTypeDescr");
            dt.Columns.Add("WOQuantity");
            dt.Columns.Add("DeviceDescr");
            dt.Columns.Add("DeviceBPNo");
            dt.Columns.Add("DeviceBPRev");
            dt.Columns.Add("ProductionDate");//預計生產日期

            dt.Rows[0]["DeviceCode"] = _LotData.DeviceName.Substring(1, 2);
            var lsLotType = WpcExClassItemInfo.GetExClassItemInfo("LotType", _LotData.LotType);

            dt.Rows[0]["LotTypeDescr"] = lsLotType.Count > 0 ? lsLotType[0].Remark02 : "";

            var WOData = WorkOrderInfo.GetWorkOrderByWorkOrder(_LotData.WorkOrder);

            dt.Rows[0]["WOQuantity"]     = WOData.Quantity;
            dt.Rows[0]["ProductionDate"] = WOData["ProductionDate"].ToCimesString();

            var DeviceData = DeviceVersionInfoEx.GetActiveDeviceVersion(_LotData.DeviceName).ChangeTo <DeviceVersionInfoEx>();

            dt.Rows[0]["DeviceDescr"] = DeviceData.Description;
            dt.Rows[0]["DeviceBPNo"]  = "0 無欄位";
            dt.Rows[0]["DeviceBPRev"] = "0 無欄位";

            return(dt);
        }
示例#2
0
        /// <summary>
        /// 取的runcard的資料來源
        /// </summary>
        /// <param name="LotDataList"></param>
        /// <returns></returns>
        private DataSet GetRunCardDataSource(LotInfoEx LotData)
        {
            string sql = @"SELECT * FROM MES_WIP_LOT_NONACTIVE WHERE INVNO = #[STRING]";

            sql = string.Format(sql);
            SqlAgent sa = SQLCenter.Parse(sql, LotData.InventoryNo);

            var lsInvLot = InfoCenter.GetList <LotInfoEx>(sa);

            if (lsInvLot.Count == 0)
            {
                throw new Exception(TextMessage.Error.T00060("InventoryNO:" + LotData.InventoryNo));
            }

            string sBoxInString = "";

            lsInvLot.ForEach(p => {
                sBoxInString += "'" + p.Lot + "',";
            });
            sBoxInString = sBoxInString.EndsWith(",") ? sBoxInString.Substring(0, sBoxInString.Length - 1) : sBoxInString;

            var dtInvData = DBCenter.GetDataTable(@"
                SELECT WO,INVLOT,SUM(QUANTITY) QUANTITY,DEVICE FROM MES_WIP_LOT_NONACTIVE WHERE LOT IN (
                SELECT CURRENTLOT FROM MES_WIP_COMP_NONACTIVE  WHERE COMPONENTID IN (
                SELECT COMPONENTID FROM CST_WIP_PACK 
                INNER JOIN CST_WIP_PACK_DATA ON (CST_WIP_PACK.WIP_PACK_SID = CST_WIP_PACK_DATA.WIP_PACK_SID) WHERE 
                BOXNO IN (" + sBoxInString + "))) GROUP BY WO,INVLOT,DEVICE");

            dtInvData.TableName = "INVData";

            #region 定義 LOTDATA 資料表
            //DataTable dtInvData = lsInvLot.CopyDataToTable("INVData");
            dtInvData.Columns.Add("INVDate");
            dtInvData.Columns.Add("ITEM");
            dtInvData.Columns.Add("DeviceDescr");
            dtInvData.Columns.Add("Remark");
            dtInvData.Columns.Add("Loaction");
            dtInvData.Columns.Add("Factory");
            #endregion

            for (int i = 0; i < dtInvData.Rows.Count; i++)
            {
                dtInvData.Rows[i]["INVDate"]  = lsInvLot[0]["USERDEFINECOL17"].ToCimesString();
                dtInvData.Rows[i]["ITEM"]     = (i + 1).ToCimesString();
                dtInvData.Rows[i]["Remark"]   = lsInvLot[0]["USERDEFINECOL18"].ToCimesString();
                dtInvData.Rows[i]["Loaction"] = lsInvLot[0]["LOCATION"].ToCimesString();
                dtInvData.Rows[i]["Factory"]  = lsInvLot[0]["FACTORY"].ToCimesString();

                var DeviceData = DeviceVersionInfoEx.GetActiveDeviceVersion(dtInvData.Rows[i]["DEVICE"].ToString()).ChangeTo <DeviceVersionInfoEx>();
                if (DeviceData != null)
                {
                    dtInvData.Rows[i]["DeviceDescr"] = DeviceData.Description;
                }
            }

            DataSet dsReportData = new DataSet();
            dsReportData.Tables.Add(dtInvData);

            return(dsReportData);
        }
示例#3
0
        /// <summary>
        /// 取的runcard的資料來源
        /// </summary>
        /// <param name="LotDataList"></param>
        /// <returns></returns>
        private DataSet GetRunCardDataSource(LotInfoEx LotData)
        {
            string sql        = "";
            string sTableName = "MES_WIP_COMP";

            if (LotData.Status == "Finished")
            {
                sTableName = "MES_WIP_COMP_NONACTIVE";
            }

            #region 定義 LOTDATA 資料表
            DataTable dtLotData = lotData.CopyDataToTable("LOTDATA");
            dtLotData.Columns.Add("CartonNo");
            dtLotData.Columns.Add("DeviceDescr1");
            dtLotData.Columns.Add("DeviceDescr2");
            dtLotData.Columns.Add("CustomerNo1");
            dtLotData.Columns.Add("CustomerNo2");
            dtLotData.Columns.Add("Device1");
            dtLotData.Columns.Add("Device2");
            dtLotData.Columns.Add("Quantity1");
            dtLotData.Columns.Add("Quantity2");
            dtLotData.Columns.Add("Remark");
            dtLotData.Columns.Add("Inspectors");
            dtLotData.Columns.Add("Packers");
            dtLotData.Columns.Add("InspectionDate");
            #endregion

            #region 定義 COMPDATA 資料表
            DataTable dtCompData = new DataTable("COMPDATA");
            dtCompData.Columns.Add("ComponentID1");
            dtCompData.Columns.Add("ComponentID2");
            dtCompData.Columns.Add("Quantity1");
            dtCompData.Columns.Add("Quantity2");
            #endregion

            dtLotData.Rows[0]["CartonNo"] = LotData.Lot;
            dtLotData.Rows[0]["Remark"]   = "";

            var packInfo = CSTWIPPackInfo.GetPackInfoByBoxNo(LotData.Lot);
            dtLotData.Rows[0]["Inspectors"]     = packInfo.INSPUSER;
            dtLotData.Rows[0]["Packers"]        = packInfo.UserID;
            dtLotData.Rows[0]["InspectionDate"] = packInfo.UpdateTime.Substring(0, 10).Replace("/", "-");

            sql = @"SELECT DEVICE,COUNT(*) QTY 
                      FROM CST_WIP_PACK 
                     INNER JOIN CST_WIP_PACK_DATA ON CST_WIP_PACK.WIP_PACK_SID = CST_WIP_PACK_DATA.WIP_PACK_SID
                     WHERE BOXNO = #[STRING]
                     GROUP BY DEVICE";

            DataTable dtData = DBCenter.GetDataTable(sql, LotData.Lot);
            int       iIndex = 1;
            for (int i = 0; i < dtData.Rows.Count; i++)
            {
                if (i >= 2)
                {
                    break;
                }

                iIndex = i + 1;
                dtLotData.Rows[0]["Quantity" + iIndex.ToCimesString()] = dtData.Rows[i]["QTY"].ToCimesString();

                var DeviceData = DeviceVersionInfoEx.GetActiveDeviceVersion(dtData.Rows[i]["DEVICE"].ToCimesString()).ChangeTo <DeviceVersionInfoEx>();
                if (DeviceData != null)
                {
                    dtLotData.Rows[0]["DeviceDescr" + iIndex.ToCimesString()] = DeviceData.Description;
                    dtLotData.Rows[0]["CustomerNo" + iIndex.ToCimesString()]  = DeviceData["CustomerNo"].ToCimesString();
                    dtLotData.Rows[0]["Device" + iIndex.ToCimesString()]      = DeviceData.DeviceName;
                }

                #region 入庫批號

                sql = @"SELECT DMC,COUNT(*) COMPONENTQTY 
                          FROM CST_WIP_PACK 
                         INNER JOIN CST_WIP_PACK_DATA ON CST_WIP_PACK.WIP_PACK_SID = CST_WIP_PACK_DATA.WIP_PACK_SID
                         WHERE BOXNO = #[STRING]
                           AND DEVICE = #[STRING]
                         GROUP BY DMC 
                         ORDER BY DMC ";

                var dt = DBCenter.GetDataTable(sql, LotData.Lot, DeviceData.DeviceName);
                if (dt.Rows.Count > dtCompData.Rows.Count)
                {
                    int iRowCount = dt.Rows.Count - dtCompData.Rows.Count;
                    for (int j = 0; j < iRowCount; j++)
                    {
                        DataRow dr = dtCompData.NewRow();
                        dtCompData.Rows.Add(dr);
                    }
                }
                for (int k = 0; k < dt.Rows.Count; k++)
                {
                    dtCompData.Rows[k]["ComponentID" + iIndex.ToCimesString()] = dt.Rows[k]["DMC"].ToString();
                    dtCompData.Rows[k]["Quantity" + iIndex.ToCimesString()]    = dt.Rows[k]["COMPONENTQTY"].ToString();
                }
                #endregion
            }

            dtCompData.AcceptChanges();
            DataSet dsReportData = new DataSet();
            dsReportData.Tables.Add(dtLotData);
            dsReportData.Tables.Add(dtCompData);

            return(dsReportData);
        }
示例#4
0
        /// <summary>
        /// 輸入機加批號
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ttbLot_TextChanged(object sender, EventArgs e)
        {
            try
            {
                /* 1.	驗證批號存在性。(批號不存在)
                 * 2.	驗證批號狀態,只能輸入Wait或Run的批號。(狀態為XX,不可執行)
                 *   數量(Label):帶出批號數量。
                 *   料號(Label):帶出批號所屬料號。
                 *   料號描述(Label):帶出料號說明。
                 *   流程(Label):帶出批號所屬流程。
                 *   工作站(Label):帶出批號所屬工作站。
                 */

                ttbLot.Must(lblLot);

                #region 清除介面資料
                ttbEquip.Text       = "";
                ttbQty.Text         = "";
                ttbDevice.Text      = "";
                ttbRoute.Text       = "";
                ttbOperation.Text   = "";
                ttbComponentId.Text = "";
                ttbDefectDesc.Text  = "";
                ttbDefectQty.Text   = "";
                ttbDeviceDescr.Text = "";

                ddlComponentId.Items.Clear();
                ddlDefectReason.Items.Clear();
                ddlComponentId.Enabled = true;
                ttbComponentId.Enabled = true;

                _LotData = null;
                _SelectedComponetData = null;
                _DeviceData           = null;

                _DispatchReportTable = new DataTable();

                _DefectGridData = new List <DefectGridData>();

                btnOK.Enabled = false;

                gvDefect.SetDataSource(_DispatchReportTable, true);
                #endregion

                _LotData = LotInfoEx.GetLotByLot(ttbLot.Text).ChangeTo <LotInfoEx>();

                //驗證批號存在性。(批號不存在)
                if (_LotData != null)
                {
                    //驗證批號狀態,Run的批號。(狀態為XX,不可執行)
                    if (_LotData.Status == LotDefaultStatus.Run.ToString())
                    {
                        //驗證currentRule。
                        if (_LotData.CurrentRuleName != _ProgramInformationBlock.ProgramRight)
                        {
                            //該批號作業為{0},不為此功能,請遵循作業規範
                            throw new Exception(RuleMessage.Error.C10004(_LotData.CurrentRuleName));
                        }

                        var operData = OperationInfo.GetOperationByName(_LotData.OperationName).ChangeTo <OperationInfoEx>();
                        if (operData.GetDMC.ToBool())
                        {
                            var compList = ComponentInfo.GetLotAllComponents(_LotData.Lot).ChangeTo <ComponentInfoEx>();
                            foreach (var compData in compList)
                            {
                                if (compData.DMC.IsNullOrTrimEmpty())
                                {
                                    throw new CimesException(RuleMessage.Error.C00040(compData.ComponentID));
                                }
                            }
                        }

                        _DeviceData = DeviceVersionInfoEx.GetDataByDeviceName(_LotData.DeviceName);

                        ttbQty.Text         = _LotData.Quantity.ToString();
                        ttbDevice.Text      = _LotData.DeviceName;
                        ttbEquip.Text       = _LotData.ResourceName;
                        ttbDeviceDescr.Text = _DeviceData.Description;
                        ttbRoute.Text       = _LotData.RouteName;
                        ttbOperation.Text   = _LotData.OperationName;

                        InitialDropDownList();

                        if (_DeviceData.ProdType == CustomizeFunction.ProdType.S.ToCimesString())
                        {
                            ttbDefectQty.Enabled = false;
                            ttbDefectQty.Text    = "1";
                        }
                        else if (_DeviceData.ProdType == CustomizeFunction.ProdType.G.ToCimesString() ||
                                 _DeviceData.ProdType == CustomizeFunction.ProdType.W.ToCimesString() ||
                                 _DeviceData.ProdType == CustomizeFunction.ProdType.B.ToCimesString())
                        {
                            ttbDefectQty.Enabled = true;
                            ttbDefectQty.Text    = "1";

                            ddlComponentId.Enabled       = false;
                            ddlComponentId.SelectedIndex = -1;
                            ttbComponentId.Enabled       = false;
                        }
                        else
                        {
                            //[00031]{0}:{1}的系統屬性:{2} 未設定,請洽IT人員!
                            throw new Exception(TextMessage.Error.T00031(lblDevice.Text, _DeviceData.DeviceName, _DeviceData.ProdType));
                        }
                    }
                    else
                    {
                        //狀態為{0},不可執行
                        throw new Exception(RuleMessage.Error.C10003(_LotData.Status));
                    }
                }
                else
                {
                    //[00030]{0}:{1}不存在!
                    throw new Exception(TextMessage.Error.T00030(lblLot.Text, ttbLot.Text));
                }

                btnOK.Enabled = true;
            }
            catch (Exception ex)
            {
                ClearField();
                AjaxFocus(ttbLot);
                HandleError(ex);
            }
        }
示例#5
0
        private DataTable GetLotTitle()
        {
            DataTable dt = _LotData.CopyDataToTable("MES_WIP_LOT");

            dt.Columns.Add("DeviceCode");//料號的2,3碼
            dt.Columns.Add("LotTypeDescr");
            dt.Columns.Add("WOQuantity");
            dt.Columns.Add("DeviceDescr");
            dt.Columns.Add("DeviceBPNo");
            dt.Columns.Add("DeviceBPRev");
            dt.Columns.Add("ProductionDate"); //預計生產日期
            dt.Columns.Add("ScheduleDate");   //預計完成日期
            dt.Columns.Add("BOM_MATNR");      //投入料號
            dt.Columns.Add("Device_PLMNO");   //PLM 編號
            dt.Columns.Add("Device_PLMVR");   //PLM 版本

            if (cbxWO.Checked)
            {
                var woLot = CSTWorkOrderLotInfo.GetWorkOrderLotDataByWorkOrderLot(ttbWOLot.Text.Trim());

                dt.Rows[0]["WOLOT"]       = woLot.WOLOT;
                dt.Rows[0]["INVLOT"]      = woLot.INVLOT;
                dt.Rows[0]["MATERIALLOT"] = woLot.MATERIALLOT;
                dt.Rows[0]["Quantity"]    = woLot.Quantity;
                dt.Rows[0]["LOT"]         = woLot.WOLOT;

                var cstWOBOMInfo = CSTWPCWorkOrderBOMInfo.GetDataByWorkOrder(woLot.WorkOrder).Find(p => p["SORTF"].ToString() == "1");
                if (cstWOBOMInfo != null)
                {
                    dt.Rows[0]["BOM_MATNR"] = cstWOBOMInfo["MATNR"].ToString();
                }

                dt.Rows[0]["DeviceCode"] = _LotData.DeviceName.Substring(1, 2);

                var lsLotType = WpcExClassItemInfo.GetExClassItemInfo("LotType", _LotData.LotType);
                dt.Rows[0]["LotTypeDescr"] = lsLotType.Count > 0 ? lsLotType[0].Remark02 : "";

                var WOData = WorkOrderInfo.GetWorkOrderByWorkOrder(woLot.WorkOrder);
                dt.Rows[0]["WOQuantity"]     = WOData.Quantity;
                dt.Rows[0]["ProductionDate"] = WOData["ProductionDate"].ToCimesString();
                dt.Rows[0]["ScheduleDate"]   = WOData.ScheduleDate;

                var DeviceData = DeviceVersionInfoEx.GetActiveDeviceVersion(_LotData.DeviceName).ChangeTo <DeviceVersionInfoEx>();
                dt.Rows[0]["DeviceDescr"]  = DeviceData.Description;
                dt.Rows[0]["DeviceBPNo"]   = DeviceData["BPNO"].ToString();
                dt.Rows[0]["DeviceBPRev"]  = DeviceData["BPREV"].ToString();
                dt.Rows[0]["Device_PLMVR"] = DeviceData["PLMVR"].ToString();
                dt.Rows[0]["Device_PLMNO"] = DeviceData["PLMNO"].ToString();
            }
            if (cbxSN.Checked || cbxLot.Checked)
            {
                dt.Rows[0]["WOLOT"]       = _LotData.WorkOrderLot;
                dt.Rows[0]["INVLOT"]      = _LotData.InventoryLot;
                dt.Rows[0]["MATERIALLOT"] = _LotData.MaterialLot;
                dt.Rows[0]["Quantity"]    = _LotData.Quantity;
                dt.Rows[0]["LOT"]         = _LotData.Lot;

                dt.Rows[0]["DeviceCode"] = _LotData.DeviceName.Substring(1, 2);
                var lsLotType = WpcExClassItemInfo.GetExClassItemInfo("LotType", _LotData.LotType);
                dt.Rows[0]["LotTypeDescr"] = lsLotType.Count > 0 ? lsLotType[0].Remark02 : "";

                var WOData = WorkOrderInfo.GetWorkOrderByWorkOrder(_LotData.WorkOrder);
                dt.Rows[0]["WOQuantity"]     = WOData.Quantity;
                dt.Rows[0]["ProductionDate"] = WOData["ProductionDate"].ToCimesString();
                dt.Rows[0]["ScheduleDate"]   = WOData.ScheduleDate;

                var DeviceData = DeviceVersionInfoEx.GetActiveDeviceVersion(_LotData.DeviceName).ChangeTo <DeviceVersionInfoEx>();
                dt.Rows[0]["DeviceDescr"]  = DeviceData.Description;
                dt.Rows[0]["DeviceBPNo"]   = DeviceData["BPNO"].ToString();
                dt.Rows[0]["DeviceBPRev"]  = DeviceData["BPREV"].ToString();
                dt.Rows[0]["Device_PLMVR"] = DeviceData["PLMVR"].ToString();
                dt.Rows[0]["Device_PLMNO"] = DeviceData["PLMNO"].ToString();

                var cstWOBOMInfo = CSTWPCWorkOrderBOMInfo.GetDataByWorkOrder(WOData.WorkOrder).Find(p => p["SORTF"].ToString() == "1");
                if (cstWOBOMInfo != null)
                {
                    dt.Rows[0]["BOM_MATNR"] = cstWOBOMInfo["MATNR"].ToString();
                }
            }

            return(dt);
        }