/// <summary> /// 获取最后一次签名的内容 /// </summary> /// <returns></returns> static public string GetLastSignContext(ReportContextData reportData) { JReportSignInfo signInfo = reportData.签名信息; for (int i = signInfo.签名明细.Count - 1; i >= 0; i--) { JReportSignItem signItem = signInfo.签名明细[i]; if (string.IsNullOrEmpty(signItem.签名报告)) { continue; } return(signItem.签名报告); } return(""); }
private void dataGridView1_SelectionChanged(object sender, EventArgs e) { try { if (_isBinding) { return; } previewControl1.ImportByXml(""); if (dataGridView1.DataSource == null) { return; } if (dataGridView1.SelectedRows.Count <= 0) { return; } DataGridViewRow dvr = dataGridView1.SelectedRows[0]; string signKey = dvr.Cells["Key"].Value.ToString(); JReportSignItem signItem = _reportData.签名信息.签名明细.Find(T => T.Key == signKey); if (signItem != null) { previewControl1.ImportByXml(signItem.签名报告); previewControl1.ReadOnly = true; } } catch (Exception ex) { MsgBox.ShowException(ex, this); } }
/// <summary> /// 获取审核次数 /// </summary> /// <param name="reportData"></param> /// <returns></returns> static public int GetAuditingCount(ReportContextData reportData) { JReportSignInfo signInfo = reportData.签名信息; if (signInfo.签名明细.Count <= 0) { return(0); } int signCount = -1; string signName = reportData.报告信息.报告医生; for (int i = 0; i <= signInfo.签名明细.Count - 1; i++) { JReportSignItem signItem = signInfo.签名明细[i]; if (i == 0 && signName != signItem.用户名称) { return(signCount); } if (i == 0) { //为0 表示诊断签名,如果有签名,需要将signcount设置为0以便后续审核自增 signCount = signCount + 1; } else { if (signItem.是否修订 == false && signItem.是否审核) { signCount = signCount + 1; } } } return(signCount); }
private void tsbBack_Click(object sender, EventArgs e) { try { if (dataGridView1.DataSource == null || dataGridView1.SelectedRows.Count <= 0) { MessageBox.Show("请选择需要回退到的报告签名。", "提示"); return; } if (_reportData.签名信息 == null || _reportData.签名信息.签名明细.Count <= 0) { MessageBox.Show("报告尚未进行签名,不能进行回退处理。", "提示"); return; } if (_reportData.状态信息.是否已完结) { MessageBox.Show("报告已完结,不能进行回退处理。", "提示"); return; } JReportSignInfo signInfo = _reportData.签名信息; JReportSignItem signLast = signInfo.签名明细[signInfo.签名明细.Count - 1]; if (signLast.用户名称 != _userData.Name) { if (_userData.Level < signLast.用户级别) { MessageBox.Show("报告最后已由 [" + signLast.用户名称 + "] 处理,无权进行回退。", "提示"); return; } if (_userData.Level == signLast.用户级别) { if (!(_reportPars.EqualAdutingLevel > -1 && _userData.Level >= _reportPars.EqualAdutingLevel)) { MessageBox.Show("报告最后已由 [" + signLast.用户名称 + "] 处理,无权进行回退。", "提示"); return; } } } DataGridViewRow dvr = dataGridView1.SelectedRows[0]; string signKey = dvr.Cells["Key"].Value.ToString(); int backIndex = signInfo.签名明细.FindIndex(T => T.Key == signKey); if (backIndex < 0) { MessageBox.Show("未找到对应签名信息,不能进行回退。", "提示"); return; } JReportSignItem signback = signInfo.签名明细[backIndex]; if (signback == null) { MessageBox.Show("当前所选签名无效,不能进行回退。", "提示"); return; } if (CheckStateChange(_reportData) == false) { return; } string reason = ""; using (frmReason backReason = new frmReason()) { reason = backReason.ShowReason(this); } if (string.IsNullOrEmpty(reason)) { return; } //报告回退处理 _reportData.状态信息.签名状态 = signback.签名时状态; _reportData.状态信息.最后更新时间 = _reportModel.GetServerDate(); _reportData.报告信息.最后审签人 = ""; _reportData.报告信息.最后审签时间 = default(DateTime); JReportBackItem backItem = new JReportBackItem(); backItem.回退人 = _userData.Name; backItem.回退原因 = reason; backItem.回退时间 = _reportModel.GetServerDate(); backItem.终签状态 = signLast.CloneTo(); _reportData.回退信息.回退明细.Add(backItem); //配置回退签名后的报告 if (backIndex > 0) { JReportSignItem signNext = signInfo.签名明细[backIndex - 1]; if (string.IsNullOrEmpty(signNext.签名报告) == false) { previewControl1.ImportByXml(signNext.签名报告); } else { //获取上次签名的内容 for (int i = backIndex - 1; i >= 0; i--) { JReportSignItem signItem = signInfo.签名明细[backIndex]; if (string.IsNullOrEmpty(signItem.签名报告)) { continue; } previewControl1.ImportByXml(signItem.签名报告); break; } } } else { previewControl1.ImportByXml(signback.签名报告); } previewControl1.ReadOnly = true; for (int i = signInfo.签名明细.Count - 1; i >= backIndex; i--) { signInfo.签名明细.RemoveAt(i); } //调整审核签名状态 int auditCount = ReportPublic.GetAuditingCount(_reportData); if (auditCount > 0) { //写入最后审核人 _reportData.报告信息.最后审签人 = signInfo.签名明细[signInfo.签名明细.Count - 1].用户名称; _reportData.报告信息.最后审签时间 = signInfo.签名明细[signInfo.签名明细.Count - 1].签名时间; } if (auditCount < 3) { previewControl1.SetItemValue(SignElementNameDefine.级审签, ""); previewControl1.setImage("[图片]" + SignElementNameDefine.级审签, null, new Size(0, 0)); previewControl1.SetItemReMark(SignElementNameDefine.级审签, ""); previewControl1.SetItemReMark("[图片]" + SignElementNameDefine.级审签, ""); } if (auditCount < 2) { previewControl1.SetItemValue(SignElementNameDefine.二级审签, ""); previewControl1.setImage("[图片]" + SignElementNameDefine.二级审签, null, new Size(0, 0)); previewControl1.SetItemReMark(SignElementNameDefine.二级审签, ""); previewControl1.SetItemReMark("[图片]" + SignElementNameDefine.二级审签, ""); } if (auditCount < 1) { previewControl1.SetItemValue(SignElementNameDefine.一级审签, ""); previewControl1.setImage("[图片]" + SignElementNameDefine.一级审签, null, new Size(0, 0)); previewControl1.SetItemReMark(SignElementNameDefine.一级审签, ""); previewControl1.SetItemReMark("[图片]" + SignElementNameDefine.一级审签, ""); } if (signInfo.签名明细.Count <= 0) { previewControl1.SetItemValue(SignElementNameDefine.记录签名, ""); previewControl1.setImage("[图片]" + SignElementNameDefine.记录签名, null, new Size(0, 0)); previewControl1.SetItemReMark(SignElementNameDefine.记录签名, ""); previewControl1.SetItemReMark("[图片]" + SignElementNameDefine.记录签名, ""); previewControl1.SetItemValue(SignElementNameDefine.诊断签名, ""); previewControl1.setImage("[图片]" + SignElementNameDefine.诊断签名, null, new Size(0, 0)); previewControl1.SetItemReMark(SignElementNameDefine.诊断签名, ""); previewControl1.SetItemReMark("[图片]" + SignElementNameDefine.诊断签名, ""); _reportData.报告信息.报告医生 = ""; _reportData.报告信息.报告时间 = default(DateTime); } _reportData.报告信息.报告内容 = previewControl1.ExportXmlf(); _reportData.报告信息.CopyBasePro(_reportData); _reportModel.BackReportSign(_reportData); _IsOk = true; LoadSignInfo(); } catch (Exception ex) { MsgBox.ShowException(ex, this); } }
private void tsbCancel_Click(object sender, EventArgs e) { try { if (dataGridView1.DataSource == null || dataGridView1.SelectedRows.Count <= 0) { MessageBox.Show("请选择需要撤销的驳回信息。", "提示"); return; } if (dataGridView1.SelectedRows[0] != dataGridView1.Rows[0]) { MessageBox.Show("只能撤销最后一次驳回信息。", "提示"); return; } //验证用户级别 JReportSignInfo signInfo = _reportData.签名信息; JReportSignItem signLast = signInfo.签名明细[signInfo.签名明细.Count - 1]; if (signLast.用户名称 != _userData.Name) { if (_userData.Level < signLast.用户级别) { MessageBox.Show("报告最后已由 [" + signLast.用户名称 + "] 处理,无权进行撤销。", "提示"); return; } if (_userData.Level == signLast.用户级别) { if (!(_reportPars.EqualAdutingLevel > -1 && _userData.Level >= _reportPars.EqualAdutingLevel)) { MessageBox.Show("报告最后已由 [" + signLast.用户名称 + "] 处理,无权进行撤销。", "提示"); return; } } } //检查状态是否改变 if (CheckStateChange(_reportData) == false) { return; } DataGridViewRow dvr = dataGridView1.SelectedRows[0]; string rejectKey = dvr.Cells["Key"].Value.ToString(); JReportRejectInfo rejectInfo = _reportData.驳回信息; int backIndex = rejectInfo.驳回明细.FindIndex(T => T.Key == rejectKey); if (backIndex < 0) { MessageBox.Show("未找到对应驳回信息,不能进行撤销。", "提示"); return; } JReportRejectItem rejectItem = rejectInfo.驳回明细[backIndex]; if (rejectItem == null) { MessageBox.Show("当前所选驳回信息无效,不能进行撤销。", "提示"); return; } if (rejectItem.驳回状态 != 0) { MessageBox.Show("当前驳回已被处理,不能进行撤销。", "提示"); return; } rejectItem.驳回状态 = (int)ReportRejectState.rrsCanceled; _reportData.状态信息.是否驳回中 = false; _reportData.状态信息.最后更新时间 = _reportDbModel.GetServerDate(); _reportDbModel.RejectReport(_reportData); _isOk = true; } catch (Exception ex) { MsgBox.ShowException(ex, this); } }