예제 #1
0
        public TTaskFlow TaskFlowSingleId(string loginKey, ref ErrorInfo err, int keyId)
        {
            GlobalUser gu = Global.GetUser(loginKey);

            using (DBEntities db = new DBEntities())
            {
                var reEnt = db.YL_TASK_FLOW.SingleOrDefault(x => x.ID == keyId);
                var ent   = new ProInterface.Models.TTaskFlow();
                ent = Fun.ClassToCopy <YL_TASK, ProInterface.Models.TTaskFlow>(reEnt.YL_TASK);
                ent = Fun.ClassToCopy <YL_TASK_FLOW, ProInterface.Models.TTaskFlow>(reEnt);
                var sendUser = db.YL_USER.SingleOrDefault(x => x.ID == reEnt.YL_TASK.CREATE_USER);
                if (sendUser != null)
                {
                    ent.DistrictName = sendUser.YL_DISTRICT.NAME;
                }
                ent.TaskContent = reEnt.YL_TASK.REMARK;

                var allUserIdList = reEnt.YL_TASK_FLOW1.Select(x => x.HANDLE_USER_ID).ToList();
                ent.UserIdArrStr = string.Join(",", allUserIdList);

                return(ent);
            }
        }
예제 #2
0
        public bool TaskFlowSave(string loginKey, ref ProInterface.ErrorInfo err, ProInterface.Models.TTaskFlow inEnt, IList <string> allPar)
        {
            if (!UserCheckFunctioAuthority(loginKey, ref err, MethodBase.GetCurrentMethod()))
            {
                return(false);
            }
            using (DBEntities db = new DBEntities())
            {
                GlobalUser gu = Global.GetUser(loginKey);
                if (gu == null)
                {
                    err.IsError = true;
                    err.Message = "登录超时";
                    return(false);
                }
                var flow = db.YL_TASK_FLOW.Single(x => x.ID == inEnt.ID);
                if (string.IsNullOrEmpty(inEnt.ROLE_ID_STR)) //无转派
                {
                    flow.DEAL_STATUS = "处理完成";
                    if (flow.PARENT_ID != null) //有上级
                    {
                        //是否全部处理
                        var noDealNum = flow.YL_TASK_FLOW2.YL_TASK_FLOW1.Where(x => x.IS_HANDLE == 0 && x.ID != flow.ID).Count();
                        if (noDealNum == 0)
                        {
                            var taskFlowNext2 = new YL_TASK_FLOW();
                            taskFlowNext2.ID             = Fun.GetSeqID <YL_TASK_FLOW>();
                            taskFlowNext2.HANDLE_USER_ID = flow.YL_TASK_FLOW2.HANDLE_USER_ID;
                            //taskFlowNext2.DEAL_USER_NAME = flow.YL_TASK_FLOW2.DEAL_USER_NAME;
                            taskFlowNext2.LEVEL_ID   = flow.LEVEL_ID + 1;
                            taskFlowNext2.NAME       = flow.YL_TASK_FLOW2.NAME;
                            taskFlowNext2.HANDLE_URL = "~/TaskFlow/Handle";
                            taskFlowNext2.SHOW_URL   = "~/TaskFlow/Single";
                            taskFlowNext2.IS_HANDLE  = 0;
                            taskFlowNext2.PARENT_ID  = flow.YL_TASK_FLOW2.PARENT_ID;
                            taskFlowNext2.TASK_ID    = flow.TASK_ID;
                            db.YL_TASK_FLOW.Add(taskFlowNext2);
                        }
                    }
                    else
                    {
                        flow.YL_TASK.STATUS      = "完成";
                        flow.YL_TASK.STATUS_TIME = DateTime.Now;
                    }
                }
                else //转派
                {
                    flow.DEAL_STATUS = "分派处理";
                    if (!string.IsNullOrEmpty(inEnt.UserIdArrStr))
                    {
                        IList <int> userIdArr = inEnt.UserIdArrStr.Split(',').Where(x => x.IsInt32()).Select(x => Convert.ToInt32(x)).ToList();
                        var         allUser   = db.YL_USER.Where(x => userIdArr.Contains(x.ID)).ToList();
                        var         allRole   = db.YL_ROLE.Where(x => x.YL_USER.Where(y => userIdArr.Contains(y.ID)).Count() > 0).ToList();
                        flow.ROLE_ID_STR = string.Join(",", allRole.Select(x => x.ID).ToList());

                        foreach (var t in flow.YL_TASK_FLOW1.ToList())
                        {
                            if (allUser.SingleOrDefault(x => x.ID == t.HANDLE_USER_ID) == null)
                            {
                                db.YL_TASK_FLOW.Remove(t);
                            }
                        }

                        foreach (var user in allUser)
                        {
                            YL_TASK_FLOW taskFlowNext1 = flow.YL_TASK_FLOW1.SingleOrDefault(x => x.HANDLE_USER_ID == user.ID);
                            if (taskFlowNext1 == null)
                            {
                                taskFlowNext1                = new YL_TASK_FLOW();
                                taskFlowNext1.ID             = Fun.GetSeqID <YL_TASK_FLOW>();
                                taskFlowNext1.HANDLE_USER_ID = user.ID;
                                //taskFlowNext1.DEAL_USER_NAME = user.NAME;
                                taskFlowNext1.LEVEL_ID      = flow.LEVEL_ID + 1;
                                taskFlowNext1.NAME          = "承办人办理";
                                taskFlowNext1.HANDLE_URL    = "~/TaskFlow/Handle";
                                taskFlowNext1.SHOW_URL      = "~/TaskFlow/Single";
                                taskFlowNext1.IS_HANDLE     = 0;
                                taskFlowNext1.YL_TASK_FLOW2 = flow;
                                taskFlowNext1.TASK_ID       = flow.TASK_ID;
                                flow.YL_TASK_FLOW1.Add(taskFlowNext1);
                            }
                        }
                    }
                    else //角色下所有用户
                    {
                    }
                }
                flow.IS_HANDLE = 1;

                //if (!string.IsNullOrEmpty(inEnt.AllFilesStr))
                //{
                //    var fileIdList = ProInterface.JSON.EncodeToEntity<IList<FILES>>(inEnt.AllFilesStr).Select(x => x.ID);
                //    flow.YL_FILES.Clear();
                //    flow.YL_FILES = db.YL_FILES.Where(x => fileIdList.Contains(x.ID)).ToList();
                //}

                //flow.REMARK = inEnt.REMARK;
                db.SaveChanges();

                return(true);
            }
        }