/// <summary> /// 公司库存缺货查询 /// </summary> /// <param name="warehouseId"></param> /// <param name="hostingFilialeId"></param> /// <returns></returns> public static List <OutOfStockGridDTO> FilialeStockLackSearch(Guid warehouseId, Guid hostingFilialeId) { var data = new List <OutOfStockGridDTO>(); var dataList = _erpProxy.FilialeStockLackSearch(warehouseId, hostingFilialeId); if (dataList != null && dataList.Count > 0) { var centerSao = new GoodsCenterSao(); var realGoodsIds = dataList.Select(act => act.RealGoodsId).Distinct().ToList(); var goodsBaseInfos = centerSao.GetGoodsBaseListByGoodsIdOrRealGoodsIdList(realGoodsIds); var goodsChildInfos = centerSao.GetRealGoodsListByGoodsId(goodsBaseInfos.Select(act => act.Key).ToList()); data.AddRange(from dto in dataList let baseInfo = goodsBaseInfos[dto.RealGoodsId] let child = goodsChildInfos.FirstOrDefault(act => act.RealGoodsId == dto.RealGoodsId) select new OutOfStockGridDTO { GoodsId = baseInfo.GoodsId, GoodsCode = baseInfo.GoodsCode, GoodsName = baseInfo.GoodsName, HostingFilialeId = dto.HostingFilialeId, TransferFiliales = dto.HaveStockFiliales != null && dto.HaveStockFiliales.Count > 0 ? dto.HaveStockFiliales.Select(act => new FilialeQuantity { HostingFilialeId = act.HostingFilialeId, HostingFilialeName = act.HostingFilialeName, Quantity = Math.Abs(act.Quantity) }).ToList() : new List <FilialeQuantity>(), Sku = child != null ? child.Specification : "", RealGoodsId = dto.RealGoodsId, Quantity = Math.Abs(dto.Quantity), Units = baseInfo.Units }); } return(data); }
/// <summary> /// 将生成的商品毛利明细数据转移到Report库中的商品毛利明细表中 /// </summary> /// <returns></returns> public void AddGoodsGrossProfitToReport(DateTime recordTime) { DateTime dayTime = recordTime.AddDays(-1); List <GoodsGrossProfitRecordDetailInfo> goodsGrossProfitRecordDetailList = new List <GoodsGrossProfitRecordDetailInfo>(); int i = 0; while (true) { i++; #region 订单 var goodsGrossProfitGoodsOrderList = _goodsOrderDetail.GetGoodsGrossProfit_GoodsOrder(dayTime, i, _grossProfitPageSize); if (goodsGrossProfitGoodsOrderList.Count > 0) { goodsGrossProfitRecordDetailList.AddRange(goodsGrossProfitGoodsOrderList); } #endregion #region 门店采购出库单 var goodsGrossProfitStorageRecordList = _goodsOrderDetail.GetGoodsGrossProfit_StorageRecord(dayTime, i, _grossProfitPageSize); if (goodsGrossProfitStorageRecordList.Count > 0) { var goodsIdList = goodsGrossProfitStorageRecordList.Select(act => act.GoodsId).Distinct().ToList(); var dicGoodsIdAndGoodsType = new GoodsCenterSao().GetGoodsListByGoodsIds(goodsIdList).ToDictionary(p => p.GoodsId, p => p.GoodsType); foreach (var item in goodsGrossProfitStorageRecordList) { item.GoodsType = dicGoodsIdAndGoodsType.ContainsKey(item.GoodsId) ? dicGoodsIdAndGoodsType[item.GoodsId] : 0; } goodsGrossProfitRecordDetailList.AddRange(goodsGrossProfitStorageRecordList); } #endregion if (goodsGrossProfitGoodsOrderList.Count == 0 && goodsGrossProfitStorageRecordList.Count == 0) { break; } } if (goodsGrossProfitRecordDetailList.Count > 0) { using (var ts = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromMinutes(10))) { try { int j = 0; while (true) { var companyGrossProfitRecordDetailInfoList = goodsGrossProfitRecordDetailList.Skip(j * _grossProfitPageSize).Take(_grossProfitPageSize).ToList(); if (companyGrossProfitRecordDetailInfoList.Count > 0) { _goodsGrossProfitRecordDetail.AddDataDetail(companyGrossProfitRecordDetailInfoList); } else { break; } j++; } ts.Complete(); } finally { //释放资源 ts.Dispose(); } } } }