/// <summary> /// /// </summary> private void gotoServerToSave(Guid flowTypeID, List <ApprovalFlowNode> nodeList) { string message; ApprovalFlowType flowType = PharmacyDatabaseService.GetApprovalFlowType(out message, flowTypeID); flowType.ApprovalFlowNodes = nodeList.ToArray(); }
//提交审批 private void toolStripButton3_Click(object sender, EventArgs e) { this.dataGridView1.EndEdit(); if (this.dsOrder == null) { MessageBox.Show("请双击直调列表中要审批的记录!"); return; } if (MessageBox.Show("提交前请检查单据是否已经正确保存,确定要提交该记录至直调销售审批流程吗?审核不通过后,该单据将返回本界面,您可以继续编辑该单据!", "提示", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.Cancel) { return; } this.dsOrder.ApprovalStatusValue = (int)ApprovalStatus.Waitting; ApprovalFlowType at = ((ApprovalFlowType)this.toolStripComboBox2.SelectedItem); bool b = this.PharmacyDatabaseService.AddDirectSaleApproval(this.dsOrder, at.Id, BugsBox.Pharmacy.AppClient.Common.AppClientContext.currentUser.Id, "新增直调销售审批,单号:" + dsOrder.DocumentNumber, out msg); if (b) { MessageBox.Show("申请成功,请审批人员及时审批该单据!"); this.PharmacyDatabaseService.WriteLog(BugsBox.Pharmacy.AppClient.Common.AppClientContext.currentUser.Id, "新增直调审批成功!单号:" + dsOrder.DocumentNumber); } else { MessageBox.Show("申请失败,请联系系统管理员!"); return; } this.ClearCurrent(); }
private void dgvApprovalList_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { string msg = string.Empty; if (dgvApprovalList.Columns[e.ColumnIndex].Name.Equals("事件")) { Guid typeId = Guid.Parse(e.Value.ToString()); ApprovalFlowType type = PharmacyDatabaseService.GetApprovalFlowType(out msg, typeId); e.Value = type.Name; } else if (dgvApprovalList.Columns[e.ColumnIndex].Name.Equals("状态")) { BugsBox.Pharmacy.Models.ApprovalStatus status = (BugsBox.Pharmacy.Models.ApprovalStatus) int.Parse(e.Value.ToString()); var f = typeof(BugsBox.Pharmacy.Models.ApprovalStatus).GetField(status.ToString()); var attr = f.GetCustomAttributes(false); if (attr.Length > 0 && attr[0] as System.ComponentModel.DataAnnotations.DisplayAttribute != null) { e.Value = (attr[0] as System.ComponentModel.DataAnnotations.DisplayAttribute).Name; } else { e.Value = "状态异常"; } } }
/// <summary> /// 移库右键菜单 /// </summary> /// <param name="sender">sender内含tag属性为warehousezone对象</param> /// <param name="e"></param> private void DrugInventoryMoveClick(object sender, EventArgs e) { WarehouseZone wz = ((ToolStripDropDownItem)sender).Tag as WarehouseZone; if (wz.Name == this.comboBox1.SelectedText) { return; } ApprovalFlowType aft = this.PharmacyDatabaseService.GetApprovalFlowTypeByBusiness(out msg, ApprovalType.drugsInventoryMove).FirstOrDefault(); if (aft == null) { MessageBox.Show("请先通知管理员设定移库审批,并设定其审批节点!"); return; } if (MessageBox.Show("确定需要申请该药品移库至:" + wz.Name + "吗?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } Guid InventoryID = storage[this.dataGridView1.SelectedCells[0].RowIndex].InventoryID; DrugInventoryRecord dir = this.PharmacyDatabaseService.GetDrugInventoryRecord(out msg, InventoryID); if (dir == null) { MessageBox.Show("读取库存表失败!"); return; } DrugsInventoryMove dim = new DrugsInventoryMove(); dim.Id = Guid.NewGuid(); dim.ApprovalStatusValue = 1; dim.batchNo = dir.BatchNumber; dim.createTime = DateTime.Now; dim.createUID = BugsBox.Pharmacy.AppClient.Common.AppClientContext.currentUser.Id; dim.Deleted = false; dim.Description = "移库至" + wz.Name; dim.drugName = dir.DrugInfo.ProductGeneralName; dim.flowID = Guid.NewGuid(); dim.inventoryRecordID = dir.Id; dim.OriginWareHouseID = dir.WarehouseZoneId; dim.quantity = dir.CanSaleNum; dim.updateTime = DateTime.Now; dim.WareHouseID = wz.Id; bool b = this.PharmacyDatabaseService.AddDrugsInventoryMoveByFlowID(dim, aft.Id, "新增移库审批", out msg); if (b) { this.PharmacyDatabaseService.WriteLog(dim.createUID, "成功提交移库申请信息:" + dim.drugName + "被成功申请移至" + dim.OriginWareHouseID); if (MessageBox.Show("成功申请移库信息" + wz.Name + ",请至右键菜单->移库记录查询界面查询!需要打开移库记录查询窗口吗?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } Form_DrugInventoryMove frm = new Form_DrugInventoryMove(); frm.ShowDialog(); } }
/// <summary> /// 打开详细的审批对象信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvApprovalList_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0) { return; } //加入详细画面 //this.plDetailView.Container.Add(UserControl); if (dgvApprovalList.Columns[e.ColumnIndex].Name == "查看详细") { Models.ApprovalFlow flow = dgvApprovalList.Rows[e.RowIndex].DataBoundItem as Models.ApprovalFlow; if (flow != null) { string msg = string.Empty; ApprovalFlowType flowType = PharmacyDatabaseService.GetApprovalFlowType(out msg, flow.ApprovalFlowTypeId); switch (flowType.ApprovalTypeValue) { case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitEditApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitLockApproval: ucSupplyUnit uc = new ucSupplyUnit(flow.FlowId); uc.Name = "DetailView"; this.plDetailView.Controls.Add(uc); break; case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoEditApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoLockApproval: ucGoodsInfo ucdi = new ucGoodsInfo(); ucdi.Name = "DetailView"; this.plDetailView.Controls.Add(ucdi); break; case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitEditApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitLockApproval: ucPurchaseUnit ucpu = new ucPurchaseUnit(flow.FlowId); ucpu.Name = "DetailView"; this.plDetailView.Controls.Add(ucpu); break; } } //显示详细 this.plDetailView.BringToFront(); this.plDetailView.Visible = true; } else //打开详细流程记录, 审批流程表(上表)里的一条被选中后,把详细审批过程写入审批流程详细表(下表) { dgvApprovalList_RowEnter(sender, e); } }
/// <summary> /// 处理审核流程 /// </summary> /// <param name="flow"></param> public void SetApproveAction(ApprovalFlow flow, string action, Guid userID, string comment) { try { if (flow.NextNodeID != Guid.Empty) { ApprovalFlowType flowType = BusinessHandlerFactory.ApprovalFlowTypeBusinessHandler.Fetch( f => f.Id == flow.ApprovalFlowTypeId).FirstOrDefault(); //准备审批节点记录表, ApprovalFlowRecord record = BusinessHandlerFactory.ApprovalFlowRecordBusinessHandler.GetApproveFlowRecordInstance(flow, userID, comment); BusinessHandlerFactory.ApprovalFlowRecordBusinessHandler.Add(record); //审批被拒绝 if ("REJECT".Equals(action.ToUpper())) { flow.Status = (int)ApprovalStatus.Reject; UpdateEntityByApprovalStatus(flowType.ApprovalTypeValue, flow.FlowId, ApprovalStatus.Reject); } else { //获取当前节点的下一个节点 ApprovalFlowNode newNextNode = BusinessHandlerFactory.ApprovalFlowNodeBusinessHandler.GetNextApproveFlowsNode(flowType.Id, flow.NextNodeID); if (newNextNode == null) //审批通过,无下个一节点.审批结束 { flow.NextNodeID = Guid.Empty; //审核通过后,下个节点信息保存为空Guid flow.Status = (int)ApprovalStatus.Approvaled; UpdateEntityByApprovalStatus(flowType.ApprovalTypeValue, flow.FlowId, ApprovalStatus.Approvaled); } else //审核通过,更新审核流程的下一个节点信息 { flow.NextNodeID = newNextNode.Id; flow.Status = (int)ApprovalStatus.Waitting; } } this.Save(flow); this.Save(); } } catch (Exception ex) { this.HandleException("处理审批流程失败", ex); } }
private void btnSave_Click(object sender, EventArgs e) { if (MessageBox.Show("确定要提交吗?", "", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.Cancel) { return; } aft = this.PharmacyDatabaseService.GetApprovalFlowTypeByBusiness(out msg, ApprovalType.VehicleApproval).FirstOrDefault(); if (aft == null) { MessageBox.Show("定义委托车辆需定义审批流程,请通知管理员定义该审批流程!"); this.Dispose(); } try { foreach (Control c in this.Controls) { if (c.GetType() == typeof(TextBox)) { if (string.IsNullOrEmpty(c.Text.Trim())) { MessageBox.Show("有未填项!", "警告"); c.Focus(); return; } } } m_Vehicle.Type = this.txtType.Text.Trim(); m_Vehicle.Cubage = this.txtCubage.Text.Trim(); m_Vehicle.Rule = this.txtRule.Text.Trim(); m_Vehicle.Other = this.txtOther.Text.Trim(); m_Vehicle.LicensePlate = this.txtLicensePlate.Text.Trim(); m_Vehicle.Driver = this.txtDriver.Text.Trim(); m_Vehicle.Status = this.chkStatus.Checked; m_Vehicle.VehicleCategoryValue = this.comboBox1.SelectedIndex; m_Vehicle.createUID = (Guid)BugsBox.Pharmacy.AppClient.Common.AppClientContext.CurrentUser.Id; m_Vehicle.DelegateMan = this.txtDelegateMan.Text.Trim(); m_Vehicle.DelegateCompany = this.txtDelegateCompany.Text.Trim(); m_Vehicle.DelegateTel = this.txtDelegateTel.Text.Trim(); m_Vehicle.LiscenceCode = this.textBox2.Text.Trim(); m_Vehicle.DelegateAddr = this.textBox1.Text.Trim(); m_Vehicle.StartDate = this.dateTimePicker1.Value.Date; m_Vehicle.EndDate = this.dateTimePicker2.Value.Date; m_Vehicle.DelegateScope = this.textBox3.Text.Trim(); if (m_state == FormOperation.Add) { if (m_Vehicle.VehicleCategoryValue == 1) { m_Vehicle.FlowID = Guid.NewGuid(); bool b = this.PharmacyDatabaseService.AddVehicleToApprovalByFlowID(m_Vehicle, aft.Id, "新增委托车辆审批", out msg); if (b) { MessageBox.Show("委托车辆信息新增成功!请通知委托车辆信息审批流程人员审查该信息!"); } } else { if (PharmacyDatabaseService.AddVehicle(out msg, m_Vehicle)) { MessageBox.Show("自有车辆信息新增成功!"); } } } else { bool b = PharmacyDatabaseService.SaveVehicle(out msg, m_Vehicle); if (b) { MessageBox.Show("保存成功!"); } } if (!string.IsNullOrEmpty(msg)) { MessageBox.Show(msg, "Error"); return; } ruslt = System.Windows.Forms.DialogResult.Yes; this.Close(); } catch (Exception ex) { MessageBox.Show("保存数据失败!", "系统错误"); Log.Error(ex); this.Close(); } }
/// <summary> /// 打开详细的审批对象信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvApprovalList_CellContentClick(object sender, DataGridViewCellEventArgs e) { try { if (e.RowIndex < 0) { return; } //加入详细画面 if (dgvApprovalList.Columns[e.ColumnIndex].Name == "查看详细") { if (dgvApprovalList.Rows[e.RowIndex].Cells[4].Value != null) { string msg = string.Empty; Models.ApprovalFlow flow = _approveFlowList[e.RowIndex]; ApprovalFlowType flowType = PharmacyDatabaseService.GetApprovalFlowType(out msg, flow.ApprovalFlowTypeId); switch (flowType.ApprovalTypeValue) { case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitEditApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitLockApproval: ucSupplyUnit uc = new ucSupplyUnit(flow.FlowId); uc.Name = "DetailView"; this.plDetailView.Controls.Add(uc); break; case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoEditApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoLockApproval: DrugInfo di = this.PharmacyDatabaseService.GetDrugInfoByFlowID(out msg, flow.FlowId); if (di.BusinessScopeCode.Contains("医疗器械")) { BaseDataManage.FormInstrument frmInstrument = new BaseDataManage.FormInstrument { entity = di, }; Common.SetControls.SetControlReadonly(frmInstrument, true); frmInstrument.FSE = FormStatusEnum.Read; frmInstrument.ShowDialog(); return; } else { ucGoodsInfo ucdi = new ucGoodsInfo(di); Common.SetControls.SetControlReadonly(ucdi, true); ucdi.Name = "DetailView"; this.plDetailView.Controls.Add(ucdi); } break; case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitEditApproval: case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitLockApproval: ucPurchaseUnit ucpu = new ucPurchaseUnit(flow.FlowId); ucpu.Name = "DetailView"; this.plDetailView.Controls.Add(ucpu); break; case (int)BugsBox.Pharmacy.Models.ApprovalType.drugsUnqualityApproval: Business.Models.drugsUnqualificationQuery dq = PharmacyDatabaseService.getDrugsUnqualificationQueryByFlowID(flow.FlowId, out msg); ucDrugsUnqualification ucdu = new ucDrugsUnqualification(dq); ucdu.initApprovalDetail(flow.FlowId); ucdu.Name = "DetailView"; this.plDetailView.Controls.Add(ucdu); break; case (int)ApprovalType.drugsBreakageApproval: DrugsBreakage db = PharmacyDatabaseService.GetDrugsBreakageByFlowID(flow.FlowId, out msg); UcDrugBreakage ucdb = new UcDrugBreakage(db, flow); ucdb.Name = "DetailView"; this.plDetailView.Controls.Add(ucdb); break; case (int)ApprovalType.VehicleApproval: Vehicle v = this.PharmacyDatabaseService.GetVehicleByFlowID(flow.FlowId, out msg); if (v == null) { return; } DataDictionary.FormVehicleEdit frm = new DataDictionary.FormVehicleEdit(v, true); frm.ShowDialog(); return; case (int)ApprovalType.DirectSalesApproval: DirectSalesOrder dso = this.PharmacyDatabaseService.GetDirectSalesOrderByFlowId(flow.FlowId, out msg); UCDirectSales UCDS = new UCDirectSales(dso); UCDS.Name = "DetailView"; this.plDetailView.Controls.Add(UCDS); break; } } //显示详细 this.plDetailView.BringToFront(); this.plDetailView.Visible = true; } else //打开详细流程记录, 审批流程表(上表)里的一条被选中后,把详细审批过程写入审批流程详细表(下表) { dgvApprovalList_RowEnter(sender, e); } } catch (Exception ex) { Log.Error(ex); MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Information); } }