/// <summary> /// 历史记录 /// </summary> /// <param name="requestObject"></param> /// <param name="currentUser"></param> /// <returns></returns> public async Task <ResponseObject <List <HistoryInventory> > > History(HistoryInventoryQuery requestObject, CurrentUser currentUser) { List <HistoryInventory> result = new List <HistoryInventory>(); //其他出库 var otherOut = _db.Instance.Queryable <TWMOtherWhDetailDbModel, TWMOtherWhMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WarehousingOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 1, WarehouseId = t1.WarehouseId, OpearateDate = t2.WarehousingDate, TypeName = "其他入库", InventoryType = t2.WarehousingType, WarehouseAmount = t1.ActualNumber, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); // var otherIn = _db.Instance.Queryable <TWMOtherWhSendDetailDbModel, TWMOtherWhSendMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WhSendOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 2, WarehouseId = t1.WarehouseId, OpearateDate = t2.WhSendDate, TypeName = "其他出库", InventoryType = t2.WhSendType, WarehouseAmount = t1.ActualNumber, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //盘盈入库 var profitDetail = _db.Instance.Queryable <TWMProfitDetailDbModel, TWMProfitMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WarehousingOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 1, WarehouseId = t1.WarehouseId, OpearateDate = t2.WarehousingDate, TypeName = "盘盈入库", InventoryType = t2.WarehousingType, WarehouseAmount = t1.ActualNumber, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //盘亏出库 var deficit = _db.Instance.Queryable <TWMDeficitDetailDbModel, TWMDeficitMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WhSendOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 2, WarehouseId = t1.WarehouseId, OpearateDate = t2.WhSendDate, TypeName = "盘亏出库", InventoryType = t2.WhSendType, WarehouseAmount = t1.ActualNumber, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //生产入库 var productionIn = _db.Instance.Queryable <TWMProductionWhDetailDbModel, TWMProductionWhMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WarehousingOrderNo, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 1, WarehouseId = t1.WarehouseId, OpearateDate = t2.WarehousingDate, TypeName = "生产入库", InventoryType = t2.WarehousingType, WarehouseAmount = t1.ActualNum, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //生产出库 var productionOut = _db.Instance.Queryable <TWMProductionDetailDbModel, TWMProductionMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WhSendOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 2, WarehouseId = t1.WarehouseId, OpearateDate = t2.WhSendDate, TypeName = "生产出库", InventoryType = t2.WhSendType, WarehouseAmount = t1.ActualNum, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //销售出库 var saleDetail = _db.Instance.Queryable <TWMSalesDetailDbModel, TWMSalesMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WhSendOrder, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 1, WarehouseId = t1.WarehouseId, OpearateDate = t2.WhSendDate, TypeName = "销售出库", InventoryType = t2.WhSendType, WarehouseAmount = t1.ActualNum, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //采购入库 var purchaseIn = _db.Instance.Queryable <TWMPurchaseDetailDbModel, TWMPurchaseMainDbModel, TBMMaterialFileDbModel>((t1, t2, t3) => new object[] { JoinType.Inner, t1.MainId == t2.ID, JoinType.Inner, t1.MaterialId == t3.ID }).Where((t1, t2, t3) => t2.DeleteFlag == false && t2.AuditStatus == 2 && t2.CompanyId == currentUser.CompanyID).Select((t1, t2, t3) => new HistoryInventory { ID = t2.ID, OrderNO = t2.WarehousingOrderNo, MaterialId = t1.MaterialId, BaseUnitId = t3.BaseUnitId, OperateType = 1, WarehouseId = t1.WarehouseId, OpearateDate = t2.WarehousingDate, TypeName = "采购入库", InventoryType = t2.WarehousingType, WarehouseAmount = t1.ActualNum, WarehouseUnitId = t3.WarehouseUnitId, WarehouseRate = t3.WarehouseRate }); //单位 var unitList = _db.Instance.Queryable <TBMDictionaryDbModel, TBMDictionaryTypeDbModel>( (t, t0) => new object[] { JoinType.Left, t.TypeId == t0.ID, }).Where((t, t0) => SqlFunc.IsNull(t.DeleteFlag, false) == false && t.CompanyId == currentUser.CompanyID && SqlFunc.IsNull(t0.DeleteFlag, false) == false ).ToList(); //出入库数量 var allCountOrgin = _db.Instance.UnionAll(otherOut, otherIn, profitDetail, deficit, productionIn, productionOut, saleDetail, purchaseIn) .Where(p => p.MaterialId == requestObject.MaterialId && p.WarehouseId == requestObject.WarehouseId); //排序条件 if (requestObject.OrderByConditions != null && requestObject.OrderByConditions.Count > 0) { foreach (var item in requestObject.OrderByConditions) { var exp = SqlSugarUtil.GetOrderByLambda <HistoryInventory>(item.Column); if (exp == null) { continue; } if (item.Condition.ToLower() != "asc" && item.Condition.ToLower() != "desc") { continue; } allCountOrgin.OrderBy($"{item.Column} {item.Condition}"); } } var allCount = allCountOrgin.AS("t101"); int totalNum = -1; if (requestObject.IsPaging) { int skipNum = requestObject.PageSize * (requestObject.PageIndex - 1); result = await allCount.Skip(skipNum).Take(requestObject.PageSize).ToListAsync(); totalNum = allCount.Count(); } else { result = await allCount.ToListAsync(); } result.ForEach((x) => { var unit = unitList.Where(p => p.ID == x.WarehouseUnitId).FirstOrDefault(); if (unit != null) { x.WarehouseUnitName = unit.DicValue; } var basicunit = unitList.Where(p => p.ID == x.BaseUnitId).FirstOrDefault(); if (basicunit != null) { x.BaseUnitName = basicunit.DicValue; } }); return(ResponseUtil <List <HistoryInventory> > .SuccessResult(result, totalNum)); }
public async Task <ResponseObject <List <HistoryInventory> > > History(HistoryInventoryQuery requestObject) { CurrentUser currentUser = TokenManager.GetCurentUserbyToken(HttpContext.Request.Headers); return(await _inventoryReportService.History(requestObject, currentUser)); }