username@email.com
2023-02-28 67a0042c5f29e4bb0e0b82f6190f2bc51480b45c
zhengcaioa/Services/WfHistoryService.cs
@@ -116,7 +116,7 @@
                string[] Applytimes = searchEntity.Applytime.Split("|");
                DateTime.TryParse(Applytimes[0], out Applytimestart);
                DateTime.TryParse(Applytimes[1], out Applytimeend);
                //Applytimeend = Applytimeend.AddDays(1);
                Applytimeend = Applytimeend.AddDays(1);
            }
            ///WfHistories
@@ -140,7 +140,7 @@
                         from fff in fsssss.DefaultIfEmpty()
                         join d in _context.WfApplytypes
                       on k.Applytiye equals d.Id
                       on k.Applytiye equals d.Applyno
                         join b in _context.PltUsers
                        on k.Creater equals b.Id
@@ -159,7 +159,7 @@
                               && (string.IsNullOrWhiteSpace(searchEntity.RunProcessId) || a.RunProcessId == searchEntity.RunProcessId.Trim())
                                && (string.IsNullOrWhiteSpace(searchEntity.Applyno) || k.Applyno == searchEntity.Applyno.Trim())
                                 && (string.IsNullOrWhiteSpace(searchEntity.Creater) || a.DeelUserId == searchEntity.Creater.Trim())
                         select new WfHistoryDTO
                         {
@@ -191,20 +191,20 @@
                             NeeddeelTypeName = fff.Comments,
                             Contentyijian = a.Content,
                             Sort = a.Sort,
                             Deelurl = a.Deelurl,
                             Creater = a.Creater,
                             Createtime = a.Createtime,
                             Step = a.Step,
                             RecStatus = a.RecStatus,
                             Modifier = a.Modifier,
                             Modifytime = a.Modifytime,
                         }
                ).OrderBy(x => x.Sort).ThenByDescending(x=>x.Resivetime).ToList();
                ).OrderByDescending(x=>x.Applyno).ThenBy(x => x.Sort).ThenByDescending(x=>x.Resivetime).ToList();
            if (searchEntity.totalrows == 0)
            //if (searchEntity.totalrows == 0)
                searchEntity.totalrows = query.Count();
            var lianlist = query.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            data.LoadData(searchEntity, lianlist);
@@ -235,14 +235,188 @@
        /// 获取所有有效流程类型
        /// </summary>
        /// <returns></returns>
        public List<WfHistoryDTO> GetList()
        public List<WfHistoryDTO> GetList(string RunProcessId = "")
        {
            var listRole = _context.WfHistories.Where(r => r.RecStatus == "A").ToList();
            var listRole = _context.WfHistories.Where(r => r.RecStatus == "A").OrderBy(x=>x.Sort).ToList();
            if (!string.IsNullOrEmpty(RunProcessId))
            {
                listRole = listRole.Where(x => x.RunProcessId == RunProcessId).ToList();
            }
            var list = _mapper.Map<List<WfHistoryDTO>>(listRole);
            return list;
        }
        /// <summary>
        /// 查询历史审批意见
        /// </summary>
        /// <returns></returns>
        public List<WfHistoryDTO> GetListshenpi(string RunProcessId)
        {
            var listRole = (from a in _context.WfHistories.Where(x => x.RecStatus == "A" && x.NeeddeelType =="1" && x.ChuliStatus != "0" && x.RunProcessId == RunProcessId)
                            join b in _context.PltUsers
                            on a.DeelUserId  equals b.Id
                            select new WfHistoryDTO
                            {
                                RunProcessId = a.RunProcessId,
                                SendUserId = a.SendUserId,
                                DeelUserId = a.DeelUserId,
                                Sendtime = a.Sendtime,
                                Resivetime = a.Resivetime,
                                Step = a.Step,
                                ChuliStatus = a.ChuliStatus,
                                Deelurl = a.Deelurl,
                                NeeddeelType = a.NeeddeelType,
                                Sort = a.Sort,
                                Content = a.Content,
                                RecStatus = a.RecStatus,
                                Creater = a.Creater,
                                Createtime = a.Createtime,
                                Modifier = a.Modifier,
                                Modifytime = a.Modifytime,
                                ChuliStatusName = a.Step == "提交"? "提交" : a.ChuliStatus == "2" ? "同意" : "拒绝",
                                DeelUserIdName = b.UserName,
                                ModifytimeName = a.Modifytime.ToString("yyyy-MM-dd HH:mm:ss"),
                            }
                             ).OrderBy(x => x.Modifytime).ToList();
            //    _context.WfHistories.Where(r => r.RecStatus == "A").OrderBy(x => x.Sort).ToList();
            //if (!string.IsNullOrEmpty(RunProcessId))
            //{
            //    listRole = listRole.Where(x => x.RunProcessId == RunProcessId).ToList();
            //}
            return listRole;
        }
        public ResultDataEntity<WfHistoryDTO> SearchByPagingGuanLi(WfHistoryDTOSearch searchEntity)
        {
            ResultDataEntity<WfHistoryDTO> data = new ResultDataEntity<WfHistoryDTO>();
            List<WfHistoryDTO> list = new List<WfHistoryDTO>();
            var listCode = (from a in _context.SysCodeDtls
                            join b in _context.SysCodes
                            on a.CodeId equals b.Id
                            where a.RecStatus == "A"
                                          && b.RecStatus == "A"
                            select new CodeDataEntity()
                            {
                                CodeId = b.Id,
                                CodeTable = b.CodeTable,
                                CodeField = b.CodeField,
                                CodeSn = a.CodeSn,
                                Comments = a.Comments,
                                Contents = a.Contents,
                                RecStatus = a.RecStatus,
                                Sort = a.Sort
                            }
                      );
            DateTime Applytimestart = DateTime.Now;
            DateTime Applytimeend = DateTime.Now;
            if (!string.IsNullOrWhiteSpace(searchEntity.Applytime))
            {
                string[] Applytimes = searchEntity.Applytime.Split("|");
                DateTime.TryParse(Applytimes[0], out Applytimestart);
                DateTime.TryParse(Applytimes[1], out Applytimeend);
                Applytimeend = Applytimeend.AddDays(1);
            }
            ///WfHistories
            var query = (from k in _context.WfRunProcesses
                         join a in _context.WfHistories
                      on k.Id equals a.RunProcessId
                        into asssss
                         from aaa in asssss.DefaultIfEmpty()
                         join e in listCode.Where(x => x.CodeTable == "wf_run_process" && x.CodeField == "shenpi_status")
                        on k.ShenpiStatus equals e.CodeSn
                        into esssss
                         from eee in esssss.DefaultIfEmpty()
                    //     join f in listCode.Where(x => x.CodeTable == "wf_needdeel" && x.CodeField == "needdeel_type")
                    //on a.NeeddeelType equals f.CodeSn
                    //into fsssss
                    //     from fff in fsssss.DefaultIfEmpty()
                         join d in _context.WfApplytypes
                       on k.Applytiye equals d.Applyno
                         join b in _context.PltUsers
                        on k.Creater equals b.Id
                         join c in _context.HrDepts
                        on b.DeptId equals c.Id
                         where k.RecStatus == "A"
                          && (string.IsNullOrWhiteSpace(searchEntity.Applytime) || (k.Applytime >= Applytimestart && k.Applytime <= Applytimeend))
                          && (string.IsNullOrWhiteSpace(searchEntity.DeptId) || b.DeptId == searchEntity.DeptId.Trim())
                           && (string.IsNullOrWhiteSpace(searchEntity.ApplyUserName) || b.UserName.Contains(searchEntity.ApplyUserName.Trim()))
                            && (string.IsNullOrWhiteSpace(searchEntity.Applytiye) || k.Applytiye == searchEntity.Applytiye.Trim())
                             && (string.IsNullOrWhiteSpace(searchEntity.ShenpiStatus) || k.ShenpiStatus == searchEntity.ShenpiStatus.Trim())
                               && (string.IsNullOrWhiteSpace(searchEntity.RunProcessId) || k.Id == searchEntity.RunProcessId.Trim())
                                && (string.IsNullOrWhiteSpace(searchEntity.Applyno) || k.Applyno == searchEntity.Applyno.Trim())
                                 && (string.IsNullOrWhiteSpace(searchEntity.Creater) || k.Creater == searchEntity.Creater.Trim())
                         select new WfHistoryDTO
                         {
                             Id = k.Id,
                             ApplytimeName = k.Applytime.Value.ToString("yyyy-MM-dd"),
                             Applyno = k.Applyno,
                             CreaterName = b.UserName,
                             DeptName = c.DeptName,
                             Applytiye = d.Applytiye,
                             Content = k.Content,
                             ShenpiStatusName = eee.Comments,
                             Deelurl = aaa.Deelurl,
                             Creater = k.Creater,
                             Createtime = k.Createtime,
                             Step = k.Step,
                             RecStatus = k.RecStatus,
                             Modifier = k.Modifier,
                             Modifytime = k.Modifytime,
                         }
                ).Distinct().ToList().OrderByDescending(x => x.Applyno);
            //if (searchEntity.totalrows == 0)
            searchEntity.totalrows = query.Count();
            var lianlist = query.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            data.LoadData(searchEntity, lianlist);
            return data;
        }
    }
}