public int Compare(object x, object y) { Neusoft.HISFC.Models.Pharmacy.ApplyOut o1 = (x as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone(); Neusoft.HISFC.Models.Pharmacy.ApplyOut o2 = (y as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone(); string oX = o1.Item.ID; string oY = o2.Item.ID; int nComp; if (oX == null) { nComp = (oY != null) ? -1 : 0; } else if (oY == null) { nComp = 1; } else { nComp = string.Compare(oX.ToString(), oY.ToString()); } return(nComp); }
/// <summary> /// 取消作废 /// </summary> /// <returns>成功返回1 失败返回-1</returns> protected int UnCancelApply() { //Neusoft.FrameWork.Management.Transaction t = new Transaction(Neusoft.FrameWork.Management.Connection.Instance); //t.BeginTransaction(); Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item(); //itemManager.SetTrans(t.Trans); //{E8849BB0-3C69-4d60-8771-C201E445BD5D} 预扣库存的判断处理 Neusoft.HISFC.BizProcess.Integrate.Common.ControlParam ctrlIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Common.ControlParam(); bool isPreOut = ctrlIntegrate.GetControlParam <bool>(Neusoft.HISFC.BizProcess.Integrate.PharmacyConstant.InDrug_Pre_Out, false, true); string applyID = this.fpCancelApply_Sheet1.Cells[this.fpCancelApply_Sheet1.ActiveRowIndex, (int)ColumnSet.ColID].Text; Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.hsApply[applyID] as Neusoft.HISFC.Models.Pharmacy.ApplyOut; //取消作废摆药申请 //{E8849BB0-3C69-4d60-8771-C201E445BD5D} 传入参数调整 if (itemManager.UndoCancelApplyOutByID(applyOut.ID, isPreOut) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("取消作废摆药申请失败")); return(-1); } //取消作废医嘱执行档 Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show(Language.Msg("取消作废申请成功")); this.AddRemoveCancelApply(false); return(1); }
public int Compare(object x, object y) { Neusoft.HISFC.Models.Pharmacy.ApplyOut o1 = (x as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone(); Neusoft.HISFC.Models.Pharmacy.ApplyOut o2 = (y as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone(); string oX = o1.PlaceNO.PadLeft(5, '0') + o1.Item.UserCode; //货位号+自定义码{D9BE63EB-D955-48e2-A3A9-8FDB77BB3998} string oY = o2.PlaceNO.PadLeft(5, '0') + o1.Item.UserCode; //货位号+自定义码 int nComp; if (oX == null) { nComp = (oY != null) ? -1 : 0; } else if (oY == null) { nComp = 1; } else { nComp = string.Compare(oX.ToString(), oY.ToString()); } return(nComp); }
/// <summary> /// 打印单个药品 /// </summary> /// <param name="applyOut"></param> public void AddSingle(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut) { //this.Clear(); Neusoft.HISFC.Models.Pharmacy.Item item = applyOut.Item; this.GetRecipeLabelItem(applyOut.StockDept.ID, applyOut.Item.ID, ref item); //设置患者信息显示、发药信息 this.SetPatiAndSendInfo(applyOut); //退改药标志 this.fpSpread1_Sheet1.AddRows(this.fpSpread1_Sheet1.Rows.Count, 2); this.fpSpread1_Sheet1.Rows[this.fpSpread1_Sheet1.Rows.Count - 1].Font = new System.Drawing.Font("宋体", 9.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.fpSpread1_Sheet1.Rows[this.fpSpread1_Sheet1.Rows.Count - 2].Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 0].Text = item.NameCollection.RegularName; this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 1, 0].Text = " [" + item.Name + "]"; this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 1].Text = item.Specs; this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 1, 1].Text = applyOut.Usage.Name.ToString(); this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 2].Text = applyOut.Operation.ApplyQty.ToString() + applyOut.Item.MinUnit; if (applyOut.PlaceNO != null) { this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 3].Text = applyOut.PlaceNO.ToString(); } this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 4].Text = applyOut.Item.Price.ToString(); this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.Rows.Count - 2, 5].Text = "80%"; TotCost += applyOut.Operation.ApplyQty * applyOut.Item.Price; this.lblTotCost.Text = TotCost.ToString(); }
/// <summary> /// 打印单个药品 /// </summary> /// <param name="applyOut"></param> public void AddSingle(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut) { this.Clear(); Neusoft.HISFC.Models.Pharmacy.Item item = applyOut.Item; this.GetRecipeLabelItem(applyOut.StockDept.ID, applyOut.Item.ID, ref item); //设置患者信息显示、发药信息 this.SetPatiAndSendInfo(applyOut); //设置处方内发药药品信息 this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin, 0].ColumnSpan = 3; //退改药标志 if (applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Extend) { this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin, 0].Text = "[改] " + applyOut.Item.Name + "[" + applyOut.Item.Specs + "]"; //名称 } else { this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin, 0].Text = applyOut.Item.Name + "[" + applyOut.Item.Specs + "]"; //名称 } this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin, 3].Text = applyOut.Operation.ApplyQty.ToString() + applyOut.Item.MinUnit; //申请量、单位 this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 1, 0].Text = applyOut.Item.NameCollection.RegularName; //名称 if (applyOut.ExecNO.ToString() != "" && applyOut.ExecNO.ToString() != "0") { this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 1, 2].Text = "院注" + applyOut.ExecNO.ToString() + "次"; } this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 0].Text = this.usageHelper.GetName(applyOut.Usage.ID); //用法 //屏蔽代码 // this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2,1].Text = "每次" + applyOut.DoseOnce.ToString() + applyOut.Item.DoseUnit; //每次量 // this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2,2].Text = " " + this.frequencyHelper.GetName(applyOut.Frequency.ID); //频次 this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 1].Text = " " + this.frequencyHelper.GetName(applyOut.Frequency.ID); //频次 //对注射剂每次量 显示剂量单位 //string str = applyOut.Item.NameCollection.UserCode; //if (str != null && str.Length > 3 && (str.Substring(0, 3) == "002" || str.Substring(0, 3) == "003" || str.Substring(0, 3) == "004")) // this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 2].Text = "每次" + applyOut.DoseOnce.ToString() + applyOut.Item.DoseUnit; //每次量 //else // this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 2].Text = "每次" + this.DoseToMin(applyOut.DoseOnce, applyOut.Item.BaseDose).ToString() + applyOut.Item.MinUnit; //每次量 this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 2].Text = "每次" + applyOut.DoseOnce.ToString() + applyOut.Item.DoseUnit; //每次量 //用法包含'适量'字样的药品不打印每次量 if (this.usageHelper.GetObjectFromID(applyOut.Usage.ID) != null) { if (this.usageHelper.GetName(applyOut.Usage.ID).IndexOf("适量") != -1) { this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 2, 2].Text = ""; } } this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 3, 1].Text = applyOut.Item.Product.Caution; //注意事项 //默认不显示存储 // if (applyOut.Item.StoreCondition == "") // applyOut.Item.StoreCondition = "常温存储"; // this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 4,1].Text = applyOut.Item.StoreCondition; //存储条件 this.neuSpread1_Sheet1.Cells[(int)RowSet.RowDrugBegin + 4, 1].Text = ""; this.labelNum = this.labelNum + 1; }
/// <summary> /// 主键获取 /// </summary> /// <param name="applyOut"></param> /// <returns></returns> private string GetKey(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut) { if (applyOut.OutBillNO == null) { applyOut.OutBillNO = ""; } return(applyOut.Item.ID + applyOut.OutBillNO); }
/// <summary> /// 向FpPatientMerge内加入数据 显示科室摆药汇总信息 /// </summary> /// <param name="iIndex">需加入行索引</param> /// <param name="applyOut">发药申请信息</param> /// <param name="drugTot">汇总数量</param> protected void AddTotDataToFpDeptMerge(int iIndex, Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut, decimal drugNum) { this.neuSpread3_DeptDetailSheet.Cells[iIndex, 0].Value = applyOut.Item.Name + "[" + applyOut.Item.Specs + "]"; this.neuSpread3_DeptDetailSheet.Cells[iIndex, 1].Value = applyOut.Item.PriceCollection.RetailPrice; this.neuSpread3_DeptDetailSheet.Cells[iIndex, 2].Value = drugNum; this.neuSpread3_DeptDetailSheet.Cells[iIndex, 3].Value = applyOut.Item.MinUnit; this.neuSpread3_DeptDetailSheet.Rows[iIndex].Tag = applyOut; }
public void AddSingle(Neusoft.HISFC.Models.Pharmacy.ApplyOut info) { ArrayList al = new ArrayList(); al.Add(info); this.AddAllData(al); }
public int Compare(object x, object y) { Neusoft.HISFC.Models.Pharmacy.ApplyOut o1 = (x as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone(); Neusoft.HISFC.Models.Pharmacy.ApplyOut o2 = (y as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone(); string oX = o1.User02 + o1.PlaceNO.PadLeft(5, '0') + o1.Item.UserCode; //患者床号+货位号+自定义码 string oY = o2.User02 + o2.PlaceNO.PadLeft(5, '0') + o1.Item.UserCode; //患者床号+货位号+自定义码 return(string.Compare(oX, oY)); }
public int Compare(object x, object y) { // TODO: 添加 FeeSort.Compare 实现 Neusoft.HISFC.Models.Pharmacy.ApplyOut obj1 = x as Neusoft.HISFC.Models.Pharmacy.ApplyOut; Neusoft.HISFC.Models.Pharmacy.ApplyOut obj2 = y as Neusoft.HISFC.Models.Pharmacy.ApplyOut; if (obj1 == null || obj2 == null) { throw new Exception("数组内必须为Pharmacy.ApplyOut类型"); } int i1 = NConvert.ToInt32(obj1.CombNO); int i2 = NConvert.ToInt32(obj2.CombNO); return(i1 - i2); }
/// <summary> /// 作废用药申请 /// </summary> /// <returns>成功返回1 失败返回-1</returns> internal int CancelApply() { if (this.fpCancelApply_Sheet1.Rows.Count <= 0) { return(0); } Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); //Neusoft.FrameWork.Management.Transaction t = new Transaction(Neusoft.FrameWork.Management.Connection.Instance); //t.BeginTransaction(); Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item(); //itemManager.SetTrans(t.Trans); //{E8849BB0-3C69-4d60-8771-C201E445BD5D} 预扣库存的判断处理 Neusoft.HISFC.BizProcess.Integrate.Common.ControlParam ctrlIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Common.ControlParam(); bool isPreOut = ctrlIntegrate.GetControlParam <bool>(Neusoft.HISFC.BizProcess.Integrate.PharmacyConstant.InDrug_Pre_Out, false, true); for (int i = 0; i < this.fpCancelApply_Sheet1.Rows.Count; i++) { string applyID = this.fpCancelApply_Sheet1.Cells[i, (int)ColumnSet.ColID].Text; Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.hsApply[applyID] as Neusoft.HISFC.Models.Pharmacy.ApplyOut; //对已经无效的数据 不重复保存 if (applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Invalid) { continue; } //作废摆药申请 //{E8849BB0-3C69-4d60-8771-C201E445BD5D} 传入参数调整 if (itemManager.CancelApplyOutByID(applyOut.ID, isPreOut) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("作废摆药申请失败")); return(-1); } //作废医嘱执行档 } Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show(Language.Msg("作废申请成功")); this.Clear(); return(1); }
/// <summary> /// 合并汇总计算科室药品总数量 金额 /// </summary> public virtual void MergeDeptData() { this.neuSpread3_DeptDetailSheet.Rows.Count = 0; this.deptDrugInfo = new ArrayList(); this.deptDrugNum = new ArrayList(); try { Neusoft.HISFC.Models.Pharmacy.ApplyOut info; Neusoft.HISFC.Models.Pharmacy.ApplyOut privInfo = new Neusoft.HISFC.Models.Pharmacy.ApplyOut(); for (int i = 0; i < this.neuSpread1_DetailSheet.Rows.Count; i++) { if (this.neuSpread1_DetailSheet.Cells[i, 2].Value != null && this.neuSpread1_DetailSheet.Cells[i, 2].Value.ToString() == "True") { info = this.neuSpread1_DetailSheet.Rows[i].Tag as Neusoft.HISFC.Models.Pharmacy.ApplyOut; if (info == null) { continue; } bool isFind = false; for (int j = 0; j < this.deptDrugInfo.Count; j++) { Neusoft.HISFC.Models.Pharmacy.ApplyOut temp = this.deptDrugInfo[j] as Neusoft.HISFC.Models.Pharmacy.ApplyOut; if (temp.Item.ID == info.Item.ID) { this.deptDrugNum[j] = (decimal)this.deptDrugNum[j] + info.Operation.ApplyQty * info.Days; isFind = true; break; } } if (!isFind) { this.deptDrugInfo.Add(info); this.deptDrugNum.Add(info.Operation.ApplyQty * info.Days); } } } for (int i = 0; i < this.deptDrugInfo.Count; i++) { this.neuSpread3_DeptDetailSheet.Rows.Add(i, 1); this.AddTotDataToFpDeptMerge(i, this.deptDrugInfo[i] as Neusoft.HISFC.Models.Pharmacy.ApplyOut, (decimal)this.deptDrugNum[i]); } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } }
/// <summary> /// 根据药品编码加入数据 /// </summary> /// <param name="drugNO">药品编码</param> /// <param name="outBillNO">出库流水号</param> /// <returns></returns> private int AddDrugData(string drugNO, string outBillNO, decimal applyQty) { //取药品字典信息 Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item(); Neusoft.HISFC.Models.Pharmacy.Item item = itemManager.GetItem(drugNO); if (item == null) { MessageBox.Show(Language.Msg("检索药品基本信息失败")); return(-1); } Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = new Neusoft.HISFC.Models.Pharmacy.ApplyOut(); applyOut.Item = item; if (outBillNO != null) { applyOut.OutBillNO = outBillNO; } if (this.hsApplyData.Contains(this.GetKey(applyOut))) { MessageBox.Show(Language.Msg("该药品已添加")); return(0); } applyOut.Days = 1; applyOut.ApplyDept = this.phaInManager.DeptInfo; //申请科室 applyOut.StockDept = this.phaInManager.TargetDept; //库存科室 (目标科室) applyOut.State = "0"; //状态 申请 applyOut.SystemType = this.phaInManager.PrivType.Memo; applyOut.PrivType = this.phaInManager.PrivType.ID; if (applyQty != -1) { applyOut.Operation.ApplyQty = applyQty; } if (this.AddDataToTable(applyOut, "1") == 1) { this.hsApplyData.Add(this.GetKey(applyOut), applyOut); this.SetFormat(); this.SetFocusSelect(); } return(1); }
/// <summary> /// 向FpDetail加入数据 显示摆药明细信息 /// </summary> /// <param name="applyOut">出库申请信息</param> /// <param name="i"></param> protected void AddDataToFpDetail(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut, int iIndex) { if (applyOut.User01.Length > 4) { applyOut.User01 = applyOut.User01.Substring(4); } this.neuSpread1_DetailSheet.Cells[iIndex, 0].Value = applyOut.User01; //床号 this.neuSpread1_DetailSheet.Cells[iIndex, 1].Value = applyOut.User02; //姓名 this.neuSpread1_DetailSheet.Cells[iIndex, 2].Value = true; this.neuSpread1_DetailSheet.Cells[iIndex, 3].Value = applyOut.Item.Name + "[" + applyOut.Item.Specs + "]"; this.neuSpread1_DetailSheet.Cells[iIndex, 4].Value = applyOut.Item.PriceCollection.RetailPrice; this.neuSpread1_DetailSheet.Cells[iIndex, 5].Value = applyOut.DoseOnce; this.neuSpread1_DetailSheet.Cells[iIndex, 6].Value = applyOut.Item.DoseUnit; this.neuSpread1_DetailSheet.Cells[iIndex, 7].Value = applyOut.Operation.ApplyQty * applyOut.Days; this.neuSpread1_DetailSheet.Cells[iIndex, 8].Value = applyOut.Item.MinUnit; this.neuSpread1_DetailSheet.Cells[iIndex, 9].Value = applyOut.Frequency.ID; this.neuSpread1_DetailSheet.Cells[iIndex, 10].Value = applyOut.Usage.Name; this.neuSpread1_DetailSheet.Cells[iIndex, 11].Value = applyOut.Operation.ApplyOper.OperTime.ToString(); if (this.hsPerson.ContainsKey(applyOut.Operation.ExamOper.ID) == false) //不包含人员编码/姓名信息 重新获取 { Neusoft.HISFC.BizProcess.Integrate.Manager managerIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Manager(); Neusoft.HISFC.Models.Base.Employee person = managerIntegrate.GetEmployeeInfo(applyOut.Operation.ExamOper.ID); if (person != null) { applyOut.Operation.ExamOper.Name = person.Name; this.hsPerson.Add(applyOut.Operation.ExamOper.ID, person.Name); } } else { applyOut.Operation.ExamOper.Name = this.hsPerson[applyOut.Operation.ExamOper.ID].ToString(); } this.neuSpread1_DetailSheet.Cells[iIndex, 12].Value = applyOut.Operation.ExamOper.Name; if (applyOut.Operation.ExamOper.OperTime != System.DateTime.MinValue) { this.neuSpread1_DetailSheet.Cells[iIndex, 13].Value = applyOut.Operation.ExamOper.OperTime.ToString(); } this.neuSpread1_DetailSheet.Cells[iIndex, 14].Value = this.orderTypeHelper.GetName(applyOut.OrderType.ID); this.neuSpread1_DetailSheet.Rows[iIndex].Tag = applyOut; //如果摆药单已作废或者不摆药,则用红色特殊显示此行 if (applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Invalid || applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Ignore) { this.neuSpread1_DetailSheet.Rows[iIndex].ForeColor = System.Drawing.Color.Red; } }
/// <summary> /// 打印一组药品 /// </summary> /// <param name="alCombo"></param> public void AddCombo(ArrayList alCombo) { for (int i = 0; i < alCombo.Count; i++) { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = alCombo[i] as Neusoft.HISFC.Models.Pharmacy.ApplyOut; if (i == 0) { this.SetPatiAndSendInfo(applyOut); } this.AddSingle(applyOut); if (i < alCombo.Count - 1) { this.Print(); } } }
/// <summary> /// 设置患者信息 /// </summary> protected void SetPatiAndSendInfo(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut, decimal labelNum) { //设置条码 this.lbBarCode.Text = "*" + applyOut.RecipeNO + "*"; //设置患者信息、发药信息 if (this.patientInfo != null) { //姓名 this.neuSpread1_Sheet1.Cells[(int)RowSet.RowPatiInfo, 0].Text = this.patientInfo.Name; //设置发药信息 this.neuSpread1_Sheet1.Cells[(int)RowSet.RowPatiInfo, 1].Text = applyOut.Operation.ApplyOper.OperTime.ToString(); //货位号 this.neuSpread1_Sheet1.Cells[(int)RowSet.RowPatiInfo, 2].Text = applyOut.Item.User01; //配药标签总页数/当前页数 this.neuSpread1_Sheet1.Cells[(int)RowSet.RowSendInfo, 3].Text = labelNum + "/" + this.drugTotNum; } }
public int Compare(object x, object y) { Neusoft.HISFC.Models.Pharmacy.ApplyOut o1 = (x as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone(); Neusoft.HISFC.Models.Pharmacy.ApplyOut o2 = (y as Neusoft.HISFC.Models.Pharmacy.ApplyOut).Clone(); string oX = o1.User01; //患者姓名 string oY = o2.User01; //患者姓名 if (o1.User02.Length > 4) { oX = o1.User02.Substring(4); } else { oX = o1.User02; } if (o2.User02.Length > 4) { oY = o2.User02.Substring(4); } else { oY = o2.User02; } oX = oX.PadLeft(5, '0') + o1.User01; oY = oY.PadLeft(5, '0') + o2.User01; int nComp; if (oX == null) { nComp = (oY != null) ? -1 : 0; } else if (oY == null) { nComp = 1; } else { nComp = string.Compare(oX.ToString(), oY.ToString()); } return(nComp); }
/// <summary> /// 根据出库申请数据 设置退药单方号显示 /// </summary> /// <param name="applyOut">出库申请数据</param> private void SetBillCodeData(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut) { if (this.isBillCodeClear && this.IsFilterBillCode) { bool isNew = true; for (int i = 0; i < alBillCode.Count; i++) { if (alBillCode[i] as string == applyOut.BillNO) { isNew = false; break; } } if (isNew) { alBillCode.Add(applyOut.BillNO); this.cmbBillCode.Items.Add(applyOut.BillNO); } } }
/// <summary> /// 库存警戒线判断 /// </summary> /// <param name="drugCode"></param> public virtual void JudgeWarnStore() { if ((this.funModle == OutpatientFun.Drug && this.IsJudgeWarnDruged) || (this.funModle == OutpatientFun.Send && this.IsJudgeWarnSend)) { Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item(); for (int i = 0; i < this.neuSpread1_Sheet1.Rows.Count - 1; i++) { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.neuSpread1_Sheet1.Rows[i].Tag as Neusoft.HISFC.Models.Pharmacy.ApplyOut; if (itemManager.JudgeIsWarnStore(this.ApproveDept.ID, applyOut.Item.ID, this.judgeWarnPreStore, this.judgeWarnLowQty)) { if (this.MessageEvent != null) { this.MessageEvent(this.neuSpread1_Sheet1.Cells[i, 1].Text + " 已达到库存警戒线!!", System.EventArgs.Empty); } } } } }
/// <summary> /// 正常用药申请信息检索 /// </summary> /// <returns></returns> private int SetNormalApply(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut) { this.dtNormalApply.Rows.Add(new object[] { applyOut.Item.Name, applyOut.Item.Specs, applyOut.Item.PriceCollection.RetailPrice, applyOut.Operation.ApplyQty, System.Math.Round((applyOut.Operation.ApplyQty * applyOut.Days / applyOut.Item.PackQty) * applyOut.Item.PriceCollection.RetailPrice, 2), this.deptHelper.GetName(applyOut.ApplyDept.ID), this.deptHelper.GetName(applyOut.StockDept.ID), this.personHelper.GetName(applyOut.Operation.ApplyOper.ID), applyOut.Operation.ApplyOper.OperTime, applyOut.Memo, applyOut.ID, applyOut.Item.NameCollection.SpellCode, applyOut.Item.NameCollection.WBCode, applyOut.Item.NameCollection.UserCode }); return(1); }
/// <summary> /// 将患者预扣药品申请信息加入Fp /// </summary> /// <param name="applyOut">预扣申请信息</param> /// <returns>成功返回1 失败返回-1</returns> protected int AddDataToFp(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut) { int rowCount = this.patientSpread1_Sheet1.Rows.Count; this.patientSpread1_Sheet1.Rows.Add(rowCount, 1); this.patientSpread1_Sheet1.Cells[rowCount, 0].Value = false; this.patientSpread1_Sheet1.Cells[rowCount, 1].Text = applyOut.Item.Name; this.patientSpread1_Sheet1.Cells[rowCount, 2].Text = applyOut.Item.Specs; this.patientSpread1_Sheet1.Cells[rowCount, 3].Text = applyOut.Item.PriceCollection.RetailPrice.ToString(); this.patientSpread1_Sheet1.Cells[rowCount, 4].Text = applyOut.Days.ToString(); this.patientSpread1_Sheet1.Cells[rowCount, 5].Text = applyOut.Operation.ApplyQty.ToString(); this.patientSpread1_Sheet1.Cells[rowCount, 6].Text = applyOut.Item.MinUnit; this.patientSpread1_Sheet1.Cells[rowCount, 7].Text = System.Math.Round((applyOut.Operation.ApplyQty * applyOut.Days * applyOut.Item.PriceCollection.RetailPrice / applyOut.Item.PackQty), 2).ToString(); this.patientSpread1_Sheet1.Cells[rowCount, 8].Text = applyOut.Operation.ApplyOper.OperTime.ToString(); this.patientSpread1_Sheet1.Rows[rowCount].Tag = applyOut; return(1); }
/// <summary> /// 患者虚库存管理保存 /// </summary> /// <returns>成功返回1 失败返回-1</returns> public int SavePatientPreStock() { Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); //Neusoft.FrameWork.Management.Transaction t = new Transaction(Neusoft.FrameWork.Management.Connection.Instance); //t.BeginTransaction(); this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); bool isHaveChecked = false; for (int i = 0; i < this.patientSpread1_Sheet1.Rows.Count; i++) { if (NConvert.ToBoolean(this.patientSpread1_Sheet1.Cells[i, 0].Value)) { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.patientSpread1_Sheet1.Rows[i].Tag as Neusoft.HISFC.Models.Pharmacy.ApplyOut; if (this.itemManager.UpdateStockinfoPreOutNum(applyOut, -applyOut.Operation.ApplyQty, applyOut.Days) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("保存操作 更新库存失败") + this.itemManager.Err); return(-1); } isHaveChecked = true; } } Neusoft.FrameWork.Management.PublicTrans.Commit(); if (isHaveChecked) { MessageBox.Show(Language.Msg("保存成功")); } else { MessageBox.Show(Language.Msg("请选择需保存的患者虚扣药品")); } return(1); }
/// <summary> /// 向FpPatientMerge内加入数据 显示患者摆药汇总信息 /// </summary> /// <param name="iIndex">需加入行索引</param> /// <param name="applyOut">发药申请信息</param> /// <param name="drugTot">汇总数量</param> protected void AddDataToFpPatientMerge(int iIndex, Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut, decimal drugTot) { this.neuSpread2_PatientDetailSheet.Cells[iIndex, 0].Value = applyOut.User01; //床号 this.neuSpread2_PatientDetailSheet.Cells[iIndex, 1].Value = applyOut.User02; //姓名 this.neuSpread2_PatientDetailSheet.Cells[iIndex, 2].Value = applyOut.Item.Name + "[" + applyOut.Item.Specs + "]"; this.neuSpread2_PatientDetailSheet.Cells[iIndex, 3].Value = applyOut.Item.PriceCollection.RetailPrice; this.neuSpread2_PatientDetailSheet.Cells[iIndex, 4].Value = applyOut.DoseOnce; this.neuSpread2_PatientDetailSheet.Cells[iIndex, 5].Value = applyOut.Item.DoseUnit; this.neuSpread2_PatientDetailSheet.Cells[iIndex, 6].Value = drugTot; this.neuSpread2_PatientDetailSheet.Cells[iIndex, 7].Value = applyOut.Item.MinUnit; this.neuSpread2_PatientDetailSheet.Cells[iIndex, 8].Value = applyOut.Frequency.Name; this.neuSpread2_PatientDetailSheet.Cells[iIndex, 9].Value = applyOut.Usage.Name; this.neuSpread2_PatientDetailSheet.Cells[iIndex, 10].Value = applyOut.Operation.ApplyOper.OperTime.ToString(); this.neuSpread2_PatientDetailSheet.Cells[iIndex, 11].Value = this.orderTypeHelper.GetName(applyOut.OrderType.ID); this.neuSpread2_PatientDetailSheet.Rows[iIndex].Tag = applyOut; //如果摆药单已作废或者不摆药,则用红色特殊显示此行 if (applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Invalid || applyOut.ValidState == Neusoft.HISFC.Models.Base.EnumValidState.Ignore) { this.neuSpread2_PatientDetailSheet.Rows[iIndex].ForeColor = System.Drawing.Color.Red; } }
/// <summary> /// 设置患者信息 /// </summary> protected void SetPatiAndSendInfo(Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut, decimal labelNum) { //设置条码 // this.lbBarCode.Text = "*" + applyOut.RecipeNO + "*"; //设置患者信息、发药信息 if (this.patientInfo != null) { //姓名 this.lblPatientName.Text = this.patientInfo.Name; this.lblPatientId.Text = this.patientInfo.ID; this.lblInvoiceNo.Text = this.patientInfo.InvoiceNO;//发票号 this.lblPactName.Text = this.patientInfo.Pact.Name; this.lblSex.Text = this.patientInfo.Sex.Name; this.lblAge.Text = this.patientInfo.Age; this.lblDeptName.Text = this.patientInfo.DoctorInfo.Templet.Dept.Name; this.lblDignoseName.Text = this.patientInfo.ClinicDiagnose; this.lblDrug.Text = "发药人"; this.lblDoct.Text = this.patientInfo.DoctorInfo.Templet.Doct.Name; this.lblSendWindow.Text = applyOut.SendWindow; } }
/// <summary> /// 根据药品信息添加申请信息 /// </summary> /// <param name="drugNO"></param> /// <param name="batchNO"></param> /// <param name="storageQty"></param> /// <returns></returns> protected virtual int AddDrugData(string drugNO, string batchNO, decimal storageQty) { if (this.phaOutManager.TargetDept.ID == "") { MessageBox.Show(Language.Msg("请选择领药单位!")); return(0); } if (this.hsApplyData.ContainsKey(drugNO + batchNO)) { MessageBox.Show(Language.Msg("该药品已添加")); return(0); } Neusoft.HISFC.Models.Pharmacy.Item item = this.itemManager.GetItem(drugNO); if (item == null) { MessageBox.Show(Language.Msg("根据药品编码获取药品字典信息时发生错误" + this.itemManager.Err)); return(-1); } Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = new Neusoft.HISFC.Models.Pharmacy.ApplyOut(); applyOut.Item = item; //药品信息 applyOut.BatchNO = batchNO; //批号 applyOut.SystemType = this.phaOutManager.PrivType.Memo; //系统类型 applyOut.StockDept = this.phaOutManager.DeptInfo; //当前科室 applyOut.ApplyDept = this.phaOutManager.TargetDept; //目标科室 //applyOut.StockDept = this.phaOutManager.TargetDept; //目标科室 //applyOut.ApplyDept = this.phaOutManager.DeptInfo; //当前科室 if (this.AddDataToTable(applyOut) == 1) { this.hsApplyData.Add(drugNO + batchNO, applyOut); } return(1); }
private void cmbBillCode_SelectedIndexChanged(object sender, EventArgs e) { if (this.neuSpread1_DetailSheet.Rows.Count < this.alApplyOutInfo.Count) { this.isBillCodeClear = false; this.ShowData(this.alApplyOutInfo); this.isBillCodeClear = true; } if (this.cmbBillCode.Text == "") { return; } for (int i = this.neuSpread1_DetailSheet.Rows.Count - 1; i >= 0; i--) { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.neuSpread1_DetailSheet.Rows[i].Tag as Neusoft.HISFC.Models.Pharmacy.ApplyOut; if (applyOut.BillNO != this.cmbBillCode.Text) { this.neuSpread1_DetailSheet.Rows[i].Remove(); } } }
/// <summary> /// 读取药品退费申请信息 /// </summary> /// <param name="inpatientNO">住院流水号</param> /// <param name="beginTime">开始时间</param> /// <param name="endTime">结束时间</param> private void RetrieveReturnApplyDrug(string inpatientNO, DateTime beginTime, DateTime endTime) { this.fpQuit_SheetDrug.RowCount = 0; ArrayList applyReturnFromApplyOut = new ArrayList(); ArrayList applyReturnsUnQuit = new ArrayList(); //未处理的退费申请信息 ArrayList confirmDrugList = new ArrayList(); //核准药品信息 //获取药品退费申请信息 检索有效的退药申请记录 由出库申请表获取退药申请 申请状态且有效的 //该部分获取的对已发药的药品的退费申请 由ApplyOut内检索的状态为0(申请)的记录 // al = this.drugItem.GetDrugReturn(this.PatientInfo.PVisit.PatientLocation.Dept.ID,"AAAA",this.PatientInfo.ID); //applyReturnFromApplyOut = this.drugItem.GetDrugReturn("AAAA", "AAAA", this.PatientInfo.ID); if (applyReturnFromApplyOut == null) { return; } //获取未发药(药房未做过退药确认)的退药申请 对此部分退费申请 保存时会直接置出库申请表内出库申请记录为无效 //该部分获取的对未发药的药品的退费申请 由CancelItem内检索得出 //获取该患者未确认 未发药的退费申请记录 applyReturnsUnQuit = this.returnApplyManager.QueryDrugReturnApplys(this.patientInfo.ID, false, false); if (applyReturnsUnQuit != null) { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = null; foreach (Neusoft.HISFC.Models.Fee.ReturnApply applyReturn in applyReturnsUnQuit) { applyOut = new Neusoft.HISFC.Models.Pharmacy.ApplyOut(); applyOut.ID = applyReturn.ID; //申请流水号 applyOut.BillNO = applyReturn.ApplyBillNO; //申请单据号 applyOut.RecipeNO = applyReturn.RecipeNO; //处方号 applyOut.SequenceNO = applyReturn.SequenceNO; //处方内项目流水号 applyOut.ApplyDept.ID = applyReturn.RecipeOper.Dept.ID; //申请科室 applyOut.Item.Name = applyReturn.Item.Name; //项目名称 applyOut.Item.ID = applyReturn.Item.ID; //项目编码 applyOut.Item.Specs = applyReturn.Item.Specs; //规格 applyOut.Item.Price = applyReturn.Item.Price; //零售价 以最小单位计算的零售价 applyOut.Operation.ApplyQty = applyReturn.Item.Qty; //申请退药数量(乘以付数后的总数量) applyOut.Item.PackQty = applyReturn.Item.PackQty; applyOut.Days = applyReturn.Days; //付数 applyOut.Item.MinUnit = applyReturn.Item.PriceUnit; //计价单位 applyOut.User01 = "0"; //标志该数据由病区退费申请表获得 由applyReturn实体获取 applyReturnFromApplyOut.Add(applyOut); } } #region 获取药房已退药确认 住院处尚未退费确认得费申请记录 //该部分获取的对已发药的药品退费申请 药房已做过退药确认 住院处尚未做退费确认的数据 由CancelItem内检索 confirmDrugList = this.returnApplyManager.QueryDrugReturnApplys(this.patientInfo.ID, false, true); if (confirmDrugList != null) { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut; foreach (Neusoft.HISFC.Models.Fee.ReturnApply applyReturn in confirmDrugList) { applyOut = new Neusoft.HISFC.Models.Pharmacy.ApplyOut(); applyOut.ID = applyReturn.ID; //申请流水号 applyOut.BillNO = applyReturn.ApplyBillNO; //申请单据号 applyOut.RecipeNO = applyReturn.RecipeNO; //处方号 applyOut.SequenceNO = applyReturn.SequenceNO; //处方内项目流水号 applyOut.ApplyDept.ID = applyReturn.RecipeOper.Dept.ID; //申请科室 applyOut.Item.Name = applyReturn.Item.Name; //项目名称 applyOut.Item.ID = applyReturn.Item.ID; //项目编码 applyOut.Item.Specs = applyReturn.Item.Specs; //规格 applyOut.Item.Price = applyReturn.Item.Price; //零售价 以最小单位计算的零售价 applyOut.Operation.ApplyQty = applyReturn.Item.Qty; //申请退药数量(乘以付数后的总数量) applyOut.Item.PackQty = applyReturn.Item.PackQty; applyOut.Days = applyReturn.Days; //付数 applyOut.Item.MinUnit = applyReturn.Item.PriceUnit; //计价单位 applyOut.User01 = "0"; //标志该数据由病区退费申请表获得 由applyReturn实体获取 applyOut.User02 = "1"; //标志该数据 药房已退药确认 但住院处尚未退费确认 applyReturnFromApplyOut.Add(applyOut); } } #endregion for (int i = 0; i < applyReturnFromApplyOut.Count; i++) { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = new Neusoft.HISFC.Models.Pharmacy.ApplyOut(); applyOut = applyReturnFromApplyOut[i] as Neusoft.HISFC.Models.Pharmacy.ApplyOut; if (applyOut == null) { return; } //取费用信息 Neusoft.HISFC.Models.Fee.Inpatient.FeeItemList feeItemList; //feeItemList = this.inpatientManager.GetItemListByRecipeNO(applyOut.RecipeNO, applyOut.SequenceNO, true); feeItemList = this.inpatientManager.GetItemListByRecipeNO(applyOut.RecipeNO, applyOut.SequenceNO, HISFC.Models.Base.EnumItemType.Drug); if (feeItemList == null) { MessageBox.Show("获取未核准退费申请信息的费用明细出错"); return; } //临时存储申请科室 feeItemList.ExecOper.Dept.User03 = applyOut.ApplyDept.ID; //获取医生姓名 //string DoctName = ""; //DoctName = this.personHelp.GetName(feeItemList.FeeInfo.ReciptDoct.ID); //feeItemList.FeeInfo.ReciptDoct.Name = DoctName; //获取最小费用名称--Add By Maokb //string MinFee = ""; //MinFee = this.minfeeHelp.GetName(feeItemList.Item.MinFee.ID); //feeItemList.Item.MinFee.Name = MinFee; //获取执行科室名称--Add By Maokb //string DeptName = ""; //DeptName = this.deptHelp.GetName(feeItemList.FeeInfo.ExeDept.ID); //feeItemList.FeeInfo.ExeDept.Name = DeptName; this.fpQuit_SheetDrug.Rows.Add(this.fpQuit_SheetDrug.RowCount, 1); int index = this.fpQuit_SheetDrug.Rows.Count - 1; applyOut.Item.PackQty = feeItemList.Item.PackQty; if (applyOut.Item.PackQty == 0) { applyOut.Item.PackQty = 1; } if (feeItemList.Item.PackQty == 0) { feeItemList.Item.PackQty = 1; } if (applyOut.Days == 0) { applyOut.Days = 1; } decimal iNum = 0; decimal iCost = 0;; if (applyOut.User01 == "0") //该条数据由病区退费申请表获取 根据applyReturn实体获取数据转换为applyOut实体 { iNum = applyOut.Operation.ApplyQty; //申请退药数量(乘以付数后的总数量) iCost = feeItemList.Item.Price * applyOut.Operation.ApplyQty / feeItemList.Item.PackQty; //总金额 } else //该条数据由出库申请表获取 { iNum = Neusoft.FrameWork.Public.String.FormatNumber(applyOut.Operation.ApplyQty * applyOut.Days, 4); //退费数量 iCost = applyOut.Operation.ApplyQty * applyOut.Item.Price / applyOut.Item.PackQty; //总金额 } this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.ItemName, applyOut.Item.Name); this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.Specs, applyOut.Item.Specs); this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.Price, applyOut.Item.Price); this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.Qty, iNum); this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.Unit, feeItemList.Item.PriceUnit); this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.Cost, iCost); this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.FeeDate, feeItemList.FeeOper.OperTime); this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.IsConfirm, feeItemList.IsConfirmed); this.fpQuit_SheetDrug.SetValue(index, (int)DrugColumns.IsApply, false); feeItemList.User02 = applyOut.BillNO; //退费申请单据号 feeItemList.Item.Qty = iNum; feeItemList.FT.TotCost = iCost; feeItemList.User03 = applyOut.ID; //退费申请流水号 feeItemList.User01 = applyOut.User01; // "0" 该条数据由病区退费申请表获取 其他 该条数据由出库申请表获取 feeItemList.Item.User01 = applyOut.User02; //"1" 标志该数据已退药确认 但尚未退费确认 //用于区别是否为已保存过的退费申请 feeItemList.Memo = "OLD"; this.fpQuit_SheetDrug.Rows[index].Tag = feeItemList; } }
void Neusoft.HISFC.BizProcess.Interface.Pharmacy.IDrugPrint.AddSingle(Neusoft.HISFC.Models.Pharmacy.ApplyOut info) { throw new Exception("The method or operation is not implemented."); }
public void Save() { this.phaOutManager.Fp.StopCellEditing(); if (!this.Valid()) { return; } DialogResult rs = MessageBox.Show(Language.Msg("确认向" + this.phaOutManager.TargetDept.Name + "进行出库操作吗?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (rs == DialogResult.No) { return; } this.dt.DefaultView.RowFilter = "1=1"; for (int i = 0; i < this.dt.DefaultView.Count; i++) { this.dt.DefaultView[i].EndEdit(); } DataTable dtAddMofity = this.dt.GetChanges(DataRowState.Added | DataRowState.Modified); if (dtAddMofity == null || dtAddMofity.Rows.Count <= 0) { return; } this.phaOutManager.Fp.StopCellEditing(); Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在进行保存操作..请稍候"); System.Windows.Forms.Application.DoEvents(); #region 事务定义 Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizLogic.Pharmacy.Constant phaCons = new Neusoft.HISFC.BizLogic.Pharmacy.Constant(); Neusoft.HISFC.BizProcess.Integrate.Pharmacy phaIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Pharmacy(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance); //t.BeginTransaction(); this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); //phaIntegrate.SetTrans(t.Trans); //phaCons.SetTrans(t.Trans); #endregion DateTime sysTime = this.itemManager.GetDateTimeFromSysDateTime(); string outListNO = ""; string inListNO = ""; //判断领用科室是否管理库存 bool isManagerStore = phaCons.IsManageStore(this.phaOutManager.TargetDept.ID); //如管理库存 则提示是否确认保存出库 if (isManagerStore) { Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm(); DialogResult rsResult = MessageBox.Show(Language.Msg(this.phaOutManager.TargetDept.Name + "管理库存。确认进行出库操作吗?\n出库时将直接更新对方库存"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (rsResult == DialogResult.No) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); return; } Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在进行保存操作..请稍候"); System.Windows.Forms.Application.DoEvents(); } //一般出库对应的入库记录 Neusoft.HISFC.Models.Pharmacy.Input input = null; //-------原程序处理方式 // //如领用科室管理库存 则只处理出库记录、更新本科室库存 不处理入库记录和领药科室库存 待领药科室入库核准后才处理库存 // //如领药科室不管理库存 则处理出库记录、更新本科室库存,试用期间处理入库记录、更新领药科室库存 // // 正式使用后不处理入库记录和领药科室库存 // //只需对isManagerStore赋值改变 对下边入库记录处理的判断做下修改即可 // //更新领药科室库存的操作封装于入库函数内 和入库记录一同处理 可通过传入参数判断是否处理库存 //-------新程序处理方式 // 一般出库时,不管目标科室是不是管理库存,都直接设置出库记录状态为已核准。 // 目标科室管理库存时,对目标科室产生入库记录,状态为已核准 // 目标科室不管理库存时,对目标科室不产生入库记录 this.alPrintData = new ArrayList(); foreach (DataRow dr in dtAddMofity.Rows) { string key = dr["药品编码"].ToString() + dr["批号"].ToString(); Neusoft.HISFC.Models.Pharmacy.Output output = this.hsOutData[key] as Neusoft.HISFC.Models.Pharmacy.Output; output.Operation.ExamOper.ID = this.phaOutManager.OperInfo.ID; //审核人 output.Operation.ExamOper.OperTime = sysTime; //审核日期 output.Operation.Oper = output.Operation.ExamOper; //操作信息 #region 对数据来源为申请的数据进行处理 if (dr["数据来源"].ToString() == "1") { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.hsApplyData[output.User02] as Neusoft.HISFC.Models.Pharmacy.ApplyOut; applyOut.State = "1"; //状态 审批 applyOut.Operation = output.Operation; //操作信息 if (this.itemManager.UpdateApplyOut(applyOut) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("更新" + output.Item.Name + "出库申请信息时出错"); return; } if (outListNO == "") { outListNO = applyOut.BillNO; } } #endregion #region 获取单据号 if (outListNO == "") { // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式 outListNO = phaIntegrate.GetInOutListNO(this.phaOutManager.DeptInfo.ID, false); if (outListNO == null) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("获取新出库单号出错" + phaIntegrate.Err); return; } } output.OutListNO = outListNO; #endregion #region Output实体必要信息赋值 if (this.isUseMinUnit) //使用最小单位 { output.Quantity = NConvert.ToDecimal(dr["出库数量"]); //出库数量 } else //使用包装单位 { output.Quantity = NConvert.ToDecimal(dr["出库数量"]) * output.Item.PackQty; //出库数量 } output.StoreQty = output.StoreQty - output.Quantity; output.StoreCost = output.StoreQty * output.Item.PriceCollection.RetailPrice / output.Item.PackQty; output.Operation.ExamQty = output.Quantity; //审核数量 output.Memo = dr["备注"].ToString(); output.DrugedBillNO = "0"; //摆药单号 不能为空 output.GetPerson = this.phaOutManager.TargetPerson.ID; //领药人 //----原数据处理方式 //if (isManagerStore) //目标(领用)科室管理库存 // output.State = "1"; //审核 //else // output.State = "2"; //核准 //----现处理方式 对于一般出库 直接设置出库状态为2 output.State = "2"; if (this.isSpecialOut) //特殊出库 直接更新状态为核准 { output.SpecialFlag = "1"; output.State = "2"; } if (output.State == "2") { output.Operation.ApproveOper = output.Operation.Oper; } #endregion #region 以下信息在每次添加新数据时自动生成 output.PrivType = this.phaOutManager.PrivType.ID; //出库类型 output.SystemType = this.phaOutManager.PrivType.Memo; //系统类型 output.StockDept = this.phaOutManager.DeptInfo; //当前科室 output.TargetDept = this.phaOutManager.TargetDept; //目标科室 #endregion #region 形成目标科室的入库记录 #region 根据领药科室是否管理库存 在不管理库存的情况下才处理入库记录 if (!this.isSpecialOut) { input = new Neusoft.HISFC.Models.Pharmacy.Input(); //设置入库单号 if (inListNO == "") { // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式 inListNO = phaIntegrate.GetInOutListNO(this.phaOutManager.TargetDept.ID, false); if (inListNO == null) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("对目标库存科室插入入库记录时获取入库单号出错") + this.itemManager.Err); return; } } //获取关联权限类型 关联权限类型不存在时 设置为默认值 if (this.privJoinClass3 != null) { input.PrivType = this.privJoinClass3.Class3Code; input.SystemType = this.privJoinClass3.Class3MeaningCode; } else { input.PrivType = "01"; //一般入库对应的用户类型 input.SystemType = "11"; //一般入库 } input.State = "2"; //已审批 input.StockDept = this.phaOutManager.TargetDept; //库存部门 input.TargetDept = this.phaOutManager.DeptInfo; //目标科室 供货单位 input.InListNO = inListNO; //入库单据号 input.OutListNO = outListNO; //出库单据号 input.Operation.ExamOper.ID = this.phaOutManager.OperInfo.ID; //审批人 input.Operation.ExamOper.OperTime = sysTime; //审批日期 input.Operation.ApproveOper = input.Operation.ExamOper; input.Operation.ApplyOper = input.Operation.ExamOper; decimal storeQty = 0; if (this.itemManager.GetStorageNum(this.phaOutManager.TargetDept.ID, output.Item.ID, out storeQty) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("获取" + output.Item.Name + "库存数量时发生错误" + this.itemManager.Err)); return; } input.StoreQty = storeQty + output.Quantity; //设置出库记录中对应的入库单据号 output.InListNO = inListNO; } else { input = null; } #endregion #endregion //原处理方式 第三个参数始终传入False if (this.itemManager.Output(output, input, isManagerStore) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("出库保存发生错误" + this.itemManager.Err); return; } this.alPrintData.Add(output); } Neusoft.FrameWork.Management.PublicTrans.Commit(); //for (int i = 0; i < this.dt.DefaultView.Count; i++) //{ // this.dt.DefaultView[i].BeginEdit(); //} Function.ShowMsg("保存成功"); DialogResult rsPrint = MessageBox.Show(Language.Msg("是否打印出库单?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (rsPrint == DialogResult.Yes) { this.Print(); } this.Clear(); }
public void Save() { if (!this.Valid()) { return; } Neusoft.HISFC.BizLogic.Pharmacy.Constant phaConsManager = new Neusoft.HISFC.BizLogic.Pharmacy.Constant(); bool isManagerStore = phaConsManager.IsManageStore(this.phaOutManager.TargetDept.ID); if (!isManagerStore) { MessageBox.Show(Language.Msg(this.phaOutManager.TargetDept.Name + " 不管理库存,不能通过出库审批进行出库"), "", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } DialogResult rs = MessageBox.Show(Language.Msg("确认向" + this.phaOutManager.TargetDept.Name + "进行出库操作吗?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (rs == DialogResult.No) { return; } this.dt.DefaultView.RowFilter = "1=1"; for (int i = 0; i < this.dt.DefaultView.Count; i++) { this.dt.DefaultView[i].EndEdit(); } DataTable dtAddMofity = this.dt.GetChanges(DataRowState.Added | DataRowState.Modified); if (dtAddMofity == null || dtAddMofity.Rows.Count <= 0) { return; } Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在进行保存操作..请稍候"); System.Windows.Forms.Application.DoEvents(); #region 事务定义 Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizLogic.Pharmacy.Constant phaCons = new Neusoft.HISFC.BizLogic.Pharmacy.Constant(); Neusoft.HISFC.BizProcess.Integrate.Pharmacy phaIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Pharmacy(); this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); #endregion DateTime sysTime = this.itemManager.GetDateTimeFromSysDateTime(); string outListNO = ""; this.alPrintData = new ArrayList(); foreach (DataRow dr in dtAddMofity.Rows) { string key = dr["药品编码"].ToString() + dr["批号"].ToString(); Neusoft.HISFC.Models.Pharmacy.Output output = this.hsOutData[key] as Neusoft.HISFC.Models.Pharmacy.Output; if (this.isUseMinUnit) //使用最小单位 { output.Quantity = NConvert.ToDecimal(dr["实发数量"]); //实发数量 } else //使用包装单位 { output.Quantity = NConvert.ToDecimal(dr["实发数量"]) * output.Item.PackQty; //实发数量 } output.StoreQty = output.StoreQty - output.Quantity; output.StoreCost = output.StoreQty * output.Item.PriceCollection.RetailPrice / output.Item.PackQty; output.Memo = dr["备注"].ToString(); output.DrugedBillNO = "0"; //摆药单号 不能为空 output.Operation.ExamOper.ID = this.phaOutManager.OperInfo.ID; //审核人 output.Operation.ExamOper.OperTime = sysTime; //审核日期 output.Operation.ExamQty = output.Quantity; //审核数量 output.Operation.Oper = output.Operation.ExamOper; //操作信息 output.GetPerson = this.phaOutManager.TargetPerson.ID; //领药人 output.State = "1"; //状态 审批 #region 对数据来源为申请的数据进行更新 对本次新添加的数据生成申请信息记录 if (dr["数据来源"].ToString() == "1") { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.hsApplyData[output.User02] as Neusoft.HISFC.Models.Pharmacy.ApplyOut; if (outListNO == "") { outListNO = applyOut.BillNO; } decimal tempApproveQty = applyOut.Operation.ApproveQty; applyOut.Operation = output.Operation; //操作信息 //未选择审批标记 只记录本次待发送的数量 不扣库存处理 if (!NConvert.ToBoolean(dr["审批"])) { //数量累计 applyOut.Operation.ApproveQty = tempApproveQty + output.Quantity; applyOut.State = "0"; } else { applyOut.Operation.ApproveOper = output.Operation.Oper; applyOut.State = "2"; } // {EE05DA01-8969-404d-9A6B-EE8AD0BC1CD0}处理出库审批并发的问题 int resultApplyOut = this.itemManager.UpdateApplyOut(applyOut, true); if (resultApplyOut == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("更新" + output.Item.Name + "出库申请信息时出错"); return; } if (resultApplyOut == 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("该" + output.Item.Name + "申请信息已改变,请重新获取申请信息"); return; } } else { #region 无申请记录 此时只需更改申请人 到底需不需要添加申请信息呢? 不需要 output.Operation.ApplyOper = output.Operation.Oper; //申请人 output.Operation.ApplyQty = output.Quantity; //申请数量 #endregion } #endregion #region 获取单据号 if (outListNO == "") { // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式 outListNO = phaIntegrate.GetInOutListNO(this.phaOutManager.DeptInfo.ID, false); if (outListNO == null) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("获取新出库单号出错" + phaIntegrate.Err); return; } } output.OutListNO = outListNO; #endregion #region 以下信息在每次添加新数据时自动生成 output.PrivType = this.phaOutManager.PrivType.ID; //出库类型 output.SystemType = this.phaOutManager.PrivType.Memo; //系统类型 output.StockDept = this.phaOutManager.DeptInfo; //当前科室 output.TargetDept = this.phaOutManager.TargetDept; //目标科室 #endregion //非药柜科室向药柜出库 进行特殊处理 if (!this.phaOutManager.IsStockArk && this.phaOutManager.IsTargetArk) { if (this.itemManager.ArkOutput(output, this.phaOutManager.IsStockArk, this.phaOutManager.IsTargetArk, false, true) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("出库保存发生错误" + this.itemManager.Err); return; } } else { if (this.itemManager.Output(output, null, false) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("出库保存发生错误" + this.itemManager.Err); return; } } this.alPrintData.Add(output); } Neusoft.FrameWork.Management.PublicTrans.Commit(); Function.ShowMsg("保存成功"); DialogResult rsPrint = MessageBox.Show(Language.Msg("是否打印出库单?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (rsPrint == DialogResult.Yes) { this.Print(); } this.Clear(); }