Beispiel #1
0
        /// <summary>
        /// 获取审批流程明细
        /// </summary>
        /// <param name="approvalTypeId">审批类型id</param>
        /// <param name="bType">单据类型</param>
        /// <param name="proc_code">审批流程编码</param>
        /// <param name="orgids">组织id集合</param>
        /// <returns></returns>
        public GAppvalProcModel GetProcDetail(long approvalTypeId, string bType, string proc_code, List <long> orgids)
        {
            //获取审批流程
            List <GAppvalProcModel> procModels = GAppvalProcFacade.GetAppvalProc(orgids, bType, approvalTypeId);

            if (procModels == null || procModels.Count == 0)
            {
                throw new Exception("审批流程为空!");
            }
            else
            {
                procModels = procModels.FindAll(t => t.FCode == proc_code);
            }

            List <Organize> organizes = new List <Organize>();

            foreach (GAppvalProcModel model in procModels)
            {
                Organize organize = new Organize();
                organize.OrgId   = model.OrgPhid;
                organize.OrgCode = model.OrgCode;
                organize.OrgName = model.OrgName;
                organizes.Add(organize);
            }
            GAppvalProcModel procModel = procModels[0];

            procModel.Organizes = organizes;

            //获取审批流程对应的审批岗位
            List <GAppvalPostModel> postModels = GAppvalPostFacade.FindAppvalPostByProcID(procModel.PhId);

            procModel.PostModels = postModels;

            //获取审批流程的启用条件
            FindedResults <GAppvalProcCondsModel> findedResults = GAppvalProcCondsFacade.Find(t => t.ProcPhid == procModel.PhId);

            if (findedResults != null && findedResults.Data != null && findedResults.Data.Count > 0)
            {
                List <GAppvalProcCondsModel> procCondsModels = findedResults.Data.ToList();
                procModel.CondsModels = procCondsModels;
            }

            return(procModel);
        }
Beispiel #2
0
        /// <summary>
        /// 更新启用组织
        /// </summary>
        /// <param name="procModel"></param>
        /// <returns></returns>
        public int PostUpdateProcOrganize(GAppvalProcModel procModel)
        {
            int result = 0;

            List <long> orgids = procModel.Organizes.Select(t => t.OrgId).ToList();
            //获取审批流程
            List <GAppvalProcModel> existProcModels = GAppvalProcFacade.GetAppvalProc(orgids, procModel.FBilltype, procModel.SPLXPhid);

            if (existProcModels != null)
            {
                existProcModels = existProcModels.FindAll(t => t.FCode == procModel.FCode);
            }
            else
            {
                throw new Exception("审批流程为空!");
            }

            List <long>     deleteOrgs = new List <long>();
            List <Organize> addOrgs    = new List <Organize>();

            foreach (Organize model in procModel.NewOrganizes)
            {
                if (!procModel.Organizes.Exists(t => t.OrgId == model.OrgId))
                {
                    addOrgs.Add(model);
                }
            }

            foreach (Organize model in procModel.Organizes)
            {
                if (!procModel.NewOrganizes.Exists(t => t.OrgId == model.OrgId))
                {
                    deleteOrgs.Add(model.OrgId);
                }
            }

            //获取审批流程和审批岗位的对应关系
            List <GAppvalProc4PostModel> proc4PostModels = GAppvalProc4PostFacade.Find(t => t.ProcPhid == procModel.PhId).Data.ToList();
            //获取审批流程的启用条件
            List <GAppvalProcCondsModel>          procCondsModels = null;
            FindedResults <GAppvalProcCondsModel> findedResults   = GAppvalProcCondsFacade.Find(t => t.ProcPhid == procModel.PhId);

            if (findedResults != null && findedResults.Data != null && findedResults.Data.Count > 0)
            {
                procCondsModels = findedResults.Data.ToList();
            }
            else
            {
                procCondsModels = new List <GAppvalProcCondsModel>();
            }

            //新增审批流程
            foreach (Organize model in addOrgs)
            {
                /*
                 * 这里审批流程添加启用组织,虽然审批流程,审批流程和岗位的对应关系,审批流程条件这些数据都是一样的
                 * 但是也不能直接将查询得到的数据赋值给审批流程对象去保存
                 * 因为循环过程中,每一个保存的审批流程对象,审批流程和岗位的对应关系对象,审批流程条件对象实际指向的都是内存中同一个内存地址,也就是同一个对象
                 * 又因为事务没有提交,循环保存的时候,同一个对象被多次保存,生成不同的主键,会导致报错,
                 * 所有要通过工具类复制一个对象
                 */

                GAppvalProcModel existProcModel = existProcModels[0];
                GAppvalProcModel gAppval        = CommonUtils.TransReflection <GAppvalProcModel, GAppvalProcModel>(existProcModel);
                gAppval.OrgPhid = model.OrgId;
                gAppval.OrgCode = model.OrgCode;

                List <GAppvalProc4PostModel> proc4Posts = new List <GAppvalProc4PostModel>();
                foreach (GAppvalProc4PostModel proc4Post in proc4PostModels)
                {
                    GAppvalProc4PostModel gAppvalProc = CommonUtils.TransReflection <GAppvalProc4PostModel, GAppvalProc4PostModel>(proc4Post);
                    proc4Posts.Add(gAppvalProc);
                }

                List <GAppvalProcCondsModel> condsModels = new List <GAppvalProcCondsModel>();
                foreach (GAppvalProcCondsModel conds in procCondsModels)
                {
                    GAppvalProcCondsModel procCondsModel = CommonUtils.TransReflection <GAppvalProcCondsModel, GAppvalProcCondsModel>(conds);
                    condsModels.Add(procCondsModel);
                }
                gAppval.Proc4PostModels = proc4Posts;
                gAppval.CondsModels     = condsModels;

                //保存审批流程
                SavedResult <Int64> savedResult = GAppvalProcFacade.SaveAppvalProc(gAppval);
                result += savedResult.SaveRows;
            }

            //删除审批流程
            List <GAppvalProcModel> deleteProcs = existProcModels.FindAll(t => deleteOrgs.Contains(t.OrgPhid));

            result += GAppvalProcFacade.DeleteAppvalProc(deleteProcs);


            return(result);
        }