| | |
| | | |
| | | var totalCount = 0; |
| | | |
| | | var pageList = db.Queryable<LtsLlj, IqcBefore, SysUser, |
| | | IqcBeforeFrom, SysUser, SysUser>((a, b, |
| | | e, f, g, i) => |
| | | new JoinQueryInfos(JoinType.Left, a.ItemId == b.ItemId, |
| | | JoinType.Left, a.CreateBy == e.Fcode, |
| | | JoinType.Left, f.Id == b.Pid, |
| | | JoinType.Left, f.Sid == Convert.ToDecimal(g.Fid), |
| | | JoinType.Left, f.CheckUser == i.Fcode |
| | | )) |
| | | var pageList = db.Queryable<LtsLlj, V_LljUser>((a, v) => |
| | | new JoinQueryInfos(JoinType.Left, a.ItemNo == v.ItemNo)) |
| | | .WhereIF( |
| | | StringUtil.IsNotNullOrEmpty(queryObj.result) && |
| | | "未完成".Equals(queryObj.result), |
| | | (a, b, |
| | | e, f, g, i) => a.FcheckResu == null) |
| | | (a, v) => a.FcheckResu == null) |
| | | .WhereIF( |
| | | StringUtil.IsNotNullOrEmpty(queryObj.result) && |
| | | !"未完成".Equals(queryObj.result), |
| | | (a, b, |
| | | e, f, g, i) => a.FcheckResu != null) |
| | | .WhereIF(id > 0, (a, b, |
| | | e, f, g, i) => a.Id == id) |
| | | .WhereIF(queryObj.createUser != "PL017" && queryObj.UserIndex == "0", (a, b, |
| | | e, f, g, i) => (g.Fcode == queryObj.createUser || i.Fcode == queryObj.createUser || |
| | | (g.Fcode == null && i.Fcode == null)))//判断此单的检验员,或者检验为空就显示此单据 |
| | | (a, v) => a.FcheckResu != null) |
| | | .WhereIF(id > 0, (a, v) => a.Id == id) |
| | | // 权限控制:PL017、HMLYY、HMCS 可以看到所有单据,其他用户需要根据物料维护情况判断 |
| | | .WhereIF(queryObj.createUser != "PL017" && queryObj.createUser != "HMLYY" && queryObj.createUser != "HMCS" && queryObj.UserIndex == "0", |
| | | (a, v) => |
| | | // 如果物料被维护,只有维护人员可以看到 |
| | | (v.Fcode != null && v.Fcode == queryObj.createUser) || |
| | | // 如果物料未被维护,所有人都可以看到 |
| | | (v.Fcode == null)) |
| | | |
| | | //加筛选条件,根据供应商,物料编码,物料名称搜索 |
| | | //.WhereIF(queryObj.SearchValue!=null && queryObj.SearchValue!="", (a) => a.SuppName == queryObj.SearchValue|| a.ItemName == queryObj.SearchValue || a.ItemNo == queryObj.SearchValue ) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue), |
| | | (a, b, |
| | | e, f, g, i) => a.SuppName.ToLower() |
| | | .Contains(queryObj.SearchValue.ToLower()) |
| | | || a.ItemName.ToLower() |
| | | .Contains(queryObj.SearchValue.ToLower()) |
| | | || a.ItemNo.ToLower() |
| | | .Contains(queryObj.SearchValue.ToLower()) |
| | | || a.LotNo.ToLower() |
| | | .Contains(queryObj.SearchValue.ToLower()) |
| | | || a.ReleaseNo.ToLower() |
| | | .Contains(queryObj.SearchValue.ToLower()) |
| | | || a.ItemModel.ToLower() |
| | | .Contains(queryObj.SearchValue.ToLower())) |
| | | // .OrderByDescending((a, b, |
| | | |
| | | .OrderBy("CASE WHEN a.EMERGENCY = 1 THEN 0 ELSE 1 END, CASE WHEN a.STATUS = '已提交' THEN 0 ELSE 1 END, a.IQC_DATE desc, a.ID asc") |
| | | //加筛选条件,根据选择的搜索字段进行精确搜索 |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 1, // 物料编号搜索 |
| | | (a, v) => a.ItemNo != null && a.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 2, // 物料名称搜索 |
| | | (a, v) => a.ItemName != null && a.ItemName.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 3, // 供应商搜索 |
| | | (a, v) => a.SuppName != null && a.SuppName.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 4, // 到货单号搜索 |
| | | (a, v) => a.LotNo != null && a.LotNo.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 5, // 检验单号搜索 |
| | | (a, v) => a.ReleaseNo != null && a.ReleaseNo.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 6, // 物料规格搜索 |
| | | (a, v) => a.ItemModel != null && a.ItemModel.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .Select((a, v) => new LtsLlj |
| | | { |
| | | Id = a.Id, |
| | | ItemNo = a.ItemNo, |
| | | ItemId = a.ItemId, |
| | | ItemName = a.ItemName, |
| | | ItemModel = a.ItemModel, |
| | | SuppName = a.SuppName, |
| | | LotNo = a.LotNo, |
| | | ReleaseNo = a.ReleaseNo, |
| | | FcheckResu = a.FcheckResu, |
| | | CreateDate = a.CreateDate, |
| | | FcovertQty = a.FcovertQty, |
| | | DEPARTMENTNAME = a.DEPARTMENTNAME, |
| | | FngDesc = a.FngDesc, |
| | | UrgentFlag = a.UrgentFlag, |
| | | Ftype = a.Ftype, |
| | | LotNo1 = a.LotNo1, |
| | | EMERGENCY = a.EMERGENCY, |
| | | Status = a.Status, |
| | | IqcDate = a.IqcDate, |
| | | // 添加维护人员信息 |
| | | Fcode = v.Fcode, |
| | | // 添加破坏实验数量 |
| | | PHSY = a.PHSY, |
| | | // 添加不良原因 |
| | | BLYY = a.BLYY, |
| | | // 添加所属车间 |
| | | SSCJ = a.SSCJ, |
| | | // 添加评审状态 |
| | | PSZT = a.PSZT |
| | | }) |
| | | .OrderBy("CASE WHEN EMERGENCY = 1 THEN 0 ELSE 1 END, CASE WHEN STATUS = '已提交' THEN 0 ELSE 1 END, IQC_DATE desc, ID asc") |
| | | .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount); |
| | | |
| | | // 批量获取检验项目数量,避免N+1查询问题 |
| | | if (pageList.Any()) |
| | | { |
| | | var releaseNos = pageList.Select(x => x.ReleaseNo).Distinct().ToList(); |
| | | |
| | | // 为每个检验单设置检验项目数量和NewFngDesc字段 |
| | | foreach (var item in pageList) |
| | | { |
| | | var count = db.Queryable<MesQaItemsDetectDetail5>() |
| | | .Where(x => x.ReleaseNo == item.ReleaseNo) |
| | | .Count(); |
| | | item.InspectionItemCount = count; |
| | | |
| | | item.NewFngDesc = item.FngDesc; |
| | | } |
| | | } |
| | | |
| | | // 计算所有数据的去重总数(不是当前页的去重数) |
| | | var allDataQuery = db.Queryable<LtsLlj, V_LljUser>((a, v) => |
| | | new JoinQueryInfos(JoinType.Left, a.ItemNo == v.ItemNo)) |
| | | .WhereIF( |
| | | StringUtil.IsNotNullOrEmpty(queryObj.result) && |
| | | "未完成".Equals(queryObj.result), |
| | | (a, v) => a.FcheckResu == null) |
| | | .WhereIF( |
| | | StringUtil.IsNotNullOrEmpty(queryObj.result) && |
| | | !"未完成".Equals(queryObj.result), |
| | | (a, v) => a.FcheckResu != null) |
| | | .WhereIF(id > 0, (a, v) => a.Id == id) |
| | | // 权限控制:PL017、HMLYY、HMCS 可以看到所有单据,其他用户需要根据物料维护情况判断 |
| | | .WhereIF(queryObj.createUser != "PL017" && queryObj.createUser != "HMLYY" && queryObj.createUser != "HMCS" && queryObj.UserIndex == "0", |
| | | (a, v) => |
| | | // 如果物料被维护,只有维护人员可以看到 |
| | | (v.Fcode != null && v.Fcode == queryObj.createUser) || |
| | | // 如果物料未被维护,所有人都可以看到 |
| | | (v.Fcode == null)) |
| | | //加筛选条件,根据选择的搜索字段进行精确搜索 |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 1, // 物料编号搜索 |
| | | (a, v) => a.ItemNo != null && a.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 2, // 物料名称搜索 |
| | | (a, v) => a.ItemName != null && a.ItemName.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 3, // 供应商搜索 |
| | | (a, v) => a.SuppName != null && a.SuppName.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 4, // 到货单号搜索 |
| | | (a, v) => a.LotNo != null && a.LotNo.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 5, // 检验单号搜索 |
| | | (a, v) => a.ReleaseNo != null && a.ReleaseNo.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue) && queryObj.selectedIndex == 6, // 物料规格搜索 |
| | | (a, v) => a.ItemModel != null && a.ItemModel.ToLower().Contains(queryObj.SearchValue.ToLower())) |
| | | .Select((a, v) => a.ReleaseNo) |
| | | .Distinct() |
| | | .Count(); |
| | | |
| | | var emergencyValues = pageList.Select(item => item.EMERGENCY).ToList(); |
| | | return (pageList, totalCount); |
| | | return (pageList, allDataQuery); |
| | | } |
| | | |
| | | //根据检验标准来计算检验个数 |