using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.StockEnum; using WIDESEA_Common.WareHouseEnum; using WIDESEA_Core; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_IBasicRepository; using WIDESEA_IStockRepository; using WIDESEA_IStockService; using WIDESEA_Model.Models; namespace WIDESEA_StockService { public partial class ProStockInfoService : ServiceBase, IProStockInfoService { public IProStockInfoRepository Repository => BaseDal; private readonly IStockRepository _stockRepository; private readonly IBasicRepository _basicRepository; public ProStockInfoService(IProStockInfoRepository BaseDal,IStockRepository stockRepository, IBasicRepository basicRepository) : base(BaseDal) { _stockRepository = stockRepository; _basicRepository = basicRepository; } /// /// 根据外包信息解绑内包信息 /// public WebResponseContent UnBindStock(List proStockInfoDetails) { WebResponseContent content = new WebResponseContent(); //根据内包号进行库存扣除 try { //获取库存 List BagNos = proStockInfoDetails.Select(x => x.BagNo).Distinct().ToList(); List proStockInfos = _stockRepository.ProStockInfoRepository.Db.Queryable() .Where(x => x.StockStatus == StockStatusEmun.出库完成.ObjToInt()) .Includes(x => x.proStockInfoDetails) .Where(x => x.proStockInfoDetails.Any(v => BagNos.Contains(v.BagNo))).Distinct().ToList(); List delProStockDetails=new List(); List upProStockDetails = new List(); List delProStockInfos = new List(); foreach (var item in proStockInfoDetails) { Dt_ProStockInfo? proStockInfo = proStockInfos.Where(x => x.proStockInfoDetails.Any(v => v.BagNo == item?.BagNo)).FirstOrDefault(); Dt_ProStockInfoDetail? proStockInfoDetail = proStockInfo?.proStockInfoDetails.Where(x => x.BagNo == item?.BagNo).FirstOrDefault(); if (proStockInfo==null || proStockInfoDetail == null) { return content.Error($"未找到{item?.BagNo}库存"); } //判断明细是否全部扫出 if (proStockInfoDetail.StockPcsQty==item.StockPcsQty) { delProStockDetails.Add(proStockInfoDetail); proStockInfo.proStockInfoDetails.Remove(proStockInfoDetail); item.OutDetailId = proStockInfoDetail.OutDetailId; item.OutDetailSaleNo = proStockInfoDetail.OutDetailSaleNo; } else { proStockInfoDetail.StockPcsQty -= item.StockPcsQty; proStockInfoDetail.SETQty -= item.SETQty; proStockInfoDetail.OutboundQuantity = 0; item.OutDetailId = 0; item.OutDetailSaleNo = ""; upProStockDetails.Add(proStockInfoDetail); } if (proStockInfo.proStockInfoDetails.Count==0) { delProStockInfos.Add(proStockInfo); } } if (delProStockInfos.Count>0) { BaseDal.DeleteAndMoveIntoHty(delProStockInfos, OperateTypeEnum.自动删除); } if (delProStockDetails.Count > 0) { _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(delProStockDetails, OperateTypeEnum.自动删除); } if (upProStockDetails.Count > 0) { _stockRepository.ProStockInfoDetailRepository.UpdateData(upProStockDetails); } content.OK("成功", proStockInfoDetails); } catch (Exception ex) { content.Error(ex.Message); } return content; } } }