Example #1
0
        /// <summary>
        /// 根据瓶签号,生成所有信息
        /// </summary>
        /// <param name="labelNo">扫描到的瓶签号</param>
        /// <param name="chargeRtnValue">计费返回值0=计费失败;1=计费成功</param>
        /// <param name="chargeMsg">计费补充消息</param>
        private bool GetLabelResult(string labelNo, short chargeRtnValue, string chargeMsg, string employeeName, out MsgLabelResult msgLabelResult)
        {
            msgLabelResult = new MsgLabelResult();
            try
            {
                msgLabelResult.EmployeeName = employeeName;

                DataSet dsLableInfo = dbHelp.GetPIVAsDB(GET_LABELINFO + labelNo);
                if (dsLableInfo.Tables[0].Rows.Count > 0)
                {
                    msgLabelResult.WardName      = dsLableInfo.Tables[0].Rows[0]["WardName"].ToString().Trim();
                    msgLabelResult.PatientName   = dsLableInfo.Tables[0].Rows[0]["PatName"].ToString().Trim();
                    msgLabelResult.LabelNo       = labelNo;
                    msgLabelResult.ChargeResult  = chargeRtnValue;
                    msgLabelResult.ChargeMessage = chargeMsg;

                    msgLabelResult.Drugs = GetDrugRowAndMixMethod(dsLableInfo);
                }
                return(true);
            }
            catch (Exception ex)
            {
                InternalLogger.Log.Error("根据瓶签号生成结果出错:" + ex.Message);
            }
            return(false);
        }
Example #2
0
 /// <summary>
 /// 收到瓶签收据
 /// </summary>
 /// <returns></returns>
 public bool GetResultByLabelNo(string labelNo, out string result)
 {
     result = string.Empty;
     try
     {
         InternalLogger.Log.Info("收到瓶签号:" + labelNo);
         bool   rtn       = false;
         String labelData = String.Empty;
         if (IsLogionData(labelNo, out labelData)) //员工登录
         {
             InternalLogger.Log.Debug(labelNo + "被判断为登录信息,因7777开头且长度为22");
             MsgLoginResult msgLoginResult = null;
             rtn = HandleInOut(labelData, out msgLoginResult);//登录处理
             if (rtn && msgLoginResult != null)
             {
                 result = msgLoginResult.ToJson();
             }
         }
         else if (IsLabelNo(labelNo, out labelData))//只对今天和明天的瓶签计费;并校验瓶签长度和瓶签标识
         {
             InternalLogger.Log.Debug(labelNo + "被判断瓶签数据");
             MsgLabelResult msgLabelResult = null;
             rtn = HandleLabelNo(labelData, out msgLabelResult);
             if (rtn && msgLabelResult != null)
             {
                 result = msgLabelResult.ToJson();
             }
         }
         else
         {
             InternalLogger.Log.Warn(labelNo + "被判断为非法Moxa数据,不做处理也不显示");
             return(false); //跳出数据接收处理方法
         }
         return(rtn);       //登录成功与计费成功都返回rtn
     }
     catch (Exception ex)
     {
         InternalLogger.Log.Error("接收到Moxa数据,处理出错:" + ex.Message);
     }
     return(false);
 }
Example #3
0
        /// <summary>
        /// 处理单个瓶签
        /// 瓶签处理的主要目的是计费;计费成功就OK;
        /// 计费失败需将失败原因获取到;ChargeResult
        /// </summary>
        /// <param name="labelData">瓶签数据</param>
        private bool HandleLabelNo(string labelData, out MsgLabelResult msgLabelResult)
        {
            bool bGetLabelResult = false;

            msgLabelResult = new MsgLabelResult();
            string chargeMsg      = String.Empty; //调用计费接口,计费错误时返回的错误原因;
            string chargeRtnValue = "0";          //调用计费接口的返回值,默认0为计费失败;9未知,其他认为计费成功;

            try
            {
                if (currentEmployeeID != string.Empty)                             //非空就是由药师处于登录状态
                {
                    if (IsChecked(labelData))                                      //脱机表中存在,表示已扫描且计费成功
                    {
                        chargeMsg      = ChargeResult_Const.RESCAN_CHARGE_SUCCESS; //重复扫描,已成功计过费
                        chargeRtnValue = "1";                                      //重复扫描,认为计费成功,可配置
                    }
                    else
                    {
                        if (IsCharge)//根据配置判断是否计费
                        {
                            InternalLogger.Log.Debug("开始调用计费接口");
                            chargeRtnValue = charge.Charge(labelData, currentEmployeeID, out chargeMsg);
                            #region 测试
                            //chargeRtnValue = "1";
                            //chargeMsg = "计费成功";
                            #endregion
                        }
                        else
                        {
                            //配置文件中设设置,舱内核对时,不计费;认为成功,但追加日志记录
                            InternalLogger.Log.Warn("配置文件中设置,在舱内核对时,不计费;系统将此情况认为计费成功");
                            chargeMsg      = ChargeResult_Const.NOTCONFIG_SUCCESS;
                            chargeRtnValue = "1";//将结果设置为成功,UI操作在下面继续处理
                        }

                        InternalLogger.Log.Debug("计费接口的返回值:" + chargeRtnValue);
                        if (!chargeRtnValue.Trim().Equals("0"))//计费成功,更新值
                        {
                            UpdateIVStatusAndInsertPZ(currentEmployeeID, labelData);

                            //chargeMsg为接口中返回的值
                            chargeRtnValue = "1"; //将不等于0的情况,归类为等于1(计费成功)
                            AddTodt(labelData);   //标记是否已扫码且计费成功过
                        }
                    }
                }
                else
                {
                    chargeMsg = ChargeResult_Const.PHARMACIST_LOGOUT;                             //计费失败
                }
                InternalLogger.Log.Info(String.Format("瓶签号:{0},计费结果:{1}", labelData, chargeMsg)); //这句日志是重要日志,可以据此查询计费结果
            }
            catch (Exception ex)
            {
                InternalLogger.Log.Error("处理发送的单个瓶签时出错:" + ex.Message);
                chargeRtnValue = "0";//统一归类为失败
                chargeMsg      = ChargeResult_Const.LABELHANDLE_EXCEPTION;
            }
            finally
            {
                bGetLabelResult = GetLabelResult(labelData, short.Parse(chargeRtnValue), chargeMsg, currentEmployeeName, out msgLabelResult);
            }
            return((chargeRtnValue == "1") && bGetLabelResult); //计费成功且返回的信息也成功
        }