/// <summary>
        /// 生产工艺流程保存
        /// </summary>
        /// <returns>成功返回1 失败返回-1</returns>
        public override int SaveProcess()
        {
            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            Neusoft.HISFC.BizLogic.Pharmacy.Preparation pprManager = new Neusoft.HISFC.BizLogic.Pharmacy.Preparation();

            DateTime sysTime = pprManager.GetDateTimeFromSysDateTime();

            for (int i = 0; i < this.fpSemiAssay_Sheet1.Rows.Count; i++)
            {
                Neusoft.HISFC.Models.Preparation.Process p = this.GetProcessInstance(i);

                p.Oper.OperTime = sysTime;
                p.Oper.ID       = pprManager.Operator.ID;

                if (pprManager.SetProcess(p) == -1)
                {
                    Neusoft.FrameWork.Management.PublicTrans.RollBack();
                    MessageBox.Show("保存制剂工艺流程信息失败" + pprManager.Err);
                }
            }

            this.preparation.AssayQty = Neusoft.FrameWork.Function.NConvert.ToDecimal(this.numAssayNum.Text);

            if (base.SaveProcess(false) >= 1)
            {
                Neusoft.FrameWork.Management.PublicTrans.Commit();

                MessageBox.Show("工艺流程执行信息保存成功");

                this.PrintProcess();
            }

            return(1);
        }
Beispiel #2
0
        private Dictionary <string, string> ComputeCostPrice(PManager pManager, ref PObject.Preparation preparation)
        {
            List <Neusoft.HISFC.Models.Preparation.Expand> expandList = ucExpand.QueryExpandList(pManager, preparation);

            if (expandList == null)
            {
                return(null);
            }

            decimal costPrice = 0;

            foreach (Neusoft.HISFC.Models.Preparation.Expand info in expandList)
            {
                costPrice = info.FacutalExpand / info.Prescription.MaterialPackQty * info.Prescription.Price;
                this.drugNameDict.Add("[" + info.Prescription.Material.ID + "]", costPrice.ToString());
            }
            if (costPrice == 0)
            {
                preparation.CostPrice = preparation.Drug.PriceCollection.PurchasePrice;
            }
            else
            {
                preparation.CostPrice = costPrice;
            }
            return(drugNameDict);
        }
Beispiel #3
0
        /// <summary>
        /// 制剂消耗信息获取
        /// </summary>
        /// <param name="preparationManager">制剂管理业务层</param>
        /// <param name="preparation">制剂成品信息</param>
        /// <returns>成功返回制剂消耗信息 失败返回null</returns>
        internal static List <PObject.Expand> QueryExpandList(PManager preparationManager, PObject.Preparation preparation)
        {
            List <Neusoft.HISFC.Models.Preparation.Expand> expandList = preparationManager.QueryExpand(preparation, null);

            if (expandList == null)
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("获取制剂消耗信息发生错误") + preparationManager.Err);
                return(null);
            }

            return(expandList);
        }
        public virtual int SetPreparation(Neusoft.HISFC.Models.Preparation.Preparation preparation)
        {
            Neusoft.HISFC.BizLogic.Pharmacy.Preparation pprManager = new Neusoft.HISFC.BizLogic.Pharmacy.Preparation();
            this.processList = pprManager.QueryProcess(preparation.PlanNO, preparation.Drug.ID, ((int)preparation.State).ToString());
            if (this.processList != null && this.processList.Count > 0)
            {
                Function.SetProcessItem(this.processList, this.hsProcessControl);
            }

            this.preparation = preparation;

            return(1);
        }
        /// <summary>
        /// 加载处方内容信息
        /// </summary>
        /// <returns>成功返回1 失败返回-1</returns>
        protected int QueryPrescriptionData()
        {
            string drugCode = this.preparation.Drug.ID;

            this.fpSemiAssay_Sheet1.Rows.Count = 0;

            Neusoft.HISFC.BizLogic.Pharmacy.Preparation          pprManager = new Neusoft.HISFC.BizLogic.Pharmacy.Preparation();
            List <Neusoft.HISFC.Models.Preparation.Prescription> al         = pprManager.QueryDrugPrescription(drugCode, Neusoft.HISFC.Models.Preparation.EnumMaterialType.Material);

            if (al == null)
            {
                MessageBox.Show(Language.Msg("获取当前选择成品的配制处方信息出错\n" + drugCode));
                return(-1);
            }

            foreach (Neusoft.HISFC.Models.Preparation.Prescription info in al)
            {
                int i = this.fpSemiAssay_Sheet1.Rows.Count;

                this.fpSemiAssay_Sheet1.Rows.Add(i, 1);
                this.fpSemiAssay_Sheet1.Cells[i, (int)ReportColumnEnum.ColItemID].Text   = info.Material.ID;
                this.fpSemiAssay_Sheet1.Cells[i, (int)ReportColumnEnum.ColItemName].Text = info.Material.Name;
                if (this.ProcessList != null)
                {
                    foreach (Neusoft.HISFC.Models.Preparation.Process p in this.ProcessList)
                    {
                        if (p.ProcessItem.ID == info.Material.ID)
                        {
                            this.fpSemiAssay_Sheet1.Cells[i, (int)ReportColumnEnum.ColDes].Text     = p.ResultStr;
                            this.fpSemiAssay_Sheet1.Cells[i, (int)ReportColumnEnum.ColContent].Text = p.Extend;
                            this.fpSemiAssay_Sheet1.Cells[i, (int)ReportColumnEnum.ColResult].Text  = p.ResultQty.ToString();
                        }
                    }
                }
                else
                {
                    this.fpSemiAssay_Sheet1.Cells[i, (int)ReportColumnEnum.ColDes].Text     = "";
                    this.fpSemiAssay_Sheet1.Cells[i, (int)ReportColumnEnum.ColContent].Text = "0";
                    this.fpSemiAssay_Sheet1.Cells[i, (int)ReportColumnEnum.ColResult].Text  = "0";
                }

                this.fpSemiAssay_Sheet1.Rows[i].Tag = info.Material;
            }

            return(1);
        }
Beispiel #6
0
        /// <summary>
        /// 成本价计算
        /// </summary>
        /// <param name="preparation">制剂成品信息</param>
        /// <returns>成功返回1 失败返回-1</returns>
        internal static int ComputeCostPrice(PManager pManager, ref PObject.Preparation preparation, ComputeCostPriceType computeType)
        {
            if (computeType == ComputeCostPriceType.Manual)
            {
                using (ucCostPrice uc = new ucCostPrice( ))
                {
                    uc.SetPreparation(preparation, pManager, ref preparation);
                    Neusoft.FrameWork.WinForms.Classes.Function.PopForm.Text = "成本价设置";
                    Neusoft.FrameWork.WinForms.Classes.Function.PopShowControl(uc);
                    if (uc.Result == DialogResult.Cancel)
                    {
                        return(1);
                    }
                    else
                    {
                        preparation.CostPrice = uc.CostPrice;
                        return(1);
                    }
                }
            }
            else
            {
                List <Neusoft.HISFC.Models.Preparation.Expand> expandList = ucExpand.QueryExpandList(pManager, preparation);
                if (expandList == null)
                {
                    return(-1);
                }

                decimal costPrice = 0;

                foreach (Neusoft.HISFC.Models.Preparation.Expand info in expandList)
                {
                    costPrice = info.FacutalExpand / info.Prescription.MaterialPackQty * info.Prescription.Price;
                }
                if (costPrice == 0)
                {
                    preparation.CostPrice = preparation.Drug.PriceCollection.PurchasePrice;
                }
                else
                {
                    preparation.CostPrice = costPrice;
                }
            }

            return(1);
        }
        /// <summary>
        /// 工艺流程保存
        /// </summary>
        /// <param name="beginTransaction">是否开启事务 如False,则认为事务由外部启动 不提交/不提示成功/不自动打印</param>
        /// <returns>成功返回1 失败返回-1</returns>
        public virtual int SaveProcess(bool beginTransaction)
        {
            if (Function.GetProcessItemList(this.panelInput, ref this.hsProcessItem) == 1)
            {
                foreach (Neusoft.HISFC.Models.Preparation.Process info in this.hsProcessItem.Values)
                {
                    info.Preparation = this.preparation.Clone();
                }
            }

            if (beginTransaction)
            {
                Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            }

            //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance);
            //t.BeginTransaction();
            Neusoft.HISFC.BizLogic.Pharmacy.Preparation pprManager = new Neusoft.HISFC.BizLogic.Pharmacy.Preparation();
            //pprManager.SetTrans(t.Trans);

            DateTime sysTime = pprManager.GetDateTimeFromSysDateTime();

            foreach (Neusoft.HISFC.Models.Preparation.Process p in this.hsProcessItem.Values)
            {
                p.Oper.OperTime = sysTime;
                p.Oper.ID       = pprManager.Operator.ID;

                if (pprManager.SetProcess(p) == -1)
                {
                    Neusoft.FrameWork.Management.PublicTrans.RollBack();
                    MessageBox.Show("保存制剂工艺流程信息失败" + pprManager.Err);
                }
            }

            if (beginTransaction)
            {
                Neusoft.FrameWork.Management.PublicTrans.Commit();
                MessageBox.Show("工艺流程执行信息保存成功");

                this.PrintProcess();
            }

            return(1);
        }
Beispiel #8
0
        /// <summary>
        /// 设置制剂成品信息 并 显示成本计算公式、当前成本价
        /// </summary>
        /// <param name="preparation">制剂成品信息</param>
        protected int SetPreparation(Neusoft.HISFC.Models.Preparation.Preparation preparation, PManager pManager, ref PObject.Preparation preparation1)
        {
            string drugCode = preparation.Drug.ID;
            List <Neusoft.HISFC.Models.Preparation.Prescription> al = this.preparationManager.QueryDrugPrescription(drugCode);

            if (al == null)
            {
                return(-1);
            }
            foreach (Neusoft.HISFC.Models.Preparation.Prescription info in al)
            {
                drugCodeDict.Add(info.Material.ID, info.Material.Name);
                //drugNameDict.Add ( info.Material.Name, info.Material.ID );
            }

            string costPriceFormula = this.preparationManager.GetCostPriceFormula(drugCode);

            this.ntxtCostPrice.Text = Neusoft.FrameWork.Public.String.ExpressionVal(this.CodeToPrice(costPriceFormula, this.ComputeCostPrice(pManager, ref preparation1))).ToString();
            costPriceFormula        = this.CodeToName(costPriceFormula);
            this.costPriceTxt.Text  = costPriceFormula;
            this.lbPreparation.Text = string.Format(this.strPreparation, preparation.Drug.Name, preparation.Drug.Specs, preparation.BatchNO, preparation.PlanQty, preparation.Unit);

            return(this.ucExpand1.ShowExpand(preparation));
        }
Beispiel #9
0
        /// <summary>
        /// 入库计划单据列表
        /// </summary>
        /// <param name="planState">计划状态</param>
        public void ShowPlanList(params Neusoft.HISFC.Models.Preparation.EnumState[] stateCollection)
        {
            this.Nodes.Clear();

            Neusoft.HISFC.BizLogic.Pharmacy.Preparation preparationManager = new Neusoft.HISFC.BizLogic.Pharmacy.Preparation();

            List <Neusoft.HISFC.Models.Preparation.Preparation> alList = new List <Neusoft.HISFC.Models.Preparation.Preparation>();

            foreach (Neusoft.HISFC.Models.Preparation.EnumState state in stateCollection)
            {
                List <Neusoft.HISFC.Models.Preparation.Preparation> alTempList = preparationManager.QueryPreparation(state);
                if (alTempList == null)
                {
                    System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("获取制剂计划列表发生错误" + preparationManager.Err));
                    return;
                }

                //{FF5101E6-3188-4928-AEAE-6C2B55A9848D}  对检验不合格的项目列表进行过滤
                List <Neusoft.HISFC.Models.Preparation.Preparation> alFilterList = new List <Neusoft.HISFC.Models.Preparation.Preparation>();
                foreach (Neusoft.HISFC.Models.Preparation.Preparation info in alTempList)
                {
                    if (info.IsAssayEligible == true)
                    {
                        alFilterList.Add(info);
                    }
                }

                alList.AddRange(alFilterList);
            }

            if (alList.Count == 0)
            {
                this.Nodes.Add(new System.Windows.Forms.TreeNode("没有计划单", 0, 0));
            }
            else
            {
                System.Windows.Forms.TreeNode parentNode = new System.Windows.Forms.TreeNode("计划单列表", 0, 0);
                this.Nodes.Add(parentNode);

                System.Windows.Forms.TreeNode planNode = new TreeNode();
                string privPlanNO = "";
                foreach (Neusoft.HISFC.Models.Preparation.Preparation info in alList)
                {
                    if (privPlanNO != info.PlanNO)      //添加计划单节点
                    {
                        planNode                    = new System.Windows.Forms.TreeNode(info.PlanNO);
                        planNode.Tag                = info;
                        planNode.ImageIndex         = 2;
                        planNode.SelectedImageIndex = 4;

                        parentNode.Nodes.Add(planNode);

                        privPlanNO = info.PlanNO;
                    }
                }

                this.Nodes[0].ExpandAll();

                this.SelectedNode = this.Nodes[0];
            }
        }