コード例 #1
0
ファイル: GHSubjectFacade.cs プロジェクト: RaoLeigf/msyh
        /// <summary>
        ///  审批组件任务办理时调用(现在流程中没有判断杜绝多个审批节点执行,所以如果单据已审批就修改审批人、审批时间)
        /// </summary>
        /// <param name="ec"></param>
        public void Approve(WorkFlowExecutionContext ec)
        {
            long phid = Convert.ToInt64(ec.BillInfo.PK1);
            var  mst  = base.Find(phid);

            //更改状态为:审批中
            mst.Data.FApproveStatus = Convert.ToInt32(EnumApproveStatus.Approved).ToString();
            mst.Data.FApproveDate   = DateTime.Today;
            mst.Data.FApprover      = base.UserID;
            CurrentRule.Update <Int64>(mst.Data);
            //用 FlowEnd(), 在流程结束时进行操作(approve 方法 在进行审批节点后就会调用,可能存在多个审批节点)
            //long phid = Convert.ToInt64(ec.BillInfo.PK1);
            //var mst = base.Find(phid);
            ////更新状态为已审批
            //if (mst.Data.FApproveStatus != Convert.ToInt32(EnumApproveStatus.Approved).ToString())
            //{
            //    //审批完成时,项目状态为预立项,则项目状态改为立项,审批状态改为未审批
            //    if (mst.Data.FProjStatus == 1)
            //    {
            //        mst.Data.FApproveStatus = Convert.ToInt32(EnumApproveStatus.ToBeRepored).ToString();
            //        mst.Data.FProjStatus = 2;
            //    }
            //    else
            //    {
            //        mst.Data.FApproveStatus = Convert.ToInt32(EnumApproveStatus.Approved).ToString();
            //    }

            //    mst.Data.FApproveDate = DateTime.Now;
            //    mst.Data.FApprover = base.UserID;
            //    CurrentRule.Update<Int64>(mst.Data);
            //}
        }
コード例 #2
0
        public object Approve(JObject paramJo)
        {
            string jsonStr = string.Empty;

            try
            {
                //var bizdata = paramJo["bizdata"].IsNullOrEmpty() == false ? (string)paramJo["bizdata"] : string.Empty;

                WorkFlowExecutionContext ec = new WorkFlowExecutionContext();
                ec.LoadFormJson(paramJo);
                ec.IsMobile = true;
                if (string.IsNullOrEmpty(ec.Remark))
                {
                    ec.Remark = "同意";
                }
                //service.SaveMobileBizData(ec, bizdata);

                service.ExecuteTaskComplete(ec);
                return(AppJsonHelper.ConvertResultToJson(true, string.Empty));
            }
            catch (System.Exception ex)
            {
                return(DCHelper.ErrorMessage(ex.Message));
            }
        }
コード例 #3
0
        public object Transmit(JObject paramJo)
        {
            try
            {
                string newusercode = !paramJo["transmituser"].IsNullOrEmpty() ? (string)paramJo["transmituser"] : string.Empty;
                if (string.IsNullOrEmpty(newusercode))
                {
                    throw new Exception("未设置转签人员");
                }

                WorkFlowExecutionContext ec = new WorkFlowExecutionContext();
                ec.LoadFormJson(paramJo);
                if (string.IsNullOrEmpty(ec.Remark))
                {
                    ec.Remark = "转签";
                }
                ec.IsMobile = true;
                service.ExecuteTaskReassign(ec, newusercode);
                return(AppJsonHelper.ConvertResultToJson(true, string.Empty));
            }
            catch (System.Exception ex)
            {
                return(DCHelper.ErrorMessage(ex.Message));
            }
        }
コード例 #4
0
        public object AddTis(JObject paramJo)
        {
            try
            {
                List <string> userList = new List <string>();
                //var bizData = paramJo["bizdata"].IsNullOrEmpty() == false ? (string)paramJo["bizdata"] : string.Empty;
                var users = paramJo["users"].IsNullOrEmpty() == false ? (string)paramJo["users"] : string.Empty;
                WorkFlowExecutionContext ec = new WorkFlowExecutionContext();
                ec.LoadFormJson(paramJo);
                ec.IsMobile = true;
                if (string.IsNullOrEmpty(ec.Remark))
                {
                    ec.Remark = "加签";
                }
                string[] str = users.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                userList.AddRange(str);

                //service.SaveMobileBizData(ec, bizData);
                service.ExecuteAddSubTasks(ec, userList);
                return(AppJsonHelper.ConvertResultToJson(true, string.Empty));
            }
            catch (System.Exception ex)
            {
                return(DCHelper.ErrorMessage(ex.Message));
            }
        }
コード例 #5
0
        public object RollBack(JObject paramJo)
        {
            try
            {
                //var bizData = paramJo["bizdata"].IsNullOrEmpty() == false ? (string)paramJo["bizdata"] : string.Empty;

                WorkFlowExecutionContext ec = new WorkFlowExecutionContext();
                ec.LoadFormJson(paramJo);
                if (string.IsNullOrEmpty(ec.RollBackNodeID))
                {
                    throw new Exception("未指定回退节点");
                }
                ec.IsMobile = true;
                if (string.IsNullOrEmpty(ec.Remark))
                {
                    ec.Remark = "不同意";
                }

                //service.SaveMobileBizData(ec, bizData);
                service.ExecuteRollBack(ec);
                return(AppJsonHelper.ConvertResultToJson(true, string.Empty));
            }
            catch (System.Exception ex)
            {
                return(DCHelper.ErrorMessage(ex.Message));
            }
        }
コード例 #6
0
        public object CheckCancelApproveValid()
        {
            JObject rst    = new JObject();
            string  taskid = System.Web.HttpContext.Current.Request.Params["taskid"] ?? string.Empty;
            string  piid   = System.Web.HttpContext.Current.Request.Params["piid"] ?? string.Empty;

            try
            {
                NG3.WorkFlow.Engine.Models.ProcInstTraceEntity piEntity;
                try
                {
                    DbHelper.Open();
                    piEntity = WorkFlowDac.Instance.GetProcInstTraceEntity(piid);
                }
                finally
                {
                    DbHelper.Close();
                }

                WorkFlowExecutionContext ec = new WorkFlowExecutionContext(piEntity.BillInfo);
                ec.TaskId   = taskid;
                ec.PiId     = piid;
                ec.IsMobile = true;
                ApproveValidResult r = service.CheckCancelApproveValid(ec);
                rst.Add("result", (int)r.ValidResult);
                rst.Add("msg", r.Msg);
                rst.Add("success", true);
            }
            catch (Exception ex)
            {
                return(DCHelper.ErrorMessage(ex.Message));
            }
            return(rst);
        }
コード例 #7
0
        public object CheckBizSaveByMobileApp(JObject paramJo)
        {
            string jsonStr = string.Empty;

            try
            {
                var bizdata = paramJo["bizdata"].IsNullOrEmpty() == false ? (string)paramJo["bizdata"] : string.Empty;
                WorkFlowExecutionContext ec = new WorkFlowExecutionContext();
                ec.LoadFormJson(paramJo);
                ec.IsMobile = true;
                var    resp   = service.CheckBizSaveByMobileApp(ec, bizdata);
                string status = "ok";
                if (resp.ValidResult == ApproveValidType.No)
                {
                    status = "no";
                }
                else if (resp.ValidResult == ApproveValidType.Clew)
                {
                    status = "clew";
                }
                JObject data = new JObject();
                data.Add("status", status);
                data.Add("msg", resp.Msg);
                return(data);
            }
            catch (System.Exception ex)
            {
                return(DCHelper.ErrorMessage(ex.Message));
            }
        }
コード例 #8
0
        public bool SaveBizDataByMobileApp(WorkFlowExecutionContext ec, Dictionary <string, string> jsonData)
        {
            string bizID      = ec.BillInfo.BizID; //业务类型EFORM0000000130
            string eformid    = bizID.Substring(5);
            string tableNameM = "p_form" + eformid + "_m";
            string tableNameD = "p_form" + eformid + "_d";

            if (jsonData.ContainsKey(tableNameM) && !string.IsNullOrEmpty(jsonData[tableNameM].ToString()))
            {
                DataTable dtM = DataConverterHelper.ToDataTable(jsonData[tableNameM].ToString(), string.Format("select * from {0}", tableNameM));
                DbHelper.Update(dtM, string.Format("select * from {0}", tableNameM));
            }

            //获取所有明细表dt
            DataTable detailList = DbHelper.GetDataTable(string.Format("select tname from ctl_tbl where tname like '{0}%'", tableNameD));

            if (detailList != null && detailList.Rows.Count > 0)
            {
                DataTable[] dtD = new DataTable[detailList.Rows.Count];

                for (int i = 0; i < detailList.Rows.Count; i++)
                {
                    tableNameD = detailList.Rows[i]["tname"].ToString();

                    if (jsonData.ContainsKey(tableNameD) && !string.IsNullOrEmpty(jsonData[tableNameD].ToString()))
                    {
                        dtD[i] = DataConverterHelper.ToDataTable(jsonData[tableNameD].ToString(), string.Format("select * from {0}", tableNameD));
                        DbHelper.Update(dtD[i], string.Format("select * from {0}", tableNameD));
                    }
                }
            }

            return(true);
        }
コード例 #9
0
        public object CreateProcessInstance(JObject paramJo)
        {
            JObject rst = new JObject();

            try
            {
                string flowdesc             = paramJo["flowdesc"].IsNullOrEmpty() ? string.Empty : (string)paramJo["flowdesc"];
                WorkFlowExecutionContext ec = new WorkFlowExecutionContext();
                ec.LoadFormJson(paramJo);
                ec.IsMobile = true;
                string orgId = paramJo["orgId"].IsNullOrEmpty() ? string.Empty : (string)paramJo["orgId"];
                if (!string.IsNullOrEmpty(orgId))
                {
                    ec.OrgId = orgId;
                }
                string piid = service.CreateProcessInstance(ec, 50, flowdesc);
                rst.Add("success", true);
                rst.Add("piid", piid);
            }
            catch (Exception ex)
            {
                return(DCHelper.ErrorMessage(ex.Message));
            }
            return(rst);
        }
コード例 #10
0
        /// <summary>
        /// 流程发起时调用(一般用于修改表单状态为送审中、或是维护表单已挂工作流)
        /// </summary>
        /// <param name="ec"></param>
        public void FlowStart(WorkFlowExecutionContext ec)
        {
            long phid = Convert.ToInt64(ec.BillInfo.PK1);
            var  mst  = base.Find(phid);

            //更改状态为:审批中
            mst.Data.FApprovestatus = Convert.ToInt32(EnumApproveStatus.IsPending).ToString();
            mst.Data.FApprovedate   = DateTime.Now;
            //mst.Data.FDateofdeclaration = DateTime.Now;
            CurrentRule.Update <Int64>(mst.Data);
        }
コード例 #11
0
ファイル: HrRightApplyRule.cs プロジェクト: RaoLeigf/msyh
        //审批
        public void Approve(WorkFlowExecutionContext ec)
        {
            string phid = ec.BillInfo.PK1;

            IUserFacade facade = new SpringObject().GetObject <IUserFacade>("DMC3.Rights.Facade.User");

            List <UserApproveRightsModel> userApproveRights = new List <UserApproveRightsModel>();

            string    billno      = dac.GetHrRightApplyBillNo(phid);
            DataTable applicantDt = dac.GetApplicantDt(billno);

            for (int i = 0; i < applicantDt.Rows.Count; i++)
            {
                UserApproveRightsModel model = new UserApproveRightsModel();
                model.LoginOrgs    = new List <long>();
                model.InfoOrgs     = new List <long>();
                model.UserOrgRoles = new List <UserApproveRightsModel.UserOrgRole>();
                model.HrId         = long.Parse(applicantDt.Rows[i]["hrid"].ToString());
                model.UserId       = long.Parse(applicantDt.Rows[i]["userid"].ToString());
                model.DeptId       = long.Parse(dac.GetApplicantDeptId(model.HrId));
                DataTable OrgDt = GetOrgInfo(model.UserId.ToString(), billno);
                for (int j = 0; j < OrgDt.Rows.Count; j++)
                {
                    if ((bool)OrgDt.Rows[j]["select"] == true)
                    {
                        long orgid = long.Parse(OrgDt.Rows[j]["orgid"].ToString());
                        if (OrgDt.Rows[j]["applicantorg"].ToString() == "登录组织/信息组织")
                        {
                            model.LoginOrgs.Add(orgid);
                            model.InfoOrgs.Add(orgid);
                        }
                        else if (OrgDt.Rows[j]["applicantorg"].ToString() == "信息组织")
                        {
                            model.InfoOrgs.Add(orgid);
                        }
                    }
                }

                DataTable roleDt = dac.GetRoleDtByBillNoNUserId(billno, model.UserId.ToString());
                for (int k = 0; k < roleDt.Rows.Count; k++)
                {
                    UserApproveRightsModel.UserOrgRole userOrgRole = new UserApproveRightsModel.UserOrgRole();
                    userOrgRole.OrgId  = long.Parse(roleDt.Rows[k]["orgid"].ToString());
                    userOrgRole.RoleId = long.Parse(roleDt.Rows[k]["roleid"].ToString());
                    model.UserOrgRoles.Add(userOrgRole);
                }

                userApproveRights.Add(model);
            }

            facade.SaveUserApproveRights(userApproveRights);

            dac.UpdateWorkFlowCheckPsnDate(ec.BillInfo.PK1);
        }
コード例 #12
0
        /// <summary>
        /// 流程被终止时调用
        /// </summary>
        /// <param name="ec"></param>
        public void FlowAbort(WorkFlowExecutionContext ec)
        {
            long phid = Convert.ToInt64(ec.BillInfo.PK1);
            var  mst  = base.Find(phid);

            //更新状态为待上报
            mst.Data.FApprovestatus = Convert.ToInt32(EnumApproveStatus.ToBeRepored).ToString();
            mst.Data.FProjstatus    = 1;//项目立项审批驳回-->从预立项从新修改,发起;状态默认预立项;
            //mst.Data.FDateofdeclaration = new Nullable<DateTime>();
            mst.Data.FApprovedate = new Nullable <DateTime>();
            CurrentRule.Update <Int64>(mst.Data);
        }
コード例 #13
0
        public void FlowAbort(WorkFlowExecutionContext ec)
        {
            string bizID       = ec.BillInfo.BizID; //业务类型EFORM0000000130
            string eformid     = bizID.Substring(5);
            string tableName   = "p_form" + eformid + "_m";
            string code        = ec.BillInfo.PK1;
            string checkUserID = ec.UserId;  //送审人

            string sql = string.Format("update " + tableName + " set is_wf=2 where phid={0}", code);

            int iret = DbHelper.ExecuteNonQuery(string.Format(sql));
        }
コード例 #14
0
        /// <summary>
        /// 审批节点回退时调用进行单据取消审批操作
        /// </summary>
        /// <param name="ec"></param>
        public void CancelApprove(WorkFlowExecutionContext ec)
        {
            long phid = Convert.ToInt64(ec.BillInfo.PK1);
            var  mst  = base.Find(phid);

            //更新状态为审批中
            mst.Data.FApprovestatus = Convert.ToInt32(EnumApproveStatus.IsPending).ToString();
            // mst.Data.FDateofdeclaration = new Nullable<DateTime>();
            mst.Data.FApprovedate = new Nullable <DateTime>();
            CurrentRule.Update <Int64>(mst.Data);

            //throw new NotImplementedException();
        }
コード例 #15
0
        /// <summary>
        /// 流程结束时调用
        /// </summary>
        /// <param name="ec"></param>
        public void FlowEnd(WorkFlowExecutionContext ec)
        {
            long phid = Convert.ToInt64(ec.BillInfo.PK1);
            var  mst  = base.Find(phid);

            //更新状态为已审批
            if (mst.Data.FApprovestatus != Convert.ToInt32(EnumApproveStatus.Approved).ToString())
            {
                mst.Data.FApprovestatus = Convert.ToInt32(EnumApproveStatus.Approved).ToString();
            }

            mst.Data.FApprovedate = DateTime.Today;
            mst.Data.FApprover    = base.UserID;
            CurrentRule.Update <Int64>(mst.Data);
        }
コード例 #16
0
        public object SaveBizDataByMobillApp(JObject paramJo)
        {
            string jsonStr = string.Empty;

            try
            {
                var bizdata = paramJo["bizdata"].IsNullOrEmpty() == false ? (string)paramJo["bizdata"] : string.Empty;

                WorkFlowExecutionContext ec = new WorkFlowExecutionContext();
                ec.LoadFormJson(paramJo);
                ec.IsMobile = true;
                service.SaveMobileBizData(ec, bizdata);
                return(AppJsonHelper.ConvertResultToJson(true, string.Empty));
            }
            catch (System.Exception ex)
            {
                return(DCHelper.ErrorMessage(ex.Message));
            }
        }
コード例 #17
0
        //审批
        public void Approve(WorkFlowExecutionContext ec)
        {
            string bizID       = ec.BillInfo.BizID; //业务类型EFORM0000000130
            string eformid     = bizID.Substring(5);
            string tableName   = "p_form" + eformid + "_m";
            string code        = ec.BillInfo.PK1;
            string checkUserID = ec.UserId;  //送审人
            string pform       = "pform" + eformid;

            if (ec.BizAttachData != null)
            {
                new ServerFuncParserRule().FuncParser(pform, JsonConvert.SerializeObject(ec.BizAttachData));
            }

            string sql = string.Format("update " + tableName + " set ischeck=1, checkpsn='{0}', check_dt='{1}' where phid={2}",
                                       checkUserID, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), code);

            int iret = DbHelper.ExecuteNonQuery(sql);
        }
コード例 #18
0
        public BizToPdfEntity GetBizToPdfEntity(WorkFlowExecutionContext ec)
        {
            try
            {
                string bizID      = ec.BillInfo.BizID; //业务类型EFORM0000000130
                string eformid    = bizID.Substring(5);
                string tableNameM = "p_form" + eformid + "_m";
                string tableNameD = "p_form" + eformid + "_d";
                string code       = ec.BillInfo.PK1;

                DataSet   ds  = new DataSet();
                DataTable dtM = DbHelper.GetDataTable(string.Format("select * from {0} where phid={1}", tableNameM, code));
                dtM.TableName = tableNameM;
                ds.Tables.Add(dtM);

                //获取所有明细表dt
                DataTable detailList = DbHelper.GetDataTable(string.Format("select tname from ctl_tbl where tname like '{0}%'", tableNameD));
                if (detailList != null && detailList.Rows.Count > 0)
                {
                    DataTable[] dtD = new DataTable[detailList.Rows.Count];

                    for (int i = 0; i < detailList.Rows.Count; i++)
                    {
                        dtD[i]           = DbHelper.GetDataTable(string.Format("select * from {0} where m_code={1}", detailList.Rows[i]["tname"].ToString(), code));
                        dtD[i].TableName = detailList.Rows[i]["tname"].ToString() + "grid";
                        ds.Tables.Add(dtD[i]);
                    }
                }

                BizToPdfEntity btpEntity = new BizToPdfEntity();
                btpEntity.DataSource = ds;
                btpEntity.TemplateId = bizID;

                return(btpEntity);
            }
            catch (Exception e)
            {
                string msgStr = "GetBizToPdfEntity:" + e.Message + "\r\n\r\n" + e.StackTrace;
                Logger.Error(msgStr);
                //throw new Exception(msgStr);
                return(null);
            }
        }
コード例 #19
0
        public object GetDesignateInfo([FromUri] ProcessDefModel paramters)
        {
            try
            {
                string billtype = paramters.billtype ?? string.Empty;
                string billcode = paramters.billcode ?? string.Empty;
                string pdid     = paramters.pdid ?? string.Empty;

                WorkFlowBizInfo          biz = new WorkFlowBizInfo(billtype, billcode);
                WorkFlowExecutionContext ec  = new WorkFlowExecutionContext(biz);
                ec.PdId     = pdid;
                ec.UserId   = paramters.userid;
                ec.IsMobile = true;
                return(service.GetDynamicInfo(ec, true));
            }
            catch (System.Exception ex)
            {
                return(DCHelper.ErrorMessage(ex.Message));
            }
        }
コード例 #20
0
 public object Drawback()
 {
     try
     {
         bool   temp = false;
         string piid = System.Web.HttpContext.Current.Request.Params["piid"] ?? string.Empty;
         WorkFlowExecutionContext ec = new WorkFlowExecutionContext();
         ec.PiId   = piid;
         ec.UserId = NG3.AppInfoBase.UserID.ToString();
         service.ExecuteTaskRetrieve(ec, ec.UserId);
         temp = true;
         return(new JObject()
         {
             { "result", temp }
         });
     }
     catch (Exception ex)
     {
         return(DCHelper.ErrorMessage(ex.Message));
     }
 }
コード例 #21
0
        public void CancelApprove(WorkFlowExecutionContext ec)
        {
            string bizID     = ec.BillInfo.BizID; //业务类型EFORM0000000130
            string eformid   = bizID.Substring(5);
            string tableName = "p_form" + eformid + "_m";
            string code      = ec.BillInfo.PK1;
            string pform     = "pform" + eformid;

            if (ec.BizAttachData != null)
            {
                string funcname = ec.BizAttachData["funcname"].ToString();
                if (funcname == "@@##")
                {
                    throw new Exception("取消审批");
                }
                new ServerFuncParserRule().FuncParser(pform, JsonConvert.SerializeObject(ec.BizAttachData));
            }

            string sql = string.Format("update " + tableName + " set ischeck=0, checkpsn='', check_dt=null where phid={0}", code);

            int iret = DbHelper.ExecuteNonQuery(sql);
        }
コード例 #22
0
ファイル: GHSubjectFacade.cs プロジェクト: RaoLeigf/msyh
        /// <summary>
        /// 流程结束时调用
        /// </summary>
        /// <param name="ec"></param>
        public void FlowEnd(WorkFlowExecutionContext ec)
        {
            long phid = Convert.ToInt64(ec.BillInfo.PK1);
            var  mst  = base.Find(phid);

            //更新状态为已审批
            if (mst.Data.FApproveStatus != Convert.ToInt32(EnumApproveStatus.Approved).ToString())
            {
                mst.Data.FApproveStatus = Convert.ToInt32(EnumApproveStatus.Approved).ToString();


                mst.Data.FApproveDate = DateTime.Today;
                mst.Data.FApprover    = base.UserID;
                CurrentRule.Update <Int64>(mst.Data);
            }
            //调整单据审批结束将原调整中改为调整完成
            if (mst.Data.FType == "tz")
            {
                Dictionary <string, object> dicWhere = new Dictionary <string, object>();
                new CreateCriteria(dicWhere)
                .Add(ORMRestrictions <string> .Eq("FDeclarationDept", mst.Data.FDeclarationDept))
                .Add(ORMRestrictions <string> .Eq("FProjAttr", mst.Data.FProjAttr))
                .Add(ORMRestrictions <string> .Eq("FApproveStatus", "6"));
                IList <GHSubjectModel> models = GHSubjectRule.Find(dicWhere);
                if (models.Count > 0)
                {
                    foreach (GHSubjectModel a in models)
                    {
                        a.FApproveStatus = "7";
                        //a.PersistentState = PersistentState.Modified;
                        CurrentRule.Update <Int64>(a);
                    }
                    //GHSubjectRule.Save(models, "");
                    //CurrentRule.Update<Int64>(models);
                }
            }
            //throw new NotImplementedException();
        }
コード例 #23
0
 public ApproveValidResult CheckCancelApproveValid(WorkFlowExecutionContext ec)
 {
     return(ApproveValidResult.Create(ApproveValidType.Yes, string.Empty));
 }
コード例 #24
0
 public ApproveValidResult CheckBizSaveByMobileApp(WorkFlowExecutionContext executionContext, Dictionary <string, string> jsonData)
 {
     return(ApproveValidResult.DefaultValue);
 }
コード例 #25
0
        public List <BizAttachment> GetBizAttachment(WorkFlowExecutionContext ec)
        {
            string bizID                  = ec.BillInfo.BizID; //业务类型EFORM0000000130
            string eformid                = bizID.Substring(5);
            string code                   = ec.BillInfo.PK1;
            string tableNameM             = "p_form" + eformid + "_m";
            string tableNameD             = "p_form" + eformid + "_d";
            List <BizAttachment> lbizatts = new List <BizAttachment>();

            //主表附件
            DataTable mstattdt = DbHelper.GetDataTable(string.Format(@"select * from attachment_record where asr_attach_table = 'c_pfc_attachment'
                and asr_table = '{0}' and asr_code = '{1}'", tableNameM, code));

            if (mstattdt != null && mstattdt.Rows.Count > 0)
            {
                foreach (DataRow row in mstattdt.Rows)
                {
                    BizAttachment mstbizatt = new BizAttachment();
                    mstbizatt.AsrAttachTable = "c_pfc_attachment";
                    mstbizatt.AsrCode        = code;
                    mstbizatt.AsrTable       = tableNameM;
                    mstbizatt.AttachName     = row["asr_name"].ToString();
                    mstbizatt.AttachSize     = Convert.ToSingle(row["asr_size"]);
                    mstbizatt.AttachTime     = Convert.ToDateTime(row["asr_filldt"]);
                    lbizatts.Add(mstbizatt);
                }
            }

            //明细表附件
            DataTable detailList = DbHelper.GetDataTable(string.Format("select tname from ctl_tbl where tname like '{0}%'", tableNameD));  //获取所有明细表dt

            if (detailList != null && detailList.Rows.Count > 0)
            {
                DataTable[] dtD      = new DataTable[detailList.Rows.Count]; //所有明细表数据
                DataTable[] detattdt = new DataTable[detailList.Rows.Count]; //每张明细表附件数据

                for (int i = 0; i < detailList.Rows.Count; i++)
                {
                    tableNameD = detailList.Rows[i]["tname"].ToString();
                    dtD[i]     = DbHelper.GetDataTable(string.Format("select phid from {0} where m_code = {1}", tableNameD, code));

                    if (dtD[i] != null && dtD[i].Rows.Count > 0)
                    {
                        string detasrcodes = string.Empty;
                        foreach (DataRow row in dtD[i].Rows)
                        {
                            detasrcodes += "'" + row["phid"].ToString() + "'" + ",";
                        }
                        detasrcodes = detasrcodes.TrimEnd(',');

                        detattdt[i] = DbHelper.GetDataTable(string.Format(@"select * from attachment_record where asr_attach_table = 'c_pfc_attachment'
                            and asr_table = '{0}' and asr_code in ({1})", tableNameD, detasrcodes));

                        foreach (DataRow row in detattdt[i].Rows)
                        {
                            BizAttachment detbizatt = new BizAttachment();
                            detbizatt.AsrAttachTable = "c_pfc_attachment";
                            detbizatt.AsrCode        = row["asr_code"].ToString();
                            detbizatt.AsrTable       = tableNameD;
                            detbizatt.AttachName     = row["asr_name"].ToString();
                            detbizatt.AttachSize     = Convert.ToSingle(row["asr_size"]);
                            detbizatt.AttachTime     = Convert.ToDateTime(row["asr_filldt"]);
                            lbizatts.Add(detbizatt);
                        }
                    }
                }
            }

            return(lbizatts);
        }
コード例 #26
0
 public void EditUserTaskComplete(string compId, WorkFlowExecutionContext ec)
 {
 }
コード例 #27
0
ファイル: WorkFlowExecuter.cs プロジェクト: xixiky/xms
 public virtual WorkFlowExecutionResult OnExecuted(WorkFlowExecutionContext context, WorkFlowExecutionResult result)
 {
     return(result);
 }
コード例 #28
0
 /// <summary>
 /// 获取单据附用(用于App端)
 /// </summary>
 /// <param name="executionContext"></param>
 /// <returns></returns>
 public List <BizAttachment> GetBizAttachment(WorkFlowExecutionContext executionContext)
 {
     return(new List <BizAttachment>());
 }
コード例 #29
0
 /// <summary>
 /// app端办理时如果修改了单据内容则调用该方法进行单据保存。
 /// </summary>
 /// <param name="executionContext"></param>
 /// <param name="jsonData"></param>
 /// <returns></returns>
 public bool SaveBizDataByMobileApp(WorkFlowExecutionContext executionContext, Dictionary <string, string> jsonData)
 {
     return(true);
     //throw new NotImplementedException();
 }
コード例 #30
0
ファイル: WorkFlowExecuter.cs プロジェクト: xixiky/xms
        /// <summary>
        /// 执行工作流
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <WorkFlowExecutionResult> ExecuteAsync(WorkFlowExecutionContext context)
        {
            var result = new WorkFlowExecutionResult();

            OnExecuting(context, result);
            _eventPublisher.Publish(new WorkFlowExecutingEvent {
                Context = context
            });
            try
            {
                _workFlowInstanceService.BeginTransaction();
                //更新当前步骤处理状态
                _workFlowProcessUpdater.Update(n => n
                                               .Set(f => f.StateCode, context.ProcessState)
                                               .Set(f => f.HandleTime, DateTime.Now)
                                               .Set(f => f.Description, context.Description)
                                               .Set(f => f.Attachments, context.Attachments)
                                               .Where(f => f.WorkFlowProcessId == context.ProcessInfo.WorkFlowProcessId)
                                               );
                //上传附件
                await _attachmentCreater.CreateManyAsync(context.EntityMetaData.EntityId, context.ProcessInfo.WorkFlowProcessId, context.AttachmentFiles).ConfigureAwait(false);

                //更新当前步骤其他处理者状态
                _workFlowProcessUpdater.Update(n => n
                                               .Set(f => f.StateCode, WorkFlowProcessState.Disabled)
                                               .Where(f => f.WorkFlowInstanceId == context.ProcessInfo.WorkFlowInstanceId && f.StepOrder == context.ProcessInfo.StepOrder && f.WorkFlowProcessId != context.ProcessInfo.WorkFlowProcessId)
                                               );
                var nextI     = context.ProcessInfo.StepOrder + 1;
                var nextSteps = _workFlowProcessFinder.Query(n => n.Where(f => f.WorkFlowInstanceId == context.ProcessInfo.WorkFlowInstanceId && f.StepOrder == nextI));
                //如果到了最后一个环节
                if (nextSteps.IsEmpty())
                {
                    //如果同意
                    if (context.ProcessState == WorkFlowProcessState.Passed)
                    {
                        //更新单据状态为审批通过
                        //_workFlowProcessUpdater.UpdateObjectProcessState(context.EntityMetaData, context.InstanceInfo.ObjectId, context.ProcessState);
                        //更新本次申请状态为完成
                        _workFlowInstanceService.Update(n => n
                                                        .Set(f => f.StateCode, context.ProcessState)
                                                        .Set(f => f.CompletedOn, DateTime.Now)
                                                        .Where(f => f.WorkFlowInstanceId == context.InstanceInfo.WorkFlowInstanceId)
                                                        );
                    }
                    //如果驳回
                    else if (context.ProcessState == WorkFlowProcessState.UnPassed)
                    {
                        //var steps = this.Query(n => n.Where(f => f.WorkFlowInstanceId == context.RunnerInfo.WorkFlowInstanceId));
                        ////第一步
                        //if (context.ProcessInfo.ReturnType == (int)WorkFlowStepReturnType.FirstStep)
                        //{
                        //    //重新生成审批步骤
                        //    steps.ForEach((n) =>
                        //    {
                        //        n.WorkFlowProcessId = Guid.NewGuid();
                        //        n.Attachments = 0;
                        //        n.Description = string.Empty;
                        //        n.CreatedOn = DateTime.Now;
                        //        n.HandleTime = null;
                        //        n.StartTime = DateTime.Now;
                        //        n.StateCode = WorkFlowProcessState.Waiting;
                        //    });
                        //    this.CreateMany(steps);
                        //}
                        ////上一步
                        //else if (context.ProcessInfo.ReturnType == (int)WorkFlowStepReturnType.PrevStep)
                        //{
                        //    var newSteps = new List<WorkFlowProcess>();
                        //    //重新生成上一步、当前步的审批步骤
                        //    var prevStep = steps.Find(n => n.StepOrder == context.ProcessInfo.StepOrder - 1);
                        //    prevStep.WorkFlowProcessId = Guid.NewGuid();
                        //    prevStep.Attachments = 0;
                        //    prevStep.Description = string.Empty;
                        //    prevStep.CreatedOn = DateTime.Now;
                        //    prevStep.HandleTime = null;
                        //    prevStep.StartTime = DateTime.Now;
                        //    prevStep.StateCode = WorkFlowProcessState.Waiting;
                        //    newSteps.Add(prevStep);
                        //    var currentStep = new WorkFlowProcess();
                        //    currentStep.WorkFlowProcessId = Guid.NewGuid();
                        //    currentStep.WorkFlowInstanceId = context.RunnerInfo.WorkFlowInstanceId;
                        //    currentStep.Attachments = 0;
                        //    currentStep.Description = string.Empty;
                        //    currentStep.CreatedOn = DateTime.Now;
                        //    currentStep.HandleTime = null;
                        //    currentStep.StartTime = DateTime.Now;
                        //    currentStep.StateCode = WorkFlowProcessState.Waiting;
                        //    newSteps.Add(currentStep);
                        //    this.CreateMany(newSteps);
                        //}
                        ////某一步
                        //else if (context.ProcessInfo.ReturnType == (int)WorkFlowStepReturnType.SpecifyStep)
                        //{
                        //    var newSteps = new List<WorkFlowProcess>();
                        //    //重新生成指定步骤、及后续步骤
                        //    steps.Where(n => n.StepOrder >= context.ProcessInfo.ReturnTo).ToList().ForEach((n) =>
                        //    {
                        //        n.WorkFlowProcessId = Guid.NewGuid();
                        //        n.Attachments = 0;
                        //        n.Description = string.Empty;
                        //        n.CreatedOn = DateTime.Now;
                        //        n.HandleTime = null;
                        //        n.StartTime = DateTime.Now;
                        //        n.StateCode = WorkFlowProcessState.Waiting;
                        //        newSteps.Add(n);
                        //    });
                        //    this.CreateMany(newSteps);
                        //}
                        ////重新提交
                        //else if (context.ProcessInfo.ReturnType == (int)WorkFlowStepReturnType.ReSubmit)
                        //{
                        //    //更新单据状态为审批不通过
                        //    this.UpdateObjectProcessState(context.RunnerInfo.EntityId, context.RunnerInfo.ObjectId, context.ProcessState, context.EntityMetaData.Name);
                        //    //更新当前流程实例状态为完成
                        //    runnerService.Update(n => n
                        //        .Set(f => f.StateCode, context.ProcessState)
                        //            .Set(f => f.CompletedOn, DateTime.Now)
                        //        .Where(f => f.WorkFlowInstanceId == context.RunnerInfo.WorkFlowInstanceId)
                        //    );
                        //}
                        //更新单据状态为审批不通过
                        //_workFlowProcessUpdater.UpdateObjectProcessState(context.EntityMetaData, context.InstanceInfo.ObjectId, context.ProcessState);
                        //更新当前流程实例状态为完成
                        _workFlowInstanceService.Update(n => n
                                                        .Set(f => f.StateCode, context.ProcessState)
                                                        .Set(f => f.CompletedOn, DateTime.Now)
                                                        .Where(f => f.WorkFlowInstanceId == context.InstanceInfo.WorkFlowInstanceId)
                                                        );
                    }
                }
                //如果还有下一步
                else
                {
                    //驳回
                    if (context.ProcessState == WorkFlowProcessState.UnPassed)
                    {
                        //    //更新未处理的步骤状态为作废
                        //    this.Update(n => n.Set(f => f.StateCode, WorkFlowProcessState.Disabled).Where(f => f.WorkFlowInstanceId == context.RunnerInfo.WorkFlowInstanceId && f.StateCode == WorkFlowProcessState.Waiting));
                        //    //第一步
                        //    if (context.ProcessInfo.ReturnType == (int)WorkFlowStepReturnType.FirstStep)
                        //    {
                        //        var steps = this.Query(n => n.Where(f => f.WorkFlowInstanceId == context.RunnerInfo.WorkFlowInstanceId));
                        //        //重新生成审批步骤
                        //        steps.ForEach((n) =>
                        //        {
                        //            n.WorkFlowProcessId = Guid.NewGuid();
                        //            n.Attachments = 0;
                        //            n.Description = string.Empty;
                        //            n.CreatedOn = DateTime.Now;
                        //            n.HandleTime = null;
                        //            n.StartTime = DateTime.Now;
                        //            n.StateCode = WorkFlowProcessState.Waiting;
                        //        });
                        //        this.CreateMany(steps);
                        //    }
                        //    //上一步
                        //    else if (context.ProcessInfo.ReturnType == (int)WorkFlowStepReturnType.PrevStep)
                        //    {
                        //    }
                        //    //某一步
                        //    else if (context.ProcessInfo.ReturnType == (int)WorkFlowStepReturnType.SpecifyStep)
                        //    {
                        //    }
                        //    //重新提交
                        //    else if (context.ProcessInfo.ReturnType == (int)WorkFlowStepReturnType.ReSubmit)
                        //    {
                        //        //更新单据状态为审批不通过
                        //        this.UpdateObjectProcessState(context.RunnerInfo.EntityId, context.RunnerInfo.ObjectId, context.ProcessState, context.EntityMetaData.Name);
                        //        //更新当前流程实例状态为完成
                        //        runnerService.Update(n => n
                        //            .Set(f => f.StateCode, context.ProcessState)
                        //            .Set(f => f.CompletedOn, DateTime.Now)
                        //            .Where(f => f.WorkFlowInstanceId == context.RunnerInfo.WorkFlowInstanceId)
                        //        );
                        //        //更新未处理的步骤状态为作废
                        //        this.Update(n => n.Set(f => f.StateCode, WorkFlowProcessState.Disabled).Where(f => f.WorkFlowInstanceId == context.RunnerInfo.WorkFlowInstanceId && f.StateCode == WorkFlowProcessState.Waiting));
                        //    }
                        //更新单据状态为审批不通过
                        //_workFlowProcessUpdater.UpdateObjectProcessState(context.EntityMetaData, context.InstanceInfo.ObjectId, context.ProcessState);
                        //更新当前流程实例状态为完成
                        _workFlowInstanceService.Update(n => n
                                                        .Set(f => f.StateCode, context.ProcessState)
                                                        .Set(f => f.CompletedOn, DateTime.Now)
                                                        .Where(f => f.WorkFlowInstanceId == context.InstanceInfo.WorkFlowInstanceId)
                                                        );
                        //更新未处理的步骤状态为作废
                        _workFlowProcessUpdater.Update(n => n.Set(f => f.StateCode, WorkFlowProcessState.Disabled).Where(f => f.WorkFlowInstanceId == context.InstanceInfo.WorkFlowInstanceId && f.StateCode == WorkFlowProcessState.Waiting));
                    }
                    //同意则转交到下一个处理人
                    else if (context.ProcessState == WorkFlowProcessState.Passed)
                    {
                        //更新下一步骤处理状态为处理中
                        _workFlowProcessUpdater.Update(n => n.Set(f => f.StateCode, WorkFlowProcessState.Processing).Set(f => f.StartTime, DateTime.Now)
                                                       .Where(f => f.WorkFlowInstanceId == context.InstanceInfo.WorkFlowInstanceId && f.StepOrder == nextI));

                        result.NextHandlerId = _workFlowHandlerFinder.GetCurrentHandlerId(context.InstanceInfo, context.ProcessInfo, nextSteps.First().HandlerIdType, nextSteps.First().Handlers);
                    }
                }
                _workFlowInstanceService.CompleteTransaction();
                result.IsSuccess = true;
            }
            catch (Exception e)
            {
                _workFlowInstanceService.RollBackTransaction();
                result.IsSuccess = false;
                result.Message   = e.Message;
                _logService.Error(e);
            }
            OnExecuted(context, result);
            _eventPublisher.Publish(new WorkFlowExecutedEvent {
                Context = context, Result = result
            });
            return(result);
        }