示例#1
0
        /// <summary>
        /// 窗体载入事件。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TerminalLotDialog_Load(object sender, EventArgs e)
        {
            this.LotGroup.Text  = StringParser.Parse("${res:FanHai.Hemera.Addins.WIP.LotGroup}");
            this.lblRemark.Text = StringParser.Parse("${res:Global.Remark}");
            this.btnCancel.Text = StringParser.Parse("${res:Global.Cancel}");
            this.btnOK.Text     = StringParser.Parse("${res:Global.OKButtonText}");

            LotQueryEntity queryEntity = new LotQueryEntity();

            dsLotInfo = queryEntity.GetLotInfo(this._model.LotNumber);
            if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
            {
                MessageService.ShowError(queryEntity.ErrorMsg);
                dsLotInfo = null;
                return;
            }
            if (dsLotInfo.Tables[0].Rows.Count < 1)
            {
                MessageService.ShowMessage(string.Format("获取【{0}】信息失败,请重试。", this._model.LotNumber));
                dsLotInfo = null;
                return;
            }
            this.lotInfoLayout.Controls.Add(lotBaseInfo);
            lotBaseInfo.SetValueToControl(dsLotInfo);
        }
示例#2
0
        /// <summary>
        /// 绑定批次信息。
        /// </summary>
        private void BindLotInfo()
        {
            LotQueryEntity queryEntity = new LotQueryEntity();
            DataSet        dsReturn    = queryEntity.GetLotInfo(this._model.LotNumber);

            if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
            {
                MessageService.ShowError(queryEntity.ErrorMsg);
                dsReturn = null;
                return;
            }
            if (dsReturn.Tables[0].Rows.Count < 1)
            {
                MessageService.ShowMessage(string.Format("获取【{0}】信息失败,请重试。", this._model.LotNumber));
                dsReturn = null;
                return;
            }
            dsReturn.Tables[0].TableName = POR_LOT_FIELDS.DATABASE_TABLE_NAME;
            this.gcList.MainView         = this.gvList;
            this.gcList.DataSource       = dsReturn.Tables[0];

            this.txtLotNumber.Text      = dsReturn.Tables[0].Rows[0]["LOT_NUMBER"].ToString();
            this.txtWorkorderNo.Text    = dsReturn.Tables[0].Rows[0]["WORK_ORDER_NO"].ToString();
            this.txtProID.Text          = dsReturn.Tables[0].Rows[0]["PRO_ID"].ToString();
            this.txtEnterpriseName.Text = dsReturn.Tables[0].Rows[0]["ENTERPRISE_NAME"].ToString();
            this.txtRouteName.Text      = dsReturn.Tables[0].Rows[0]["ROUTE_NAME"].ToString();
            this.txtStepName.Text       = dsReturn.Tables[0].Rows[0]["ROUTE_STEP_NAME"].ToString();
            this.txtQuantity.Text       = dsReturn.Tables[0].Rows[0]["QUANTITY"].ToString();
            this.txtEfficiency.Text     = dsReturn.Tables[0].Rows[0]["EFFICIENCY"].ToString();
            this.txtSILot.Text          = dsReturn.Tables[0].Rows[0]["SI_LOT"].ToString();
        }
示例#3
0
        /// <summary>
        /// 绑定批次信息。
        /// </summary>
        private void BindLotInfo()
        {
            LotQueryEntity queryEntity = new LotQueryEntity();

            this._dsLotInfo = queryEntity.GetLotInfo(this._model.LotNumber);
            if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
            {
                MessageService.ShowError(queryEntity.ErrorMsg);
                this._dsLotInfo = null;
                return;
            }
            if (_dsLotInfo.Tables[0].Rows.Count < 1)
            {
                MessageService.ShowMessage(string.Format("获取【{0}】信息失败,请重试。", this._model.LotNumber));
                this._dsLotInfo = null;
                return;
            }
            this.teLotNumber.Text      = this._model.LotNumber;
            this.teLotNumber.Tag       = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_LOT_KEY]);
            this.teWorkorderNo.Text    = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_WORK_ORDER_NO]);
            this.teProId.Text          = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_PRO_ID]);
            this.teEnterpriseName.Text = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_ROUTE_ENTERPRISE_VER_FIELDS.FIELD_ENTERPRISE_NAME]);
            this.teRouteName.Text      = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_ROUTE_ROUTE_VER_FIELDS.FIELD_ROUTE_NAME]);
            this.teStepName.Text       = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_ROUTE_STEP_FIELDS.FIELD_ROUTE_STEP_NAME]);
            this.teEnterpriseName.Tag  = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_ROUTE_ENTERPRISE_VER_KEY]);
            string routeKey = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_CUR_ROUTE_VER_KEY]);

            this.teRouteName.Tag   = routeKey;
            this.teStepName.Tag    = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_CUR_STEP_VER_KEY]);
            this.teQty.Text        = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_QUANTITY]);
            this.teEfficiency.Text = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_EFFICIENCY]);
            this._lotType          = Convert.ToString(_dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_LOT_TYPE]);
            BindTroubleStep();
        }
示例#4
0
 private string MESSAGEBOX_CAPTION = StringParser.Parse("${res:FanHai.Hemera.Addins.WIP.LotDispatch.INFORMATION}"); //提示
 /// <summary>
 /// 构造函数。
 /// </summary>
 public LotOperation(LotOperationType operationType, IViewContent content)
 {
     InitializeComponent();
     _viewContent   = content;
     _operationType = operationType;
     _entity        = new LotQueryEntity();
     InitializeLanguage();
 }
示例#5
0
 string _activity             = string.Empty;                //操作动作名称
 /// <summary>
 /// 构造函数。
 /// </summary>
 /// <param name="model"></param>
 public LotOperationDefect(LotOperationDetailModel model, IViewContent view)
 {
     InitializeComponent();
     this._view        = view;
     this._model       = model;
     this._queryEntity = new LotQueryEntity();
     GridViewHelper.SetGridView(gvList);
 }
示例#6
0
        /// <summary>
        /// 绑定批次的基础数据。
        /// </summary>
        private void BindLotBaseInfoToControl()
        {
            string         lotKey = Convert.ToString(_dsParams.Tables[0].Rows[0][WIP_FUTUREHOLD_FIELDS.FIELDS_LOT_KEY]);
            LotQueryEntity entity = new LotQueryEntity();

            _dsLot = entity.GetLotInfo(lotKey);
            if (string.IsNullOrEmpty(entity.ErrorMsg))
            {
                _lotInfoCtrl.SetValueToControl(_dsLot);
            }
            else
            {
                MessageService.ShowMessage(entity.ErrorMsg, "错误");
            }
        }
示例#7
0
        /// <summary>
        /// 获取批次信息。
        /// </summary>
        /// <returns>true:成功获取批次信息。false:获取批次信息失败。</returns>
        private bool GetLotInfomation()
        {
            string lotNo = this.txtLotNo.Text;

            this.txtMaterialLot.Text = string.Empty;
            this.txtWorkOrder.Text   = string.Empty;
            this.txtPartNumber.Text  = string.Empty;
            this.txtSupplier.Text    = string.Empty;
            if (string.IsNullOrEmpty(lotNo))
            {
                return(true);
            }
            LotQueryEntity entity = new LotQueryEntity();
            DataSet        ds     = entity.GetLotInfo(lotNo);

            if (string.IsNullOrEmpty(entity.ErrorMsg))
            {
                if (ds.Tables[0].Rows.Count == 0)
                {
                    MessageService.ShowMessage("指定的批号不存在。");
                    return(false);//如果获取0行记录。
                }
                string factoryRoomKey  = ds.Tables[0].Rows[0]["FACTORYROOM_KEY"].ToString();
                string equipmentKey    = ds.Tables[0].Rows[0]["EQUIPMENT_KEY"].ToString();
                string curRoomKey      = this.lueFactoryRoom.EditValue.ToString();
                string curEquipmentKey = this.lueEquipment.EditValue.ToString();

                if (string.IsNullOrEmpty(factoryRoomKey) || factoryRoomKey != curRoomKey)
                {
                    MessageService.ShowMessage("指定的批号在当前选中车间不存在。");
                    return(false);
                }

                this.txtMaterialLot.Text = ds.Tables[0].Rows[0]["MATERIAL_LOT"].ToString();
                this.txtWorkOrder.Text   = ds.Tables[0].Rows[0]["WORK_ORDER_NO"].ToString();
                this.txtPartNumber.Text  = ds.Tables[0].Rows[0]["PART_NUMBER"].ToString();
                this.txtSupplier.Text    = ds.Tables[0].Rows[0]["SUPPLIER_NAME"].ToString();
            }
            else
            {
                MessageService.ShowMessage(entity.ErrorMsg);
                return(false);
            }
            return(true);
        }
示例#8
0
        /// <summary>
        /// 绑定批次数据到控件。
        /// </summary>
        private void BindLotNoToControl()
        {
            string         lotNo  = this.lueLotNo.Text;
            LotQueryEntity entity = new LotQueryEntity();
            DataSet        ds     = entity.QueryUsingLotData(lotNo, this._factoryRoomKey);

            //if (string.IsNullOrEmpty(entity.ErrorMsg))
            //{
            //    this.lueLotNo.Properties.DataSource = ds.Tables[0];
            //    this.lueLotNo.Properties.DisplayMember = "LOT_NUMBER";
            //    this.lueLotNo.Properties.ValueMember = "LOT_NUMBER";
            //}
            //else
            //{
            //    this.lueLotNo.Properties.DataSource = null;
            //    MessageService.ShowMessage(entity.ErrorMsg,"提示");
            //}
        }
示例#9
0
        /// <summary>
        /// 绑定批次信息。
        /// </summary>
        private void BindLotInfo()
        {
            LotQueryEntity queryEntity = new LotQueryEntity();
            DataSet        dsReturn    = queryEntity.GetLotInfo(this._model.LotNumber);

            if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
            {
                MessageService.ShowError(queryEntity.ErrorMsg);
                dsReturn = null;
                return;
            }
            if (dsReturn.Tables[0].Rows.Count < 1)
            {
                MessageService.ShowMessage(string.Format("获取【{0}】信息失败,请重试。", this._model.LotNumber));
                dsReturn = null;
                return;
            }
            dsReturn.Tables[0].TableName = POR_LOT_FIELDS.DATABASE_TABLE_NAME;
            this.gcLotList.MainView      = this.gvList;
            this.gcLotList.DataSource    = dsReturn.Tables[0];
        }
示例#10
0
        private void txtPallet_NO_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                LotQueryEntity     queryEntity     = new LotQueryEntity();
                LotOperationEntity workOrderEntity = new LotOperationEntity();
                DataSet            dsLotInfo       = new DataSet();
                dsLotInfo = queryEntity.GetLotInfoByPallet_No(txtPallet_NO.Text);
                if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
                {
                    MessageService.ShowError(queryEntity.ErrorMsg);
                    return;
                }
                //该托盘号有数据
                if (dsLotInfo.Tables[0].Rows.Count > 0)
                {
                    //获得该托盘号对应的料号
                    string partNumber = dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_PART_NUMBER].ToString();
                    //获得该托盘号对应的工单号
                    string workOrder = dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_WORK_ORDER_NO].ToString();

                    string ocrCode = "";

                    //获取该工单号的数据
                    DataSet dsProductData = workOrderEntity.GetWoProductData(workOrder);
                    if (string.IsNullOrEmpty(workOrderEntity.ErrorMsg))
                    {
                        //查到工单对应的数据
                        if (dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count > 0)
                        {
                            //工单号对应的料号与托盘号对应的料号一致,执行第二次请求,需回填新工单号字段
                            if (dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows[0][POR_WORK_ORDER_FIELDS.FIELD_PART_NUMBER].ToString() == partNumber)
                            {
                                //执行第二次请求
                                ReceiveSecondDataObject receiveSecondDataObject = new ReceiveSecondDataObject();
                                receiveSecondDataObject = InvokeSecondAPI(DateTime.Now, "", "",
                                                                          Convert.ToInt32(workOrder), dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count, 0);

                                //receiveSecondDataObject = InvokeSecondAPI(DateTime.Now, "", "",
                                //    41, 1, 0);

                                //调用成功
                                if (receiveSecondDataObject != null && receiveSecondDataObject.Code == "0")
                                {
                                    int newInWarehouseOrder = 0;
                                    newInWarehouseOrder = receiveSecondDataObject.Data.DocEntry;

                                    //回填por_lot表新工单号
                                    bool isUpdatePor_lot = workOrderEntity.UpdatePor_Lot(workOrder.ToString(), txtPallet_NO.Text);
                                    if (!isUpdatePor_lot)
                                    {
                                        MessageService.ShowError("新工单号写入失败");
                                        return;
                                    }
                                    MessageService.ShowMessage("新工单号填入成功");
                                    //回填Wip_consignment表入库单号
                                    bool isUpdateWip_consignment = workOrderEntity.UpdateWip_consignment(newInWarehouseOrder.ToString(), txtPallet_NO.Text);
                                    if (!isUpdateWip_consignment)
                                    {
                                        MessageService.ShowError("入库单号写入失败");
                                        return;
                                    }
                                    MessageService.ShowMessage("入库单号写入成功");
                                    dtgc.Clear();
                                    DataRow dr = dtgc.NewRow();
                                    dr["gcWorkOrder"]    = workOrder;
                                    dr["gcProductCode"]  = partNumber;
                                    dr["gcQty"]          = dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count;
                                    dr["gcNewWorkOrder"] = workOrder;
                                }
                                else
                                {
                                    MessageService.ShowError("调用第二次接口失败");
                                }
                            }
                            //不一致,执行第一次请求,再执行第二次请求,需回填por_lot新工单号字段
                            else
                            {
                                ReceiveFirstDataObject receiveFirstDataObject = new ReceiveFirstDataObject();
                                //receiveFirstDataObject = InvokeFirstAPI("2010005103", 1,
                                //      "301", DateTime.Now, DateTime.Now, DateTime.Now, "41",
                                //     dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows[0][POR_WORK_ORDER_FIELDS.FIELD_OCRCODE].ToString(), "");
                                receiveFirstDataObject = InvokeFirstAPI(partNumber, dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count,
                                                                        dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows[0][POR_WORK_ORDER_FIELDS.FIELD_STOCK_LOCATION].ToString(), DateTime.Now, DateTime.Now, DateTime.Now, workOrder,
                                                                        dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows[0][POR_WORK_ORDER_FIELDS.FIELD_OCRCODE].ToString(), "");
                                //调用成功
                                if (receiveFirstDataObject != null && receiveFirstDataObject.Code == "0")
                                {
                                    int newWorkOrder = 0;
                                    try
                                    {
                                        newWorkOrder = Convert.ToInt32(receiveFirstDataObject.Data.DocEntry);
                                    }
                                    catch (Exception ex)
                                    {
                                        MessageService.ShowError("新工单号格式错误");
                                        return;
                                    }

                                    //回填por_lot表新工单号
                                    bool isUpdatePor_lot = workOrderEntity.UpdatePor_Lot(newWorkOrder.ToString(), txtPallet_NO.Text);
                                    if (!isUpdatePor_lot)
                                    {
                                        MessageService.ShowError("新工单号写入失败");
                                        return;
                                    }
                                    else
                                    {
                                        MessageService.ShowMessage("新工单号写入成功");
                                    }

                                    //执行第二次请求
                                    ReceiveSecondDataObject receiveSecondDataObject = new ReceiveSecondDataObject();
                                    receiveSecondDataObject = InvokeSecondAPI(DateTime.Now, "", "",
                                                                              Convert.ToInt32(receiveFirstDataObject.Data.DocEntry), dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count, 0);

                                    //receiveSecondDataObject = InvokeSecondAPI(DateTime.Now, "", "",
                                    //    41, 1, 0);
                                    //调用成功
                                    if (receiveSecondDataObject.Code == "0")
                                    {
                                        int newInWarehouseOrder = 0;
                                        newInWarehouseOrder = receiveSecondDataObject.Data.DocEntry;
                                        //回填Wip_consignment表入库单号
                                        bool isUpdateWip_consignment = workOrderEntity.UpdateWip_consignment(newInWarehouseOrder.ToString(), txtPallet_NO.Text);
                                        if (!isUpdateWip_consignment)
                                        {
                                            MessageService.ShowError("入库单号写入失败");
                                            return;
                                        }
                                        else
                                        {
                                            MessageService.ShowMessage("入库单写入成功");
                                            dtgc.Clear();
                                            DataRow dr = dtgc.NewRow();
                                            dr["gcWorkOrder"]    = workOrder;
                                            dr["gcProductCode"]  = partNumber;
                                            dr["gcQty"]          = dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count;
                                            dr["gcNewWorkOrder"] = newWorkOrder;
                                            dtgc.Rows.Add(dr);
                                        }
                                    }
                                    else
                                    {
                                        MessageService.ShowError("调用第二次接口失败");
                                    }
                                }
                                else
                                {
                                    MessageService.ShowError("调用第一次接口失败");
                                    return;
                                }
                            }
                        }
                        else
                        {
                            MessageService.ShowError("托盘号对应的工单没有明细");
                            return;
                        }
                    }
                    else
                    {
                        MessageService.ShowError(workOrderEntity.ErrorMsg);
                        return;
                    }
                }
                else
                {
                    MessageService.ShowError("托盘号不存在!");
                    return;
                }
            }
        }
示例#11
0
        /// <summary>
        /// 绑定批次信息。
        /// </summary>
        private void BindLotInfo()
        {
            string factoryRoomKey = Convert.ToString(this.lueFactoryRoom.EditValue);;

            if (string.IsNullOrEmpty(factoryRoomKey))
            {
                MessageService.ShowMessage("请选择车间。", "系统提示");
                this.lueFactoryRoom.Select();
                return;
            }
            //开始时间>结束时间
            if (this.deStartCreateDate.DateTime > this.deEndCreateDate.DateTime)
            {
                MessageService.ShowMessage("开始时间必须小于结束时间。", "系统提示");
                this.deStartCreateDate.Select();
                return;
            }
            string    DeletedFlag     = Convert.ToString(this.lueDeletedFlag.EditValue);
            string    HoldFlag        = Convert.ToString(this.lueHoldFlag.EditValue);
            string    LotNumber       = this.teLotNumber.Text.ToUpper().Trim();
            string    LotType         = Convert.ToString(this.lueLotType.EditValue);
            string    OperationName   = Convert.ToString(this.lueOperation.EditValue);
            string    ProId           = this.teProId.Text.ToUpper().Trim();
            string    ReworkFlag      = Convert.ToString(this.lueReworkFlag.EditValue);
            string    RoomKey         = factoryRoomKey;
            string    RoomName        = Convert.ToString(this.lueFactoryRoom.Text);
            string    ShippedFlag     = Convert.ToString(this.lueShippedFlag.EditValue);
            string    StateFlag       = Convert.ToString(this.lueState.EditValue);
            string    PalletNo        = this.tePalletNo.Text.Trim();
            string    WorkOrderNumber = this.teWorkOrderNumber.Text.ToUpper().Trim();
            string    StartCreateDate = this.deStartCreateDate.DateTime.ToString("yyyy-MM-dd HH:mm:ss");
            string    EndCreateDate   = this.deEndCreateDate.DateTime.ToString("yyyy-MM-dd HH:mm:ss");
            string    Creator         = this.teCreator.Text.Trim();
            string    LotNumber1      = this.teLotNumberEnd.Text.Trim();
            string    PartNumber      = this.tePartNumber.Text.Trim();
            string    OrgOrderNumber  = this.teOrgOrderNumber.Text.Trim();
            Hashtable htParams        = new Hashtable();
            DataSet   dsParams        = new DataSet();
            DataSet   dsReturn        = new DataSet();

            //车间主键。
            htParams.Add(POR_LOT_FIELDS.FIELD_FACTORYROOM_KEY, RoomKey);
            //工序名称不为空
            if (!string.IsNullOrEmpty(OperationName))
            {
                htParams.Add(POR_ROUTE_OPERATION_VER_FIELDS.FIELD_ROUTE_OPERATION_NAME, OperationName);
            }
            //批次号不为空
            if (!string.IsNullOrEmpty(LotNumber1) && !string.IsNullOrEmpty(LotNumber))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_LOT_NUMBER + "_START", LotNumber);
                htParams.Add(POR_LOT_FIELDS.FIELD_LOT_NUMBER + "_END", LotNumber1);
            }
            //批次号不为空
            else if (!string.IsNullOrEmpty(LotNumber))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_LOT_NUMBER, LotNumber);
            }
            //工单号不为空
            if (!string.IsNullOrEmpty(WorkOrderNumber))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_WORK_ORDER_NO, WorkOrderNumber);
            }
            //工单号不为空
            if (!string.IsNullOrEmpty(OrgOrderNumber))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_ORG_WORK_ORDER_NO, OrgOrderNumber);
            }
            //产品ID号不为空
            if (!string.IsNullOrEmpty(ProId))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_PRO_ID, ProId);
            }

            //产品料不为空
            if (!string.IsNullOrEmpty(PartNumber))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_PART_NUMBER, PartNumber);
            }
            //托盘号不为空
            if (!string.IsNullOrEmpty(PalletNo))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_PALLET_NO, PalletNo);
            }
            //暂停标记不为空
            if (!string.IsNullOrEmpty(HoldFlag))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_HOLD_FLAG, HoldFlag);
            }
            //重工标记不为空
            if (!string.IsNullOrEmpty(ReworkFlag))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_IS_REWORKED, ReworkFlag);
            }
            //删除标记不为空
            if (!string.IsNullOrEmpty(DeletedFlag))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_DELETED_TERM_FLAG, DeletedFlag);
            }
            //出货标记不为空
            if (!string.IsNullOrEmpty(ShippedFlag))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_SHIPPED_FLAG, ShippedFlag);
            }
            //状态不为空
            if (!string.IsNullOrEmpty(StateFlag))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_STATE_FLAG, StateFlag);
            }
            //批次类型不为空
            if (!string.IsNullOrEmpty(LotType))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_LOT_TYPE, LotType);
            }
            //创建人
            if (!string.IsNullOrEmpty(Creator))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_CREATOR, Creator);
            }
            //创建日期-起不为空
            if (!string.IsNullOrEmpty(StartCreateDate))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_CREATE_TIME + "_START", StartCreateDate);
            }
            //创建日期-止不为空
            if (!string.IsNullOrEmpty(EndCreateDate))
            {
                htParams.Add(POR_LOT_FIELDS.FIELD_CREATE_TIME + "_END", EndCreateDate);
            }
            DataTable dtParams = CommonUtils.ParseToDataTable(htParams);

            dtParams.TableName = TRANS_TABLES.TABLE_MAIN_DATA;
            dsParams.Tables.Add(dtParams);
            //查询批次
            LotQueryEntity    entity = new LotQueryEntity();
            PagingQueryConfig config = new PagingQueryConfig()
            {
                PageNo   = pgnQueryResult.PageNo,
                PageSize = pgnQueryResult.PageSize
            };

            dsReturn               = entity.Query(dsParams, ref config);
            pgnQueryResult.Pages   = config.Pages;
            pgnQueryResult.Records = config.Records;
            if (!string.IsNullOrEmpty(entity.ErrorMsg))
            {
                MessageService.ShowMessage(entity.ErrorMsg);
                return;
            }
            if (dsReturn.Tables.Count > 0)
            {
                gcLot.DataSource = dsReturn.Tables[0];
                gcLot.MainView   = gvLot;
                gvLot.BestFitColumns();
            }
        }
示例#12
0
        /// <summary>
        /// 添加待调整的批次信息。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            DataTable dtList    = this.gcList.DataSource as DataTable;
            string    lotNumber = this.beLotNumber.Text.ToUpper().Trim();

            if (string.IsNullOrEmpty(lotNumber))
            {
                MessageService.ShowMessage("请输入序列号。", "提示");
                this.beLotNumber.Select();
                return;
            }

            int count = dtList.AsEnumerable()
                        .Count(dr => Convert.ToString(dr[POR_LOT_FIELDS.FIELD_LOT_NUMBER]) == lotNumber);

            if (count > 0)
            {
                MessageService.ShowMessage(string.Format("【{0}】在列表中已存在,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            LotQueryEntity queryEntity = new LotQueryEntity();
            DataSet        dsReturn    = queryEntity.GetLotInfo(lotNumber);

            if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
            {
                MessageService.ShowError(queryEntity.ErrorMsg);
                dsReturn = null;
                this.beLotNumber.SelectAll();
                return;
            }
            if (dsReturn.Tables[0].Rows.Count < 1)
            {
                MessageService.ShowMessage(string.Format("获取【{0}】信息失败,请检查。", lotNumber));
                dsReturn = null;
                this.beLotNumber.SelectAll();
                return;
            }
            //判断批次号在指定车间中是否存在。
            string currentRoomKey = Convert.ToString(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_FACTORYROOM_KEY]);

            if (this._model.RoomKey != currentRoomKey)
            {
                MessageService.ShowMessage(string.Format("【{0}】在当前车间中不存在,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            //判断批次是否被锁定
            int holdFlag = Convert.ToInt32(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_HOLD_FLAG]);

            if (holdFlag == 1)
            {
                MessageService.ShowMessage(string.Format("【{0}】已被暂停,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            //判断批次是否被删除
            int deleteFlag = Convert.ToInt32(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_DELETED_TERM_FLAG]);

            if (deleteFlag == 1)
            {
                MessageService.ShowMessage(string.Format("【{0}】已结束,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            //判断批次是否已结束
            if (deleteFlag == 2)
            {
                MessageService.ShowMessage(string.Format("【{0}】已删除,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            //已包装,出托后才能调整批次。
            string palletNo = Convert.ToString(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_PALLET_NO]);

            if (!string.IsNullOrEmpty(palletNo))
            {
                MessageService.ShowMessage(string.Format("【{0}】已包装,出托后才能调整。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            dsReturn.Tables[0].TableName = POR_LOT_FIELDS.DATABASE_TABLE_NAME;

            dtList.Merge(dsReturn.Tables[0]);
            //如果要调整的批次中有多个批次信息,则不能调整批次号。
            if (dtList.Rows.Count > 1)
            {
                this.teLotNumber.Text        = string.Empty;
                this.lciLotNumber.Visibility = LayoutVisibility.Never;
            }
            this.beLotNumber.SelectAll();
        }
示例#13
0
        /// <summary>
        /// 检查进行数据采集时是否对该批次号有权限。
        /// </summary>
        /// <param name="lotNumber">批次号码。</param>
        /// <param name="actionName">NONE:离线数据采集。TRACKOUT:在线数据采集。</param>
        /// <returns>true或者false,true表示有权限,false表示没有权限。</returns>
        /// comment by peter 2012-2-23
        private bool CheckLotNo(string lotNumber, string actionName)
        {
            LotQueryEntity entity = new LotQueryEntity();
            DataSet        ds     = entity.GetLotInfo(lotNumber);

            if (string.IsNullOrEmpty(entity.ErrorMsg))
            {
                if (ds.Tables[0].Rows.Count == 0)
                {
                    MessageService.ShowMessage("指定的批号不存在。", "提示");
                    return(false);//如果获取0行记录。
                }
                string factoryRoomKey = ds.Tables[0].Rows[0]["FACTORYROOM_KEY"].ToString();
                string equipmentKey   = ds.Tables[0].Rows[0]["EQUIPMENT_KEY"].ToString();
                string stepName       = ds.Tables[0].Rows[0]["ROUTE_STEP_NAME"].ToString();
                int    state          = Convert.ToInt32(ds.Tables[0].Rows[0]["STATE_FLAG"]);
                string orderNumber    = Convert.ToString(ds.Tables[0].Rows[0]["WORK_ORDER_NO"]);
                string materialLot    = Convert.ToString(ds.Tables[0].Rows[0]["MATERIAL_LOT"]);
                string partNumber     = Convert.ToString(ds.Tables[0].Rows[0]["PART_NUMBER"]);
                string partType       = Convert.ToString(ds.Tables[0].Rows[0]["LOT_TYPE"]);
                string edcInsKey      = Convert.ToString(ds.Tables[0].Rows[0]["EDC_INS_KEY"]);
                string routeKey       = Convert.ToString(ds.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_CUR_ROUTE_VER_KEY]);


                string curRoomKey      = this.lueFactoryRoom.EditValue.ToString();
                string curEquipmentKey = this.lueEquipment.EditValue.ToString();
                string operationName   = this.cbOperation.Text;
                string curPartNumber   = Convert.ToString(this.lueEDCItem.GetColumnValue(EDC_POINT_FIELDS.FIELD_TOPRODUCT));
                string curPartType     = Convert.ToString(this.lueEDCItem.GetColumnValue(EDC_POINT_FIELDS.FIELD_PART_TYPE));
                string curRouteKey     = Convert.ToString(this.lueEDCItem.GetColumnValue(EDC_POINT_FIELDS.FIELD_ROUTE_VER_KEY));

                if (string.IsNullOrEmpty(factoryRoomKey) || factoryRoomKey != curRoomKey)
                {
                    MessageService.ShowMessage("指定的批号在当前选中车间不存在。", "提示");
                    return(false);
                }
                //if (!string.IsNullOrEmpty(curRouteKey) && curRouteKey != routeKey)
                //{
                //    MessageService.ShowMessage("指定批号和指定数据采集项的工艺流程不一致。", "提示");
                //    return false;
                //}
                if (!string.IsNullOrEmpty(curPartNumber) && curPartNumber != partNumber)
                {
                    MessageService.ShowMessage("指定批号的成品料号不能使用当前采集项目。", "提示");
                    return(false);
                }
                //else if (string.IsNullOrEmpty(curPartNumber) && !string.IsNullOrEmpty(curPartType) && curPartType != partType)
                //{
                //    MessageService.ShowMessage("指定批号的成品类型不能使用当前采集项目。", "提示");
                //    return false;
                //}
                //在线采集还需要继续判断。
                //if (actionName != ACTIVITY_FIELD_VALUES.FIELD_ACTIVITY_NONE)
                //{
                //    if (stepName != operationName)
                //    {
                //        MessageService.ShowMessage("指定批号未在当前选中工序上进行加工。", "提示");
                //        return false;
                //    }
                //    if (curEquipmentKey != equipmentKey)
                //    {
                //        MessageService.ShowMessage("指定批号未在当前选中设备上进行加工。", "提示");
                //        return false;
                //    }

                //    if (string.IsNullOrEmpty(edcInsKey))
                //    {
                //        MessageService.ShowMessage("指定批号不能进行数据采集。", "提示");
                //        return false;
                //    }
                //}

                this.txtWorkOrder.Text   = orderNumber;
                this.txtMaterialLot.Text = materialLot;
            }
            else
            {
                MessageService.ShowMessage(entity.ErrorMsg);
                return(false);
            }
            return(true);
        }
示例#14
0
        /// <summary>
        /// 保存,调整批次。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsbOK_Click(object sender, EventArgs e)
        {
            DataTable dtLotInfo = this.gcList.DataSource as DataTable;

            if (dtLotInfo.Rows.Count < 1)
            {
                MessageService.ShowMessage("待调整批次信息列表至少要有一条记录。", "提示");
                return;
            }
            string newLotNumber      = this.teLotNumber.Text.Trim().ToUpper();
            string newProId          = Convert.ToString(this.lueProId.EditValue);
            string newCreateType     = Convert.ToString(this.lueCreateType.EditValue);
            string newLotType        = Convert.ToString(this.lueLotType.EditValue);
            string newPriority       = Convert.ToString(this.luePriority.EditValue);
            string newEfficiency     = Convert.ToString(this.lueEfficiency.EditValue);
            string newSiLot          = this.teSILot.Text.Trim();
            string newEnterpriseName = this.beEnterpriseName.Text;
            string newEnterpriseKey  = Convert.ToString(this.beEnterpriseName.Tag);
            string newRouteName      = this.teRouteName.Text;
            string newRouteKey       = Convert.ToString(this.teRouteName.Tag);
            string newStepName       = this.teStepName.Text;
            string newStepKey        = Convert.ToString(this.teStepName.Tag);
            string remark            = this.teRemark.Text;

            //必须要输入一个调整项目。
            if (string.IsNullOrEmpty(newLotNumber) &&
                string.IsNullOrEmpty(newProId) &&
                string.IsNullOrEmpty(newCreateType) &&
                string.IsNullOrEmpty(newLotType) &&
                string.IsNullOrEmpty(newPriority) &&
                string.IsNullOrEmpty(newEfficiency) &&
                string.IsNullOrEmpty(newSiLot) &&
                string.IsNullOrEmpty(newStepKey))
            {
                MessageService.ShowMessage("必须要输入一个调整项目。", "提示");
                return;
            }
            //如果批次号不为空,则判断批次号是否存在。
            if (!string.IsNullOrEmpty(newLotNumber))
            {
                LotQueryEntity queryEntity = new LotQueryEntity();
                DataSet        dsReturn    = queryEntity.GetLotInfo(newLotNumber);
                if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
                {
                    MessageService.ShowError(queryEntity.ErrorMsg);
                    dsReturn = null;
                    return;
                }
                if (dsReturn.Tables[0].Rows.Count > 0)
                {
                    MessageService.ShowMessage(string.Format("【{0}】在数据库中已存在,请确认。", newLotNumber));
                    dsReturn = null;
                    return;
                }
            }
            string shiftName = this._model.ShiftName;
            string shiftKey  = string.Empty;
            //Shift shiftEntity = new Shift();
            //string shiftKey = shiftEntity.IsShiftValueExists(shiftName);//班次主键。
            ////获取班次主键失败。
            //if (!string.IsNullOrEmpty(shiftEntity.ErrorMsg))
            //{
            //    MessageService.ShowError(shiftEntity.ErrorMsg);
            //    return;
            //}
            ////没有排班。
            //if (string.IsNullOrEmpty(shiftKey))
            //{
            //    MessageService.ShowMessage("请先在系统中进行排班。", "提示");
            //    return;
            //}
            string oprComputer = PropertyService.Get(PROPERTY_FIELDS.COMPUTER_NAME);
            string timezone    = PropertyService.Get(PROPERTY_FIELDS.TIMEZONE);

            DataSet dsParams = new DataSet();
            //存放新批次信息。
            Hashtable htMaindata = new Hashtable();
            //存放待调整的批次的操作数据
            WIP_TRANSACTION_FIELDS transFields = new WIP_TRANSACTION_FIELDS();
            DataTable dtTransaction            = CommonUtils.CreateDataTable(transFields);
            //存放调整操作的明细记录。
            WIP_COMMENT_FIELDS commentFileds = new WIP_COMMENT_FIELDS();
            DataTable          dtComment     = CommonUtils.CreateDataTable(commentFileds);
            StringBuilder      afterContent  = new StringBuilder();

            foreach (DataRow dr in dtLotInfo.Rows)
            {
                //组织待调整的批次的操作数据
                DataRow drTransaction = dtTransaction.NewRow();
                dtTransaction.Rows.Add(drTransaction);
                string transKey = CommonUtils.GenerateNewKey(0);
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_TRANSACTION_KEY]  = transKey;
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_PIECE_KEY]        = dr[POR_LOT_FIELDS.FIELD_LOT_KEY];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_ACTIVITY]         = ACTIVITY_FIELD_VALUES.FIELD_ACTIVITY_ADJUST;
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_QUANTITY_IN]      = dr[POR_LOT_FIELDS.FIELD_QUANTITY];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_QUANTITY_OUT]     = dr[POR_LOT_FIELDS.FIELD_QUANTITY];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_ENTERPRISE_KEY]   = dr[POR_LOT_FIELDS.FIELD_ROUTE_ENTERPRISE_VER_KEY];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_ENTERPRISE_NAME]  = dr[POR_ROUTE_ENTERPRISE_VER_FIELDS.FIELD_ENTERPRISE_NAME];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_ROUTE_KEY]        = dr[POR_LOT_FIELDS.FIELD_CUR_ROUTE_VER_KEY];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_ROUTE_NAME]       = dr[POR_ROUTE_ROUTE_VER_FIELDS.FIELD_ROUTE_NAME];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_STEP_KEY]         = dr[POR_LOT_FIELDS.FIELD_CUR_STEP_VER_KEY];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_STEP_NAME]        = dr[POR_ROUTE_STEP_FIELDS.FIELD_ROUTE_STEP_NAME];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_WORK_ORDER_KEY]   = dr[POR_LOT_FIELDS.FIELD_WORK_ORDER_KEY];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_SHIFT_KEY]        = shiftKey;
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_SHIFT_NAME]       = shiftName;
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_STATE_FLAG]       = dr[POR_LOT_FIELDS.FIELD_STATE_FLAG];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_REWORK_FLAG]      = dr[POR_LOT_FIELDS.FIELD_IS_REWORKED];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_OPERATOR]         = this._model.UserName;
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_OPR_COMPUTER]     = oprComputer;
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_LINE_KEY]         = dr[POR_LOT_FIELDS.FIELD_CUR_PRODUCTION_LINE_KEY];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_OPR_LINE]         = dr[POR_LOT_FIELDS.FIELD_OPR_LINE];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_OPR_LINE_PRE]     = dr[POR_LOT_FIELDS.FIELD_OPR_LINE_PRE];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_EDC_INS_KEY]      = dr[POR_LOT_FIELDS.FIELD_EDC_INS_KEY];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_EQUIPMENT_KEY]    = dr[EMS_EQUIPMENTS_FIELDS.FIELD_EQUIPMENT_KEY];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_ACTIVITY_COMMENT] = remark;
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_EDITOR]           = this._model.UserName;
                //用于暂存序列号批次信息最后的编辑时间,以便判断序列号信息是否过期。
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_EDIT_TIME]         = dr[POR_LOT_FIELDS.FIELD_EDIT_TIME];
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_EDIT_TIMEZONE_KEY] = timezone;
                drTransaction[WIP_TRANSACTION_FIELDS.FIELD_TIME_STAMP]        = DBNull.Value;
                //组织待调整的批次的明细操作数据
                DataRow drComment = dtComment.NewRow();
                dtComment.Rows.Add(drComment);
                drComment[WIP_COMMENT_FIELDS.FIELDS_TRANSACTION_KEY] = transKey;
                drComment[WIP_COMMENT_FIELDS.FIELDS_ENTERPRISE_KEY]  = dr[POR_LOT_FIELDS.FIELD_ROUTE_ENTERPRISE_VER_KEY];
                drComment[WIP_COMMENT_FIELDS.FIELDS_ROUTE_KEY]       = dr[POR_LOT_FIELDS.FIELD_CUR_ROUTE_VER_KEY];
                drComment[WIP_COMMENT_FIELDS.FIELDS_STEP_KEY]        = dr[POR_LOT_FIELDS.FIELD_CUR_STEP_VER_KEY];
                drComment[WIP_COMMENT_FIELDS.FIELDS_EDIT_TIMEZONE]   = timezone;
                drComment[WIP_COMMENT_FIELDS.FIELDS_EDIT_TIME]       = DBNull.Value;
                drComment[WIP_COMMENT_FIELDS.FIELDS_EDITOR]          = this._model.UserName;
                StringBuilder beforeContent = new StringBuilder();
                //新批次号不为空。
                if (!string.IsNullOrEmpty(newLotNumber))
                {
                    if (!htMaindata.ContainsKey(POR_LOT_FIELDS.FIELD_LOT_NUMBER))
                    {
                        htMaindata.Add(POR_LOT_FIELDS.FIELD_LOT_NUMBER, newLotNumber);
                        afterContent.AppendFormat("批次号:{0};", newLotNumber);
                    }
                    beforeContent.AppendFormat("批次号:{0};", dr[POR_LOT_FIELDS.FIELD_LOT_NUMBER]);
                }
                //新产品ID号不为空
                if (!string.IsNullOrEmpty(newProId))
                {
                    if (!htMaindata.ContainsKey(POR_LOT_FIELDS.FIELD_PRO_ID))
                    {
                        htMaindata.Add(POR_LOT_FIELDS.FIELD_PRO_ID, newProId);
                        afterContent.AppendFormat("产品ID号:{0};", newProId);
                    }
                    beforeContent.AppendFormat("产品ID号:{0};", dr[POR_LOT_FIELDS.FIELD_PRO_ID]);
                }
                //新的创建类别。
                if (!string.IsNullOrEmpty(newCreateType))
                {
                    if (!htMaindata.ContainsKey(POR_LOT_FIELDS.FIELD_CREATE_TYPE))
                    {
                        htMaindata.Add(POR_LOT_FIELDS.FIELD_CREATE_TYPE, newCreateType);
                        afterContent.AppendFormat("创建类别:{0};", newCreateType);
                    }
                    beforeContent.AppendFormat("创建类别:{0};", dr[POR_LOT_FIELDS.FIELD_CREATE_TYPE]);
                }
                //新的批次类别。
                if (!string.IsNullOrEmpty(newLotType))
                {
                    if (!htMaindata.ContainsKey(POR_LOT_FIELDS.FIELD_LOT_TYPE))
                    {
                        htMaindata.Add(POR_LOT_FIELDS.FIELD_LOT_TYPE, newLotType);
                        afterContent.AppendFormat("批次类别:{0};", newLotType);
                    }
                    beforeContent.AppendFormat("批次类别:{0};", dr[POR_LOT_FIELDS.FIELD_LOT_TYPE]);
                }
                //新的优先级。
                if (!string.IsNullOrEmpty(newPriority))
                {
                    if (!htMaindata.ContainsKey(POR_LOT_FIELDS.FIELD_PRIORITY))
                    {
                        htMaindata.Add(POR_LOT_FIELDS.FIELD_PRIORITY, newPriority);
                        afterContent.AppendFormat("优先级:{0};", newPriority);
                    }
                    beforeContent.AppendFormat("优先级:{0};", dr[POR_LOT_FIELDS.FIELD_PRIORITY]);
                }
                //新的转换效率。
                if (!string.IsNullOrEmpty(newEfficiency))
                {
                    if (!htMaindata.ContainsKey(POR_LOT_FIELDS.FIELD_EFFICIENCY))
                    {
                        htMaindata.Add(POR_LOT_FIELDS.FIELD_EFFICIENCY, newEfficiency);
                        afterContent.AppendFormat("转换效率:{0};", newEfficiency);
                    }
                    beforeContent.AppendFormat("转换效率:{0};", dr[POR_LOT_FIELDS.FIELD_EFFICIENCY]);
                }
                //新的硅片供应商。
                if (!string.IsNullOrEmpty(newSiLot))
                {
                    if (!htMaindata.ContainsKey(POR_LOT_FIELDS.FIELD_SI_LOT))
                    {
                        htMaindata.Add(POR_LOT_FIELDS.FIELD_SI_LOT, newSiLot);
                        afterContent.AppendFormat("硅片供应商:{0};", newSiLot);
                    }
                    beforeContent.AppendFormat("硅片供应商:{0};", dr[POR_LOT_FIELDS.FIELD_SI_LOT]);
                }
                //新的工步主键。
                if (!string.IsNullOrEmpty(newStepKey))
                {
                    if (!htMaindata.ContainsKey(POR_LOT_FIELDS.FIELD_ROUTE_ENTERPRISE_VER_KEY))
                    {
                        htMaindata.Add(POR_LOT_FIELDS.FIELD_ROUTE_ENTERPRISE_VER_KEY, newEnterpriseKey);
                        afterContent.AppendFormat("工艺流程组:{0};", newEnterpriseName);
                    }
                    if (!htMaindata.ContainsKey(POR_LOT_FIELDS.FIELD_CUR_ROUTE_VER_KEY))
                    {
                        htMaindata.Add(POR_LOT_FIELDS.FIELD_CUR_ROUTE_VER_KEY, newRouteKey);
                        afterContent.AppendFormat("工艺流程:{0};", newRouteName);
                    }
                    if (!htMaindata.ContainsKey(POR_LOT_FIELDS.FIELD_CUR_STEP_VER_KEY))
                    {
                        htMaindata.Add(POR_LOT_FIELDS.FIELD_CUR_STEP_VER_KEY, newStepKey);
                        afterContent.AppendFormat("工序:{0};", newStepName);
                    }
                    drComment[WIP_COMMENT_FIELDS.FIELDS_ENTERPRISE_KEY] = newEnterpriseKey;
                    drComment[WIP_COMMENT_FIELDS.FIELDS_ROUTE_KEY]      = newRouteKey;
                    drComment[WIP_COMMENT_FIELDS.FIELDS_STEP_KEY]       = newStepKey;
                    beforeContent.AppendFormat("工艺流程组:{0};", dr[POR_ROUTE_ENTERPRISE_VER_FIELDS.FIELD_ENTERPRISE_NAME]);
                    beforeContent.AppendFormat("工艺流程:{0};", dr[POR_ROUTE_ROUTE_VER_FIELDS.FIELD_ROUTE_NAME]);
                    beforeContent.AppendFormat("工序:{0};", dr[POR_ROUTE_STEP_FIELDS.FIELD_ROUTE_STEP_NAME]);
                }
                drComment[WIP_COMMENT_FIELDS.FIELDS_BEFORE_CONTENT] = beforeContent;
                drComment[WIP_COMMENT_FIELDS.FIELDS_AFTER_CONTENT]  = afterContent;
            }
            DataTable dtMaindata = CommonUtils.ParseToDataTable(htMaindata);

            dtMaindata.TableName = TRANS_TABLES.TABLE_MAIN_DATA;
            dsParams.Tables.Add(dtMaindata);
            dsParams.Tables.Add(dtTransaction);
            dsParams.Tables.Add(dtComment);
            //执行调整批次。
            this._entity.LotAdjust(dsParams);
            if (!string.IsNullOrEmpty(this._entity.ErrorMsg))
            {
                MessageService.ShowError(this._entity.ErrorMsg);
            }
            else
            {
                //this.tsbCancle_Click(sender, e);
                MessageService.ShowMessage("保存成功");
                WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.CloseWindow(false);
                //重新打开批次创建视图。
                LotOperationViewContent view = new LotOperationViewContent(this._model.OperationType);
                WorkbenchSingleton.Workbench.ShowView(view);
            }
            dsParams.Tables.Clear();
            dtTransaction = null;
            dtComment     = null;
            dsParams      = null;
        }
示例#15
0
        /// <summary>
        /// 确认按钮事件方法。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsbOK_Click(object sender, EventArgs e)
        {
            if (this.gvList.State == GridState.Editing && this.gvList.IsEditorFocused && this.gvList.EditingValueModified)
            {
                this.gvList.SetFocusedRowCellValue(this.gvList.FocusedColumn, this.gvList.EditingValue);
            }
            this.gvList.UpdateCurrentRow();
            //退料原因信息。
            DataTable dtList = this.gcList.DataSource as DataTable;

            if (dtList == null || dtList.Rows.Count < 1)
            {
                MessageService.ShowMessage("退料原因列表中至少必须有一条记录。", "提示");
                return;
            }
            //退料工序必须全部输入
            List <DataRow> lst = (from item in dtList.AsEnumerable()
                                  where string.IsNullOrEmpty(Convert.ToString(item[WIP_RETURN_MAT_FIELDS.FIELD_STEP_KEY]))
                                  select item).ToList <DataRow>();

            //如果不是组件补片批次且没有输入退料工序,则给出提示。
            if (lst.Count() > 0 && this._lotType != "L")
            {
                MessageService.ShowMessage("非组件补片批次,退料原因列表中的【退料工序】必须输入。", "提示");
                this.gvList.FocusedColumn    = this.gclStep;
                this.gvList.FocusedRowHandle = dtList.Rows.IndexOf(lst[0]);
                this.gvList.ShowEditor();
                return;
            }
            //退料原因必须全部输入
            lst = (from item in dtList.AsEnumerable()
                   where string.IsNullOrEmpty(Convert.ToString(item[WIP_RETURN_MAT_FIELDS.FIELD_REASON_CODE_KEY]))
                   select item).ToList <DataRow>();
            if (lst.Count() > 0)
            {
                MessageService.ShowMessage("退料原因列表中的【原因名称】必须输入。", "提示");
                this.gvList.FocusedColumn    = this.gclReasonCode;
                this.gvList.FocusedRowHandle = dtList.Rows.IndexOf(lst[0]);
                this.gvList.ShowEditor();
                return;
            }
            //退料原因中的数量必须输入值且大于0
            lst = (from item in dtList.AsEnumerable()
                   where string.IsNullOrEmpty(Convert.ToString(item[WIP_RETURN_MAT_FIELDS.FIELD_RETURN_QUANTITY]).Trim()) ||
                   Convert.ToInt32(item[WIP_RETURN_MAT_FIELDS.FIELD_RETURN_QUANTITY]) <= 0
                   select item).ToList <DataRow>();
            if (lst.Count() > 0)
            {
                MessageService.ShowMessage("数量必须输入且大于0。", "提示");
                this.gvList.FocusedColumn    = this.gclQty;
                this.gvList.FocusedRowHandle = dtList.Rows.IndexOf(lst[0]);
                this.gvList.ShowEditor();
                return;
            }
            //获取当前操作的批次信息
            if (_dsLotInfo == null)
            {
                LotQueryEntity queryEntity = new LotQueryEntity();
                _dsLotInfo = queryEntity.GetLotInfo(this._model.LotNumber);
                if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
                {
                    MessageService.ShowError(queryEntity.ErrorMsg);
                    _dsLotInfo = null;
                    return;
                }
            }
            if (_dsLotInfo.Tables[0].Rows.Count < 1)
            {
                MessageService.ShowMessage(string.Format("获取【{0}】信息失败,请重试。", this._model.LotNumber), "提示");
                _dsLotInfo = null;
                return;
            }
            DataRow drLotInfo = _dsLotInfo.Tables[0].Rows[0];
            string  lotKey    = Convert.ToString(drLotInfo[POR_LOT_FIELDS.FIELD_LOT_KEY]);
            double  qty       = Convert.ToDouble(this.teQty.Text);
            //退料数量总和不能超过当前电池片数量
            double returnQty = dtList.AsEnumerable().Sum(dr => dr[WIP_RETURN_MAT_FIELDS.FIELD_RETURN_QUANTITY] == DBNull.Value ? 0: Convert.ToDouble(dr[WIP_RETURN_MAT_FIELDS.FIELD_RETURN_QUANTITY]));
            double leftQty   = qty - returnQty;

            if (leftQty < 0)
            {
                MessageService.ShowMessage("电池片退料数量不能超过当前电池片数量。", "提示");
                return;
            }
            string lineKey        = Convert.ToString(drLotInfo[POR_LOT_FIELDS.FIELD_CUR_PRODUCTION_LINE_KEY]);
            string lineName       = Convert.ToString(drLotInfo[POR_LOT_FIELDS.FIELD_LINE_NAME]);
            string workOrderKey   = Convert.ToString(drLotInfo[POR_LOT_FIELDS.FIELD_WORK_ORDER_KEY]);
            string enterpriseKey  = Convert.ToString(drLotInfo[POR_LOT_FIELDS.FIELD_ROUTE_ENTERPRISE_VER_KEY]);
            string enterpriseName = this.teEnterpriseName.Text;
            string routeKey       = Convert.ToString(drLotInfo[POR_LOT_FIELDS.FIELD_CUR_ROUTE_VER_KEY]);
            string routeName      = this.teRouteName.Text;
            string stepKey        = Convert.ToString(drLotInfo[POR_LOT_FIELDS.FIELD_CUR_STEP_VER_KEY]);
            int    stateFlag      = Convert.ToInt32(drLotInfo[POR_LOT_FIELDS.FIELD_STATE_FLAG]);
            int    reworkFlag     = Convert.ToInt32(drLotInfo[POR_LOT_FIELDS.FIELD_IS_REWORKED]);
            string equipmentKey   = Convert.ToString(drLotInfo[EMS_EQUIPMENTS_FIELDS.FIELD_EQUIPMENT_KEY]);
            string edcInsKey      = Convert.ToString(drLotInfo[POR_LOT_FIELDS.FIELD_EDC_INS_KEY]);
            string stepName       = this.teStepName.Text;
            string remark         = this.teRemark.Text;
            string shiftName      = this._model.ShiftName;
            string shiftKey       = string.Empty;
            //Shift shiftEntity=new Shift();
            //string shiftKey = shiftEntity.IsShiftValueExists(shiftName);//班次主键。
            ////获取班次主键失败。
            //if (!string.IsNullOrEmpty(shiftEntity.ErrorMsg))
            //{
            //    MessageService.ShowError(shiftEntity.ErrorMsg);
            //    return;
            //}
            ////没有排班。
            //if (string.IsNullOrEmpty(shiftKey))
            //{
            //    MessageService.ShowMessage("请先在系统中进行排班。", "提示");
            //    return;
            //}
            string oprComputer = PropertyService.Get(PROPERTY_FIELDS.COMPUTER_NAME);
            string timezone    = PropertyService.Get(PROPERTY_FIELDS.TIMEZONE);

            DataSet dsParams = new DataSet();
            //组织退料数据。
            Hashtable htTransaction = new Hashtable();

            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_PIECE_KEY, lotKey);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_ACTIVITY, this._activity);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_QUANTITY_IN, qty);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_QUANTITY_OUT, leftQty);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_ENTERPRISE_KEY, enterpriseKey);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_ENTERPRISE_NAME, enterpriseName);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_ROUTE_KEY, routeKey);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_ROUTE_NAME, routeName);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_STEP_KEY, stepKey);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_STEP_NAME, stepName);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_WORK_ORDER_KEY, workOrderKey);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_SHIFT_KEY, shiftKey);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_SHIFT_NAME, shiftName);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_STATE_FLAG, stateFlag);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_REWORK_FLAG, reworkFlag);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_OPERATOR, this._model.UserName);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_OPR_COMPUTER, oprComputer);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_LINE_KEY, lineKey);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_OPR_LINE, lineName);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_OPR_LINE_PRE, lineName);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_EDC_INS_KEY, edcInsKey);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_EQUIPMENT_KEY, equipmentKey);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_ACTIVITY_COMMENT, remark);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_EDITOR, this._model.UserName);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_EDIT_TIME, null);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_EDIT_TIMEZONE_KEY, timezone);
            htTransaction.Add(WIP_TRANSACTION_FIELDS.FIELD_TIME_STAMP, null);
            DataTable dtTransaction = CommonUtils.ParseToDataTable(htTransaction);

            dtTransaction.TableName = WIP_TRANSACTION_FIELDS.DATABASE_TABLE_NAME;
            dsParams.Tables.Add(dtTransaction);
            //组织退料原因数据
            DataTable dtReturn = dtList.Copy();

            dtReturn.TableName = WIP_RETURN_MAT_FIELDS.DATABASE_TABLE_NAME;
            foreach (DataRow dr in dtReturn.Rows)
            {
                dr[WIP_RETURN_MAT_FIELDS.FIELD_EDITOR]        = this._model.UserName;
                dr[WIP_RETURN_MAT_FIELDS.FIELD_EDIT_TIME]     = DBNull.Value;
                dr[WIP_RETURN_MAT_FIELDS.FIELD_EDIT_TIMEZONE] = timezone;
            }
            dsParams.Tables.Add(dtReturn);
            //组织其他附加参数数据
            Hashtable htMaindata = new Hashtable();

            htMaindata.Add(COMMON_FIELDS.FIELD_COMMON_EDIT_TIME, this._model.LotEditTime);
            DataTable dtParams = CommonUtils.ParseToDataTable(htMaindata);

            dtParams.TableName = TRANS_TABLES.TABLE_PARAM;
            dsParams.Tables.Add(dtParams);
            //执行退料。
            this._entity.LotReturnMaterial(dsParams);
            if (!string.IsNullOrEmpty(this._entity.ErrorMsg))
            {
                MessageService.ShowError(this._entity.ErrorMsg);
            }
            else
            {
                //this.tsbClose_Click(sender, e);
                MessageService.ShowMessage("保存成功");
                WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.CloseWindow(false);
                //重新打开批次创建视图。
                LotOperationViewContent view = new LotOperationViewContent(this._model.OperationType);
                WorkbenchSingleton.Workbench.ShowView(view);
            }
            dsParams.Tables.Clear();
            dtTransaction = null;
            dtReturn      = null;
            dtParams      = null;
            dsParams      = null;
        }
示例#16
0
        /// <summary>
        /// 添加待返工的批次信息。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            DataTable dtList    = this.gcLotList.DataSource as DataTable;
            string    lotNumber = this.beLotNumber.Text.ToUpper().Trim();

            if (string.IsNullOrEmpty(lotNumber))
            {
                MessageService.ShowMessage("请输入序列号。", "提示");
                this.beLotNumber.Select();
                return;
            }
            if (dtList == null)
            {
                MessageService.ShowMessage(string.Format("【{0}】在列表中已存在,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            int count = dtList.AsEnumerable()
                        .Count(dr => Convert.ToString(dr[POR_LOT_FIELDS.FIELD_LOT_NUMBER]) == lotNumber);

            if (count > 0)
            {
                MessageService.ShowMessage(string.Format("【{0}】在列表中已存在,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            LotQueryEntity queryEntity = new LotQueryEntity();
            DataSet        dsReturn    = queryEntity.GetLotInfo(lotNumber);

            if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
            {
                MessageService.ShowError(queryEntity.ErrorMsg);
                dsReturn = null;
                this.beLotNumber.SelectAll();
                return;
            }
            if (dsReturn.Tables[0].Rows.Count < 1)
            {
                MessageService.ShowMessage(string.Format("获取【{0}】信息失败,请检查。", lotNumber));
                dsReturn = null;
                this.beLotNumber.SelectAll();
                return;
            }
            //判断批次号在指定车间中是否存在。
            string currentRoomKey = Convert.ToString(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_FACTORYROOM_KEY]);

            if (this._model.RoomKey != currentRoomKey)
            {
                MessageService.ShowMessage(string.Format("【{0}】在当前车间中不存在,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            //判断批次是否被锁定
            int holdFlag = Convert.ToInt32(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_HOLD_FLAG]);

            if (holdFlag == 0)
            {
                MessageService.ShowMessage(string.Format("【{0}】未暂停,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            //判断批次是否被删除
            int deleteFlag = Convert.ToInt32(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_DELETED_TERM_FLAG]);

            if (deleteFlag == 1)
            {
                MessageService.ShowMessage(string.Format("【{0}】已结束,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            //判断批次是否已结束
            if (deleteFlag == 2)
            {
                MessageService.ShowMessage(string.Format("【{0}】已删除,请确认。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            //已包装,出托后才能返修。
            string palletNo = Convert.ToString(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_PALLET_NO]);

            if (!string.IsNullOrEmpty(palletNo))
            {
                MessageService.ShowMessage(string.Format("【{0}】已包装,出托后才能返修。", lotNumber), "提示");
                this.beLotNumber.SelectAll();
                return;
            }
            dsReturn.Tables[0].TableName = POR_LOT_FIELDS.DATABASE_TABLE_NAME;
            //获取暂停信息。
            DataSet dsHoldInfo = this._entity.GetLotHoldInfo(lotNumber);

            if (!string.IsNullOrEmpty(this._entity.ErrorMsg))
            {
                MessageService.ShowError(this._entity.ErrorMsg);
                dsHoldInfo = null;
                return;
            }
            if (dsHoldInfo.Tables[0].Rows.Count < 1)
            {
                MessageService.ShowMessage(string.Format("获取【{0}】暂停信息失败,请重试。", lotNumber));
                dsHoldInfo = null;
                return;
            }
            dsHoldInfo.Tables[0].TableName = WIP_HOLD_RELEASE_FIELDS.DATABASE_TABLE_NAME;
            //添加用于存储密码的临时列
            dsHoldInfo.Tables[0].Columns.Add(TEMP_HOLD_LIST_RELEASE_PASSWORD);

            //添加批次信息。
            dtList.Merge(dsReturn.Tables[0]);
            //添加暂停信息。
            DataTable dtHoldList = this.gcHoldInfoList.DataSource as DataTable;

            dtHoldList.Merge(dsHoldInfo.Tables[0]);
            this.beLotNumber.SelectAll();
        }
示例#17
0
        /// <summary>
        /// 查询按钮Click事件。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btSearch_Click(object sender, EventArgs e)
        {
            //工单号必须输入。
            //if (string.IsNullOrEmpty(this.teWorkOrder.Text))
            //{
            //    MessageService.ShowWarning("${res:FanHai.Hemera.Addins.Sorting.Message.WorkOrderIsNull}");
            //    this.teWorkOrder.Focus();
            //    return;
            //}

            //开始时间大于结束时间。
            if (!string.IsNullOrEmpty(deStartTime.Text) && !string.IsNullOrEmpty(deEndTime.Text) &&
                deStartTime.DateTime > deEndTime.DateTime)
            {
                MessageService.ShowWarning("结束时间不能小于开始时间。");
                this.deEndTime.Focus();
                return;
            }

            Hashtable hashTable = new Hashtable();

            if (teWorkOrder.Text != string.Empty)
            {
                hashTable.Add(POR_WORK_ORDER_FIELDS.FIELD_ORDER_NUMBER, teWorkOrder.Text);
            }
            if (txtLotNumber.Text != string.Empty)
            {
                hashTable.Add(POR_LOT_FIELDS.FIELD_LOT_NUMBER, txtLotNumber.Text.ToUpper().Trim());
            }
            if (lueType.Text != string.Empty)
            {
                hashTable.Add(POR_LOT_FIELDS.FIELD_IS_PRINT, lueType.EditValue.ToString());
            }
            if (lueLotType.Text.Trim().Length > 0)
            {
                hashTable.Add(POR_LOT_FIELDS.FIELD_IS_REWORKED, lueLotType.EditValue.ToString());
            }
            if (!string.IsNullOrEmpty(deStartTime.Text))
            {
                hashTable.Add("CREATE_TIME_START", deStartTime.Text);
            }
            if (!string.IsNullOrEmpty(deEndTime.Text))
            {
                hashTable.Add("CREATE_TIME_END", deEndTime.Text);
            }

            DataTable      dataTable   = FanHai.Hemera.Share.Common.CommonUtils.ParseToDataTable(hashTable);
            LotQueryEntity queryEntity = new LotQueryEntity();
            DataSet        dsLotInfo   = queryEntity.GetLotNumberForPrint(dataTable);

            if (string.IsNullOrEmpty(queryEntity.ErrorMsg))
            {
                if (dsLotInfo != null && dsLotInfo.Tables.Count > 0)
                {
                    gcLotInfo.DataSource = dsLotInfo.Tables[0];
                }
            }
            else
            {
                MessageService.ShowError(queryEntity.ErrorMsg);
            }
        }
示例#18
0
        private string MESSAGEBOX_CAPTION = StringParser.Parse("${res:Global.SystemInfo}"); //提示

        /// <summary>
        /// 新增批次操作记录。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable dtList    = this.gcExchangeLine.DataSource as DataTable;
                string    lotNumber = this.teLotNumber.Text.ToUpper().Trim();
                if (string.IsNullOrEmpty(lotNumber))
                {
                    MessageService.ShowMessage(StringParser.Parse("${res:FanHai.Hemera.Addins.WIP.LotUndoCtrl.Msg001}"), MESSAGEBOX_CAPTION);//请输入序列号
                    //MessageService.ShowMessage("请输入序列号。", "提示");
                    this.teLotNumber.Select();
                    return;
                }

                int count = dtList.AsEnumerable()
                            .Count(dr => Convert.ToString(dr[POR_LOT_FIELDS.FIELD_LOT_NUMBER]) == lotNumber);
                if (count > 0)
                {
                    MessageService.ShowMessage(string.Format("【{0}】在列表中已存在,请确认。", lotNumber), "提示");
                    this.teLotNumber.SelectAll();
                    return;
                }
                LotQueryEntity queryEntity = new LotQueryEntity();
                DataSet        dsReturn    = queryEntity.GetLotInfo(lotNumber);
                if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
                {
                    MessageService.ShowError(queryEntity.ErrorMsg);
                    dsReturn = null;
                    this.teLotNumber.SelectAll();
                    return;
                }
                if (dsReturn.Tables[0].Rows.Count < 1)
                {
                    MessageService.ShowMessage(string.Format("获取【{0}】信息失败,请检查。", lotNumber));
                    dsReturn = null;
                    this.teLotNumber.SelectAll();
                    return;
                }
                //判断批次号在指定车间中是否存在。
                string currentRoomKey = Convert.ToString(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_FACTORYROOM_KEY]);
                string roomKey        = lueFactoryRoom.EditValue.ToString();
                if (roomKey != currentRoomKey)
                {
                    MessageService.ShowMessage(string.Format("【{0}】在当前车间中不存在,请确认。", lotNumber), "提示");
                    this.teLotNumber.SelectAll();
                    return;
                }
                //判断批次是否被锁定
                int holdFlag = Convert.ToInt32(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_HOLD_FLAG]);
                if (holdFlag == 1)
                {
                    MessageService.ShowMessage(string.Format("【{0}】已被暂停,请确认。", lotNumber), "提示");
                    this.teLotNumber.SelectAll();
                    return;
                }
                //判断批次是否被删除
                int deleteFlag = Convert.ToInt32(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_DELETED_TERM_FLAG]);
                if (deleteFlag == 1)
                {
                    MessageService.ShowMessage(string.Format("【{0}】已结束,请确认。", lotNumber), "提示");
                    this.teLotNumber.SelectAll();
                    return;
                }
                //判断批次是否已结束
                if (deleteFlag == 2)
                {
                    MessageService.ShowMessage(string.Format("【{0}】已删除,请确认。", lotNumber), "提示");
                    this.teLotNumber.SelectAll();
                    return;
                }
                //判断组件状态
                int curState = int.Parse(dsReturn.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_STATE_FLAG].ToString());
                if (curState > 10)
                {
                    MessageService.ShowMessage(string.Format("【{0}】已完工,请确认。", lotNumber), "提示");
                    return;
                }
                //判断用户是否有组件所在工序权限
                string curOperationName = Convert.ToString(dsReturn.Tables[0].Rows[0][POR_ROUTE_STEP_FIELDS.FIELD_ROUTE_STEP_NAME]);
                string operations       = PropertyService.Get(PROPERTY_FIELDS.OPERATIONS);//获取有权限的所有工序

                if ((operations + ",").IndexOf(curOperationName + ",") == -1)
                {
                    MessageService.ShowMessage(string.Format("您没有权限调整工序[{0}]组件线别的操作。", curOperationName), "提示");
                    return;
                }

                if (dtList == null)
                {
                    this.gcExchangeLine.DataSource = dsReturn.Tables[0];
                }
                else
                {
                    if (dtList.Rows.Count >= 100)
                    {
                        MessageService.ShowMessage(StringParser.Parse("${res:FanHai.Hemera.Addins.WIP.LotOperationExchangeLine.Msg001}"), MESSAGEBOX_CAPTION);//一次调整录数不能超过100条
                        //MessageService.ShowMessage("一次调整录数不能超过100条。", "提示");
                        return;
                    }
                    dsReturn.Tables[0].TableName = POR_LOT_FIELDS.DATABASE_TABLE_NAME;
                    dtList.Merge(dsReturn.Tables[0]);
                    this.teLotNumber.SelectAll();
                }
            }
            finally
            {
                this.teLotNumber.Select();
                this.teLotNumber.SelectAll();
            }
        }
示例#19
0
        /// <summary>
        /// 新增按钮Click事件。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            string lotNo = this.lueLotNo.Text;

            if (string.IsNullOrEmpty(lotNo))
            {
                this.lueLotNo.Select();
                return;
            }

            if (dtLots != null && dtLots.Select(string.Format("LOT_NUMBER='{0}'", lotNo)).Length > 0)
            {
                MessageService.ShowMessage("该序列号已经存在于列表中。", "提示");
                this.lueLotNo.SelectAll();
                return;
            }
            if (dtLots != null && dtLots.Rows.Count >= 99)
            {
                MessageService.ShowMessage("预设暂停的数量不能超过99个。", "提示");
                this.lueLotNo.SelectAll();
                return;
            }
            LotQueryEntity entity = new LotQueryEntity();
            DataSet        ds     = entity.GetLotInfo(lotNo);

            if (string.IsNullOrEmpty(entity.ErrorMsg))
            {
                if (ds.Tables[0].Rows.Count <= 0)
                {
                    MessageService.ShowMessage("该序列号不存在。", "提示");
                    this.lueLotNo.SelectAll();
                    return;
                }
                if (!string.IsNullOrEmpty(_factoryRoomKey))
                {
                    string curFactoryRoomKey = Convert.ToString(ds.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_FACTORYROOM_KEY]);
                    if (_factoryRoomKey != curFactoryRoomKey)
                    {
                        MessageService.ShowMessage("该批号在当前车间中不存在。");
                        this.lueLotNo.SelectAll();
                        return;
                    }
                }
                int    stateFlag       = Convert.ToInt32(ds.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_STATE_FLAG]);
                int    deletedTermFlag = Convert.ToInt32(ds.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_DELETED_TERM_FLAG]);
                string routeKey        = Convert.ToString(ds.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_CUR_ROUTE_VER_KEY]);
                string enterpriseKey   = Convert.ToString(ds.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_ROUTE_ENTERPRISE_VER_KEY]);

                if (!string.IsNullOrEmpty(_routeKey) && _routeKey != routeKey)
                {
                    MessageService.ShowMessage(string.Format("该批号不属于【{0}】工艺流程。", this.txtRoute.Text));
                    this.lueLotNo.SelectAll();
                    return;
                }
                if (!string.IsNullOrEmpty(_enterpriseKey) && _enterpriseKey != enterpriseKey)
                {
                    MessageService.ShowMessage(string.Format("该批号不属于【{0}】工艺流程组。", this.txtEnterprise.Text));
                    this.lueLotNo.SelectAll();
                    return;
                }
                if (stateFlag >= 10)
                {
                    MessageService.ShowMessage("该序列号已完成。", "提示");
                    this.lueLotNo.SelectAll();
                    return;
                }
                if (deletedTermFlag != 0)
                {
                    MessageService.ShowMessage("该序列号已删除或已终止。", "提示");
                    this.lueLotNo.SelectAll();
                    return;
                }
                //第一次增加预设暂停的批次。
                if (dtLots == null || dtLots.Rows.Count == 0)
                {
                    dtLots                  = ds.Tables[0].Copy();
                    this._routeKey          = routeKey;
                    this._enterpriseKey     = enterpriseKey;
                    this.txtEnterprise.Text = Convert.ToString(dtLots.Rows[0][POR_ROUTE_ENTERPRISE_VER_FIELDS.FIELD_ENTERPRISE_NAME]);
                    this.txtRoute.Text      = Convert.ToString(dtLots.Rows[0][POR_ROUTE_ROUTE_VER_FIELDS.FIELD_ROUTE_NAME]);
                }
                else
                {
                    dtLots.Merge(ds.Tables[0], true, MissingSchemaAction.Add);
                }
                this.gcLots.DataSource  = dtLots;
                this.lueLotNo.EditValue = string.Empty;
            }
            else
            {
                MessageService.ShowMessage(entity.ErrorMsg, "提示");
                this.lueLotNo.SelectAll();
            }
            this.lueLotNo.Select();
        }