protected override void OnInit(EventArgs e) { if (!IsPostBack) { if (!string.IsNullOrEmpty(Request["BusinessID"])) { var host = new LJTH.BusinessIndicators.Web.AjaxHander.ProcessController(); host.BusinessID = Request["BusinessID"]; if (BPF.Workflow.Client.WFClientSDK.Exist(host.BusinessID)) { BPF.Workflow.Object.WorkflowContext wc = BPF.Workflow.Client.WFClientSDK.GetProcess(null, host.BusinessID); if (!wc.CurrentUserHasTodoTask) { Server.Transfer("~/BusinessReport/TargetApprove.aspx?BusinessID=" + host.BusinessID); } } //WfClientListener.Listen(host, null); //if (WfClientContext.Current.ProcessResponse.FromReadOnly) //{ // HttpContext.Current.Response.Clear(); // Server.Transfer("~/BusinessReport/TargetApprove.aspx?BusinessID=" + host.BusinessID); //} } } PermissionHelper.GetPermission(); if (PermissionHelper.EnablePermission) { PermissionList = PermissionHelper.GetStartProcessList(); ExceptionHelper.TrueThrow <ArgumentNullException>(PermissionList == null, "Argument GetStartProcessList is Empty"); }// ExceptionHelper.TrueThrow<ArgumentNullException>(PermissionList.Count == 0, "Argument GetStartProcessList is Count = 0"); }
/// <summary> /// 添加月度报告数据 /// </summary> public void AddMonthlyReport() { HidSystemID.Value = ddlSystem.SelectedValue; HidAreaID.Value = ddlAreaID.Visible ? ddlAreaID.SelectedValue : Guid.Empty.ToString(); hiddenDis.Value = "2"; //如果存在审批中的数据,不让重复提交 var bmrProgress = B_MonthlyreportOperator.Instance.GetMonthlyReportModel(Guid.Parse(ddlSystem.SelectedValue), Guid.Parse(HidAreaID.Value), FinYear, FinMonth, 1, "Progress"); if (bmrProgress != null && bmrProgress.WFStatus == "Progress") { hiddenDis.Value = "1"; hideMonthReportID.Value = bmrProgress.ID.ToString(); return; } HideProcessCode.Value = StaticResource.Instance[ddlSystem.SelectedValue.ToGuid(), DateTime.Now].Configuration.Element("ProcessCode").Value; hiddenDis.Value = "0"; B_SystemBatch BatchModel = null; // 公用的批次 实体 B_MonthlyReport bmr = null; string Gtypt = StaticResource.Instance[ddlSystem.SelectedValue.ToGuid(), DateTime.Now].GroupType; if (!string.IsNullOrEmpty(Gtypt)) { #region 包含在批次里的数据的业务系统 //判断当前URL是否存在BusinessID if (string.IsNullOrEmpty(Request["BusinessID"])) { B_MonthlyReport _statreRpt = null; //-状态B_MonthlyReport - BatchModel = B_SystemBatchOperator.Instance.GetSystemBatch(Gtypt, FinYear, FinMonth); //判断批次表中是否有数据 if (BatchModel == null) { BatchModel = AddSystemBatch(Gtypt); if (BatchModel == null) { UserControl.SetButtonSpanStyle(2); return; } } else { //批次不为Null,且批次还是在审批中的。 //批次是草稿状态 List <V_SubReport> V_SubReportList = JsonConvert.DeserializeObject <List <V_SubReport> >(BatchModel.SubReport); //获取上报月报的ID var subRpt = V_SubReportList.Find(SR => SR.SystemID == ddlAreaID.SelectedValue.ToGuid()); B_MonthlyReport monthRpt = B_MonthlyreportOperator.Instance.GetMonthlyreport(subRpt.ReportID); #region 批次存在 //审批进行中,是要被跳转到审批页面的,但是审批完成就需要重新开启新的流程 if (BatchModel.WFBatchStatus == "Progress" || monthRpt.WFStatus == "Progress") { //批次是草稿状态 //var model = V_SubReportList.Find(p => p.SystemID == ddlAreaID.SelectedValue.ToGuid()); //--------------------------------------------------------------------------------------------------------------------------------------------- //这里批次需要控制,每次审批的状态只能是唯一的 // 暂时注销掉 BatchModel = AddSystemBatch(); if (BPF.Workflow.Client.WFClientSDK.Exist(monthRpt.ID.ToString())) { BPF.Workflow.Object.WorkflowContext wc = BPF.Workflow.Client.WFClientSDK.GetProcess(null, monthRpt.ID.ToString()); if (!wc.CurrentUserHasTodoTask) { hiddenDis.Value = "1"; hideMonthReportID.Value = monthRpt.ID.ToString(); return; //Server.Transfer("~/BusinessReport/TargetApprove.aspx?BusinessID=" + host.BusinessID); } else { bmr = monthRpt; hideMonthReportID.Value = monthRpt.ID.ToString(); } } } else if (BatchModel.WFBatchStatus == "Approved") //如果审批是完成状态,重新生产 { BatchModel = AddSystemBatch(Gtypt); } else { //批次是草稿状态 V_SubReportList.ForEach(p => { //选择的是那个系统? if (p.SystemID == Guid.Parse(ddlAreaID.SelectedValue)) { //根据选择的系统,将明细数据展示出来 _statreRpt = B_MonthlyreportOperator.Instance.GetMonthlyreport(p.ReportID); if (_statreRpt.WFStatus == "Cancel") //如果当前月报是作废的状态,则重新生产一个新的ID ( 这里针对作废后,重新起一个流程) { _statreRpt.ID = Guid.NewGuid(); //替换实体ID _statreRpt.WFStatus = "Draft"; _statreRpt.Status = 2; Guid _BRptID = B_MonthlyreportOperator.Instance.AddMonthlyreport(_statreRpt); p.ReportID = _BRptID; HiddenBatch.Value = BatchModel.ID.ToString(); //批次ID不变 hideMonthReportID.Value = p.ReportID.ToString(); } else { //注意这里 hideMonthReportID.Value = p.ReportID.ToString(); HiddenBatch.Value = p.ReportID.ToString(); } AddBMRD(_statreRpt); bmr = _statreRpt; MutipleUpload.LoadByBusinessID(_statreRpt.ID.ToString()); } }); //这里重新序列,将作废后,重新生成的新ID 序列化到批次里 BatchModel.SubReport = JsonConvert.SerializeObject(V_SubReportList); B_SystemBatchOperator.Instance.UpdateSystemBatch(BatchModel); } #endregion } UserControl.SetButtonSpanStyle(bmr == null ? -1 : bmr.Status); } else { //如果是传过来的BusinessID,就直接去查询,不做操作 //通过BusinessID,首先获取批次的实体,根据权限,然后在批次中寻找 bmr = B_MonthlyreportOperator.Instance.GetMonthlyreport(Request["BusinessID"].ToGuid()); ExceptionHelper.TrueThrow <ArgumentNullException>(bmr == null ? true : false, "Argument B_MonthlyReport is Null"); HiddenBatch.Value = bmr.SystemBatchID.ToString(); hideMonthReportID.Value = bmr.ID.ToString(); if (bmr.SystemBatchID != Guid.Empty) { //BatchModel = B_SystemBatchOperator.Instance.GetSystemBatch(bmr.SystemBatchID); //List<V_SubReport> rptLsit = JsonConvert.DeserializeObject<List<V_SubReport>>(BatchModel.SubReport); //V_SubReport rptModel = rptLsit.Find(f => f.SystemID == ddlSystem.SelectedValue.ToGuid()); //hideMonthReportID.Value = rptModel.ReportID.ToString(); //bmr = B_MonthlyreportOperator.Instance.GetMonthlyreport(rptModel.ReportID); //ExceptionHelper.TrueThrow<ArgumentNullException>(bmr == null ? true : false, "Argument B_MonthlyReport is Null"); MutipleUpload.LoadByBusinessID(bmr.ID.ToString()); UserControl.SetButtonSpanStyle(bmr.Status); } } #endregion } else { //判断当前URL是否存在BusinessID if (string.IsNullOrEmpty(Request["BusinessID"])) { //添加月报说明 // bmr = B_MonthlyreportOperator.Instance.GetMonthlyReportDraft(Guid.Parse(ddlSystem.SelectedValue), FinYear, FinMonth); bmr = B_MonthlyreportOperator.Instance.GetMonthlyReportDraft(Guid.Parse(ddlSystem.SelectedValue), Guid.Parse(HidAreaID.Value), FinYear, FinMonth); if (bmr == null) { bmr = AddMR(); } else { if (bmr.WFStatus == "Progress" || bmr.WFStatus == "Approved") { bmr = AddMR(); } } //为当前月度经营报告(bmr),插入月度经营明细数据 AddBMRD(bmr); } else { hideMonthReportID.Value = Request["BusinessID"]; bmr = B_MonthlyreportOperator.Instance.GetMonthlyreport(Request["BusinessID"].ToGuid()); ddlSystem.SelectedValue = bmr.SystemID.ToString(); ddlAreaID.SelectedValue = bmr.AreaID.ToString(); FinYear = bmr.FinYear; FinMonth = bmr.FinMonth; lblName.Text = ""; lblName.Text = FinYear + "-" + FinMonth + "月度经营报告上报"; } if (bmr != null) { hideMonthReportID.Value = bmr.ID.ToString(); MutipleUpload.LoadByBusinessID(bmr.ID.ToString()); UserControl.SetButtonSpanStyle(bmr.Status); } else { hiddenDis.Value = "2"; UserControl.SetButtonSpanStyle(-1); } } }
/// <summary> /// 添加月度报告数据 /// </summary> public void AddMonthlyReport() { HidSystemID.Value = ddlSystem.SelectedValue; HideProcessCode.Value = StaticResource.Instance[ddlSystem.SelectedValue.ToGuid(), DateTime.Now].Configuration.Element("ProcessCode").Value; B_SystemBatch BatchModel = null; // 公用的批次 实体 B_MonthlyReport bmr = null; // 公用B_MonthlyReport 实体 //首先判断系统, 是否是包含在批次里 string Gtypt = StaticResource.Instance[ddlSystem.SelectedValue.ToGuid(), DateTime.Now].GroupType; if (!string.IsNullOrEmpty(Gtypt)) { #region 包含在批次里的数据的业务系统 //判断当前URL是否存在BusinessID if (string.IsNullOrEmpty(Request["BusinessID"])) { B_MonthlyReport _statreRpt = null; //-状态B_MonthlyReport - BatchModel = B_SystemBatchOperator.Instance.GetSystemBatch("ProSystem", FinYear, FinMonth); //判断批次表中是否有数据 if (BatchModel == null) { BatchModel = AddSystemBatch(); } else { //批次不为Null,且批次还是在审批中的。 //批次是草稿状态 List <V_SubReport> V_SubReportList = JsonConvert.DeserializeObject <List <V_SubReport> >(BatchModel.SubReport); //获取上报月报的ID var subRpt = V_SubReportList.Find(SR => SR.SystemID == HidSystemID.Value.ToGuid()); B_MonthlyReport monthRpt = B_MonthlyreportOperator.Instance.GetMonthlyreport(subRpt.ReportID); #region 批次存在 //审批进行中,是要被跳转到审批页面的,但是审批完成就需要重新开启新的流程 if (BatchModel.WFBatchStatus == "Progress" || monthRpt.WFStatus == "Progress") { //批次是草稿状态 var model = V_SubReportList.Find(p => p.SystemID == HidSystemID.Value.ToGuid()); //--------------------------------------------------------------------------------------------------------------------------------------------- //这里批次需要控制,每次审批的状态只能是唯一的 // 暂时注销掉 BatchModel = AddSystemBatch(); var host = new LJTH.BusinessIndicators.Web.AjaxHander.ProProcessController(); host.BusinessID = model.ReportID.ToString(); if (BPF.Workflow.Client.WFClientSDK.Exist(host.BusinessID)) { BPF.Workflow.Object.WorkflowContext wc = BPF.Workflow.Client.WFClientSDK.GetProcess(null, host.BusinessID); if (!wc.CurrentUserHasTodoTask) { Server.Transfer("~/BusinessReport/ProTargetApprove.aspx?BusinessID=" + host.BusinessID); } else { bmr = monthRpt; hideMonthReportID.Value = monthRpt.ID.ToString(); } } //WfClientListener.Listen(host, null); //if (WfClientContext.Current.ProcessResponse.FromReadOnly) //{ // HttpContext.Current.Response.Clear(); // Server.Transfer("~/BusinessReport/ProTargetApprove.aspx?BusinessID=" + host.BusinessID); //} //--------------------------------------------------------------------------------------------------------------------------------------------- } else if (BatchModel.WFBatchStatus == "Approved") //如果审批是完成状态,重新生产 { BatchModel = AddSystemBatch(); } else { //批次是草稿状态 V_SubReportList.ForEach(p => { //选择的是那个系统? if (p.SystemID == Guid.Parse(ddlSystem.SelectedValue)) { //根据选择的系统,将明细数据展示出来 _statreRpt = B_MonthlyreportOperator.Instance.GetMonthlyreport(p.ReportID); if (_statreRpt.WFStatus == "Cancel") //如果当前月报是作废的状态,则重新生产一个新的ID ( 这里针对作废后,重新起一个流程) { _statreRpt.ID = Guid.NewGuid(); //替换实体ID _statreRpt.WFStatus = "Draft"; _statreRpt.Status = 2; Guid _BRptID = B_MonthlyreportOperator.Instance.AddMonthlyreport(_statreRpt); p.ReportID = _BRptID; HiddenBatch.Value = BatchModel.ID.ToString(); //批次ID不变 hideMonthReportID.Value = p.ReportID.ToString(); } else { //注意这里 hideMonthReportID.Value = p.ReportID.ToString(); HiddenBatch.Value = p.ReportID.ToString(); } AddBMRD(_statreRpt); bmr = _statreRpt; MutipleUpload.LoadByBusinessID(_statreRpt.ID.ToString()); } }); //这里重新序列,将作废后,重新生成的新ID 序列化到批次里 BatchModel.SubReport = JsonConvert.SerializeObject(V_SubReportList); B_SystemBatchOperator.Instance.UpdateSystemBatch(BatchModel); } #endregion } } else { //如果是传过来的BusinessID,就直接去查询,不做操作 //通过BusinessID,首先获取批次的实体,根据权限,然后在批次中寻找 HiddenBatch.Value = Request["BusinessID"]; bmr = B_MonthlyreportOperator.Instance.GetMonthlyreport(Request["BusinessID"].ToGuid()); ExceptionHelper.TrueThrow <ArgumentNullException>(bmr == null ? true : false, "Argument B_MonthlyReport is Null"); if (bmr.SystemBatchID != Guid.Empty) { BatchModel = B_SystemBatchOperator.Instance.GetSystemBatch(bmr.SystemBatchID); List <V_SubReport> rptLsit = JsonConvert.DeserializeObject <List <V_SubReport> >(BatchModel.SubReport); V_SubReport rptModel = rptLsit.Find(f => f.SystemID == ddlSystem.SelectedValue.ToGuid()); hideMonthReportID.Value = rptModel.ReportID.ToString(); bmr = B_MonthlyreportOperator.Instance.GetMonthlyreport(rptModel.ReportID); ExceptionHelper.TrueThrow <ArgumentNullException>(bmr == null ? true : false, "Argument B_MonthlyReport is Null"); MutipleUpload.LoadByBusinessID(bmr.ID.ToString()); UserControl.SetButtonSpanStyle(bmr.Status); } } #endregion } else { #region 没有包含在批次里系统 if (string.IsNullOrEmpty(Request["BusinessID"])) //正常上报 { //添加月报说明 bmr = B_MonthlyreportOperator.Instance.GetMonthlyReportDraft(Guid.Parse(ddlSystem.SelectedValue), FinYear, FinMonth); if (bmr == null) { bmr = AddMR(); } else { if (bmr.WFStatus == "Progress" || bmr.WFStatus == "Approved") { bmr = AddMR(); } } //为当前月度经营报告(bmr),插入月度经营明细数据 AddBMRD(bmr); hideMonthReportID.Value = bmr.ID.ToString(); } else { hideMonthReportID.Value = Request["BusinessID"]; bmr = B_MonthlyreportOperator.Instance.GetMonthlyreport(Request["BusinessID"].ToGuid()); ddlSystem.SelectedValue = bmr.SystemID.ToString(); FinYear = bmr.FinYear; FinMonth = bmr.FinMonth; lblName.Text = ""; lblName.Text = FinYear + "-" + FinMonth + "月度经营报告上报"; } if (bmr != null) { MutipleUpload.LoadByBusinessID(bmr.ID.ToString()); UserControl.SetButtonSpanStyle(bmr.Status); } #endregion } if (bmr != null) { List <BPF.Workflow.Object.ProcessLog> lstBatchProcessLog = new List <BPF.Workflow.Object.ProcessLog>(); if (bmr.SystemBatchID != Guid.Empty) { //if (BPF.Workflow.Client.WFClientSDK.Exist(bmr.SystemBatchID.ToString())) //{ // lstBatchProcessLog = BPF.Workflow.Client.WFClientSDK.GetProcessLogList(bmr.SystemBatchID.ToString()); //} } //List<BPF.Workflow.Object.ProcessLog> lstCurrentProcessLog = BPF.Workflow.Client.WFClientSDK.GetProcessLogList(bmr.ID.ToString()); //if (lstBatchProcessLog!=null) //{ // lstCurrentProcessLog.AddRange(lstBatchProcessLog); //} //HideOpinions.Value = JsonConvert.SerializeObject(lstCurrentProcessLog.OrderByDescending(p => p.FinishDateTime)); } }