Esempio n. 1
0
 /// <summary>
 /// 检查权限
 /// </summary>
 /// <param name="resrouce"></param>
 /// <param name="userCode"></param>
 /// <returns></returns>
 private string CheckRight(string resrouce, string userCode)
 {
     try
     {
         BenQGuru.eMES.Security.SecurityFacade sFacade = new BenQGuru.eMES.Security.SecurityFacade(this._domainDataProvider);
         return(sFacade.CheckResourceRight(userCode, resrouce) == true? "OK":"没有权限");
     }
     catch (Exception ex)
     {
         return(ex.Message);
     }
     finally
     {
         ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)_domainDataProvider).PersistBroker.CloseConnection();
     }
 }
Esempio n. 2
0
        private bool CheckResourceRight()
        {
            if (!this.IsCheckRights)
            {
                return(true);
            }

            this.txtResource.Value = this.txtResource.Value.Trim().ToUpper();
            this.CheckResource     = this.txtResource.Value.Trim().ToUpper();
            if (this.CheckResource == "")
            {
                this.CheckResource = Service.ApplicationService.Current().ResourceCode;
            }
            // 检查资源的用户权限
            if (this.CheckResource != Service.ApplicationService.Current().ResourceCode)
            {
                bool bIsAdmin = false;
                if (Service.ApplicationService.Current().LoginInfo.UserGroups != null)
                {
                    foreach (object o in Service.ApplicationService.Current().LoginInfo.UserGroups)
                    {
                        if (((UserGroup)o).UserGroupType == "ADMIN")
                        {
                            bIsAdmin = true;
                            break;
                        }
                    }
                }
                if (!bIsAdmin)
                {
                    Security.SecurityFacade securityFacade = new BenQGuru.eMES.Security.SecurityFacade(this.DataProvider);
                    if (!securityFacade.CheckResourceRight(Service.ApplicationService.Current().LoginInfo.UserCode, this.CheckResource))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
        protected void cmdConfirm_ServerClick(object sender, System.EventArgs e)
        {
            try
            {
                _securityFacade = new BenQGuru.eMES.Security.SecurityFacade(base.DataProvider);
                //this.PageValidate();


                /*
                 * // Removed by Icyer 2007/08/27  取出密码复杂度检查
                 *              int alive_Upper = 0;
                 *              int alive_Lower = 0;
                 *              int alive_Number = 0;
                 *              int alive_Other = 0;
                 *
                 *              foreach (char letter in this.txtNewPassword.Value.ToCharArray())
                 *              {
                 *                      if(letter >= 'A' && letter <= 'Z')
                 *                      {
                 *                              alive_Upper = 1;
                 *                      }
                 *                      else if(letter >= 'a' && letter <= 'z')
                 *                      {
                 *                              alive_Lower = 1;
                 *                      }
                 *                      else if(letter >= '0' && letter <= '9')
                 *                      {
                 *                              alive_Number = 1;
                 *                      }
                 *                              //if(letter < '0' && letter > '9' && letter < 'a' && letter > 'b' && letter < 'A' && letter > 'Z')
                 *                      else
                 *                      {
                 *                              alive_Other = 1;
                 *                      }
                 *              }
                 */
                //密码复杂度管控 joe
                if (this.PageValidate() /*this.txtNewPassword.Value.Length >= 7 && alive_Upper == 1 && alive_Lower == 1 && alive_Number == 1 && alive_Other == 1*/)
                {
                    if (!chbForgetPassword.Checked)
                    {
                        this._securityFacade.ModifyPassword(this.txtUserCode.Text.ToUpper(), this.txtOriginPassword.Value, this.txtNewPassword.Value);
                        //joe 新用户更改密码以后正常登陆
                        ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.OpenConnection();
                        DataProvider.BeginTransaction();
                        try
                        {
                            string pwmodify = "update tbluser set userstat ='O' where usercode ='" + txtUserCode.Text.Trim().ToUpper() + "'";
                            ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.Execute(pwmodify);
                            DataProvider.CommitTransaction();
                        }
                        catch
                        {
                            DataProvider.RollbackTransaction();
                            return;
                        }
                        finally
                        {
                            ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.CloseConnection();
                        }
                    }

                    else
                    {
                        this._securityFacade.AdminModifyPassword(this.txtAdminUserCode.Text.ToUpper(), this.txtAdminPassword.Value, this.txtUserCode.Text.ToUpper(), this.txtNewPassword.Value.ToUpper());
                    }
                    WebInfoPublish.Publish(this, "$Message_Modify_Password_Successful", this.languageComponent1);
                }
                else
                {
                    WebInfoPublish.Publish(this, "$Error_PassWord_Not_Complex", this.languageComponent1);
                    return;
                }
            }

            catch (Exception ex)
            {
                string msg = this.languageComponent1.GetString(ex.Message);
                if (msg == "" || msg == null)
                {
                    msg = ex.Message;
                }
                WebInfoPublish.Publish(this, msg, this.languageComponent1);

                return;
            }
        }
Esempio n. 4
0
        //对批通过和批判退的处理
        private void LotOPerate(string lotStatus, bool isForce)
        {
            Messages msg      = new Messages();
            bool     isFrozen = false;

            string        oqcLotNo      = FormatHelper.PKCapitalFormat(FormatHelper.CleanString(this.ucLabelEditLotNo.Value));
            ActionFactory actionFactory = new ActionFactory(this.DataProvider);
            OQCFacade     oqcFacade     = new OQCFacade(this.DataProvider);

            //获取OQCLot以及逻辑检查
            object obj = null;

            msg.AddMessages(GetOQCLotToOperate(oqcFacade, oqcLotNo, out obj));
            if (!msg.IsSuccess())
            {
                ApplicationRun.GetInfoForm().Add(msg);
                this.ucLabelEditLotNo.TextFocus(false, true);
                return;
            }

            //其他检查
            if (lotStatus == OQCLotStatus.OQCLotStatus_Reject)
            {
                if (this.ucLabelEditStatusMemo.Value.Trim().Length == 0)
                {
                    msg.Add(new UserControl.Message(MessageType.Error, "$CS_PleaseInputMemo"));
                    ApplicationRun.GetInfoForm().Add(msg);
                    this.ucLabelEditStatusMemo.TextFocus(false, true);
                    return;
                }
            }
            string msgInfo = String.Empty;

            if (lotStatus == OQCLotStatus.OQCLotStatus_Pass)
            {
                if (isForce)
                {
                    msgInfo = UserControl.MutiLanguages.ParserMessage("$CS_CONFIRM_ForcePassLot");
                }
                else
                {
                    msgInfo = UserControl.MutiLanguages.ParserMessage("$CS_CONFIRM_LOT_PASS");
                }
            }
            else
            {
                if (isForce)
                {
                    msgInfo = UserControl.MutiLanguages.ParserMessage("$CS_CONFIRM_ForceRejectLot");
                }
                else
                {
                    msgInfo = UserControl.MutiLanguages.ParserMessage("$CS_CONFIRM_LOT_RJECT");
                }
            }

            frmDialog dialog = new frmDialog();

            dialog.Text          = this.Text;
            dialog.DialogMessage = msgInfo;

            if (DialogResult.OK != dialog.ShowDialog(this))
            {
                return;
            }

            //add by roger xue  2008/10/27
            OQCLot objFrozen = obj as OQCLot;

            if (objFrozen.FrozenStatus == FrozenStatus.STATUS_FRONZEN)
            {
                isFrozen = true;
                FFrozenReason frozenReason = new FFrozenReason();
                string        reason       = this.ucLabelEditStatusMemo.Value.Trim();
                if (reason.Length == 0)
                {
                    if (lotStatus == OQCLotStatus.OQCLotStatus_Reject)
                    {
                        reason = "批判退";
                    }
                    else
                    {
                        reason = "批判过";
                    }
                }
                frozenReason.Reason = reason;
                frozenReason.Event += new ParentChildRelateEventHandler <ParentChildRelateEventArgs <string> >(Form_Event);
                if (DialogResult.Cancel == frozenReason.ShowDialog(this))
                {
                    return;
                }
            }

            //end add

            // 输入用户名、密码确认 add by alex.hu 2010/11/19
            if (isForce)
            {
                string       strMsg       = UserControl.MutiLanguages.ParserString("$SMT_UnLoadAll_Confirm_UserCode");
                FDialogInput finput       = new FDialogInput(strMsg);
                DialogResult dialogResult = finput.ShowDialog();
                if (dialogResult != DialogResult.OK)
                {
                    return;
                }
                string strUserCode = finput.InputText.Trim().ToUpper();
                strMsg = UserControl.MutiLanguages.ParserString("$Please_Input_Password");
                finput = new FDialogInput(strMsg);
                finput.InputPasswordChar = '*';
                dialogResult             = finput.ShowDialog();
                if (dialogResult != DialogResult.OK)
                {
                    return;
                }
                string strPassword = finput.InputText.Trim().ToUpper();
                finput.Close();
                BenQGuru.eMES.Security.SecurityFacade security = new BenQGuru.eMES.Security.SecurityFacade(this.DataProvider);
                try
                {
                    object objSec = security.PasswordCheck(strUserCode, strPassword);

                    if (lotStatus == OQCLotStatus.OQCLotStatus_Pass && !security.IsBelongToAdminGroup(strUserCode) && !security.CheckAccessRight(strUserCode, "OQCFORCEPASS"))
                    {
                        ApplicationRun.GetInfoForm().Add(new UserControl.Message(UserControl.MessageType.Error, "$Error_No_Access_Right"));
                        return;
                    }

                    if (lotStatus == OQCLotStatus.OQCLotStatus_Reject && !security.IsBelongToAdminGroup(strUserCode) && !security.CheckAccessRight(strUserCode, "OQCFORCEREJECT"))
                    {
                        ApplicationRun.GetInfoForm().Add(new UserControl.Message(UserControl.MessageType.Error, "$Error_No_Access_Right"));
                        return;
                    }
                }
                catch (Exception ex)
                {
                    Messages msgErr = new Messages();
                    msgErr.Add(new UserControl.Message(ex));
                    ApplicationRun.GetInfoForm().Add(msgErr);
                    Application.DoEvents();
                    return;
                }
            }
            //end add

            //把lotcapacity更新成lotsise一样大小,防止此时有产品在产生工序进入批而产生批判定时整个批无法全部完工的并发问题 by hiro
            Decimal reallyLotCapacity = ((OQCLot)obj).LotCapacity;

            this.DataProvider.BeginTransaction();
            try
            {
                //lock该lot,防止同时对该lot操作产生死锁
                oqcFacade.LockOQCLotByLotNO(oqcLotNo);
                //end

                oqcFacade.UpdateOQCLotCapacity(((OQCLot)obj).LOTNO, ((OQCLot)obj).LotSize);

                this.DataProvider.CommitTransaction();
            }
            catch (Exception ex)
            {
                this.DataProvider.RollbackTransaction();
                msg.Add(new UserControl.Message(ex));
                ApplicationRun.GetInfoForm().Add(msg);
            }

            if (!msg.IsSuccess())
            {
                return;
            }
            //end add

            //缓解性能问题
            ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.AutoCloseConnection = false;
            ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.OpenConnection();
            DataProvider.BeginTransaction();
            try
            {
                //lock该lot,防止同时对该lot操作产生死锁
                oqcFacade.LockOQCLotByLotNO(oqcLotNo);

                //
                msg.AddMessages(GetOQCLotToOperate(oqcFacade, oqcLotNo, out obj));
                if (!msg.IsSuccess())
                {
                    return;
                }

                #region 业务逻辑
                ActionOnLineHelper actinOnlineHelper = new ActionOnLineHelper(this.DataProvider);

                object[] objs = (new ActionOQCHelper(this.DataProvider)).QueryCardOfLot(FormatHelper.PKCapitalFormat(oqcLotNo), OQCFacade.Lot_Sequence_Default);
                if (objs == null)
                {
                    msg.Add(new UserControl.Message(MessageType.Error, "$CS_LOT_NOT_EXIST"));
                    return;
                }

                // Added By Hi1/Venus.Feng on 20081111 for Hisense : 根据产生批的资源获取该资源对应的大线的最后一个工序的资源(取一个)
                //string rightResource = (new BaseModelFacade(this.DataProvider)).GetRightResourceForOQCOperate(objFrozen.ResourceCode,
                //            (objs[0] as Simulation).ItemCode, (objs[0] as Simulation).RouteCode);
                //if (string.IsNullOrEmpty(rightResource))
                //{
                //    msg.Add(new UserControl.Message(MessageType.Error, "$Error_NoBigLineFQCResource"));
                //    return;
                //}
                string rightResource = ApplicationService.Current().ResourceCode;
                // End Added

                //对批通过的处理
                if (lotStatus == OQCLotStatus.OQCLotStatus_Pass)
                {
                    IAction actionPass = actionFactory.CreateAction(ActionType.DataCollectAction_OQCPass);

                    OQCPASSEventArgs actionEventArgs = new OQCPASSEventArgs(ActionType.DataCollectAction_OQCPass, ((Domain.DataCollect.Simulation)objs[0]).RunningCard, ApplicationService.Current().
                                                                            UserCode, rightResource, oqcLotNo, null);

                    actionEventArgs.Lot         = obj;
                    actionEventArgs.CardOfLot   = objs;
                    actionEventArgs.IsForcePass = isForce;
                    actionEventArgs.Memo        = FormatHelper.CleanString(this.ucLabelEditStatusMemo.Value.Trim(), 100);

                    //frozen operate
                    actionEventArgs.IsUnFrozen     = isFrozen;
                    actionEventArgs.UnFrozenReason = this.frozenReason;

                    msg.AddMessages(actionPass.Execute(actionEventArgs));
                    if (msg.IsSuccess())
                    {
                        msg.Add(new UserControl.Message(MessageType.Success, "$CS_OQCPASSSUCCESS"));
                    }
                }

                //对批判退的处理
                if (lotStatus == OQCLotStatus.OQCLotStatus_Reject)
                {
                    IAction actionReject = actionFactory.CreateAction(ActionType.DataCollectAction_OQCReject);

                    OQCRejectEventArgs actionEventArgs = new OQCRejectEventArgs(ActionType.DataCollectAction_OQCReject, ((Domain.DataCollect.Simulation)objs[0]).RunningCard, ApplicationService.Current().
                                                                                UserCode, ApplicationService.Current().ResourceCode, oqcLotNo, null);

                    actionEventArgs.Lot                       = obj;
                    actionEventArgs.CardOfLot                 = objs;
                    actionEventArgs.IsForceReject             = isForce;
                    actionEventArgs.IsAutoGenerateReworkSheet = this.chkBoxAutoGenerate.Checked;
                    actionEventArgs.IsCreateNewLot            = this.checkBoxAutoLot.Checked;
                    actionEventArgs.Memo                      = FormatHelper.CleanString(this.ucLabelEditStatusMemo.Value.Trim(), 100);

                    //frozen operate
                    actionEventArgs.IsUnFrozen     = isFrozen;
                    actionEventArgs.UnFrozenReason = frozenReason;
                    actionEventArgs.rightResource  = rightResource;

                    msg.AddMessages(actionReject.Execute(actionEventArgs));

                    if (msg.IsSuccess())
                    {
                        msg.Add(new UserControl.Message(MessageType.Success, "$CS_OQCREJECTSUCCESS"));
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                this.DataProvider.RollbackTransaction();
                msg.Add(new UserControl.Message(ex));
            }
            finally
            {
                ApplicationRun.GetInfoForm().Add(msg);

                if (!msg.IsSuccess())
                {
                    this.DataProvider.RollbackTransaction();
                    this.DataProvider.BeginTransaction();
                }

                obj = oqcFacade.GetOQCLot(((OQCLot)obj).LOTNO, ((OQCLot)obj).LotSequence);
                if (obj != null)
                {
                    oqcFacade.UpdateOQCLotCapacity(((OQCLot)obj).LOTNO, reallyLotCapacity);
                }

                this.DataProvider.CommitTransaction();

                this.ucLabelEditLotNo.TextFocus(false, true);

                //缓解性能问题
                ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.CloseConnection();
                ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.AutoCloseConnection = false;
            }
        }