| | |
| | | using AutoMapper; |
| | | using MailKit.Search; |
| | | using SqlSugar; |
| | | using System.Text.RegularExpressions; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | |
| | | public partial class StockInfoService : ServiceBase<Dt_StockInfo, IRepository<Dt_StockInfo>>, IStockInfoService |
| | | { |
| | | private readonly IMapper _mapper; |
| | | |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IRecordService _recordService; |
| | | public IRepository<Dt_StockInfo> Repository => BaseDal; |
| | | private readonly IRepository<Dt_StockInfoDetail> _stockInfoDetailRepository; |
| | |
| | | |
| | | private readonly IRepository<Dt_AllocateOrder> _allocateRepository; |
| | | private readonly ILocationInfoService _locationInfoService; |
| | | public StockInfoService(IRepository<Dt_StockInfo> BaseDal, IMapper mapper, IRepository<Dt_StockInfoDetail> stockInfoDetailRepository, IRecordService recordService, ILocationInfoService locationInfoService, IOutboundOrderService outboundOrderService, IRepository<Dt_AllocateOrder> allocateRepository) : base(BaseDal) |
| | | public StockInfoService(IRepository<Dt_StockInfo> BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, IRepository<Dt_StockInfoDetail> stockInfoDetailRepository, IRecordService recordService, ILocationInfoService locationInfoService, IOutboundOrderService outboundOrderService, IRepository<Dt_AllocateOrder> allocateRepository) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | _stockInfoDetailRepository = stockInfoDetailRepository; |
| | |
| | | _locationInfoService = locationInfoService; |
| | | _outboundOrderService = outboundOrderService; |
| | | _allocateRepository = allocateRepository; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | //_outboundOrderDetailService = outboundOrderDetailService; |
| | | } |
| | | |
| | |
| | | return stockInfo; |
| | | } |
| | | |
| | | public override WebResponseContent DeleteData(object[] keys) |
| | | { |
| | | try |
| | | { |
| | | List<int> stockIds = keys.Select(x => x.ObjToInt()).ToList(); |
| | | |
| | | List<Dt_StockInfo> stockInfos = BaseDal.QueryData(x => stockIds.Contains(x.Id) && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt()); |
| | | |
| | | List<string> locationCodes = stockInfos.Select(x => x.LocationCode).Distinct().ToList(); |
| | | |
| | | List<Dt_LocationInfo> locationInfos = _locationInfoService.Repository.QueryData(x => locationCodes.Contains(x.LocationCode) && x.LocationStatus == LocationStatusEnum.Pallet.ObjToInt()); |
| | | |
| | | stockInfos = stockInfos.Where(x => locationInfos.Select(l => l.LocationCode).Contains(x.LocationCode)).ToList(); |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | _locationInfoService.UpdateLocationStatus(locationInfos, LocationStatusEnum.Free); |
| | | |
| | | BaseDal.DeleteAndMoveIntoHty(stockInfos, WIDESEA_Core.Enums.OperateTypeEnum.人工å é¤); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | return WebResponseContent.Instance.OK("å 餿å"); |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return WebResponseContent.Instance.Error("å é¤å¤±è´¥ï¼"+ex.Message); |
| | | } |
| | | } |
| | | public void AddMaterielGroup(Dt_StockInfo stockInfo) |
| | | { |
| | | decimal beforeQuantity = 0; |
| | |
| | | // æå»ºæ¥è¯¢æ¡ä»¶ |
| | | var stockQuery = Db.Queryable<Dt_StockInfo>() |
| | | .Where(x => locationCodes.Contains(x.LocationCode)) |
| | | .Where(x => x.StockStatus == (int)StockStatusEmun.å
¥åºå®æ || x.StockStatus == (int)StockStatusEmun.è¿æ) |
| | | .Where(x => x.StockStatus == (int)StockStatusEmun.å
¥åºå®æ) |
| | | .Includes(x => x.Details); |
| | | |
| | | // æ§è¡æ¥è¯¢å¹¶æå
è¿å
åºæåº |
| | |
| | | |
| | | if (relevantDetails.Any()) |
| | | { |
| | | var firstDetail = relevantDetails.First(); |
| | | var useableQuantity = relevantDetails.Sum(d => d.StockQuantity - d.OutboundQuantity); |
| | | |
| | | result.Add(new StockSelectViewDTO |
| | | foreach (var item in relevantDetails) |
| | | { |
| | | LocationCode = stock.LocationCode, |
| | | MaterielCode = firstDetail.MaterielCode, |
| | | MaterielName = firstDetail.MaterielName, |
| | | BatchNo = orderDetail.BatchNo, |
| | | SupplyCode = orderDetail.SupplyCode, |
| | | Barcode = firstDetail.Barcode, |
| | | PalletCode = stock.PalletCode, |
| | | UseableQuantity = useableQuantity, |
| | | StockCreateDate = stock.CreateDate, |
| | | StockId = stock.Id, |
| | | OrderDetailId = orderDetail.Id // å
³èå°å
·ä½çåºåºåæç» |
| | | }); |
| | | result.Add(new StockSelectViewDTO |
| | | { |
| | | LocationCode = stock.LocationCode, |
| | | MaterielCode = item.MaterielCode, |
| | | MaterielName = item.MaterielName, |
| | | BatchNo = item.BatchNo, |
| | | SupplyCode = item.SupplyCode, |
| | | Barcode = item.Barcode, |
| | | PalletCode = stock.PalletCode, |
| | | UseableQuantity = item.StockQuantity, |
| | | StockCreateDate = stock.CreateDate, |
| | | StockId = item.Id, |
| | | StockStatus = item.Status, |
| | | OrderDetailId = orderDetail.Id // å
³èå°å
·ä½çåºåºåæç» |
| | | }); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | return result; |
| | | } |
| | | |
| | | |
| | | public override PageGridData<Dt_StockInfo> GetPageData(PageDataOptions options) |
| | | { |
| | | ISugarQueryable<Dt_StockInfo> sugarQueryable = Db.Queryable<Dt_StockInfo>(); |
| | | |
| | | ValidatePageOptions(options, ref sugarQueryable); |
| | | |
| | | List<OrderByModel> orderByModels = new List<OrderByModel>(); |
| | | |
| | | if (OrderByParameters != null) |
| | | { |
| | | foreach (var item in OrderByParameters) |
| | | { |
| | | OrderByModel orderByModel = new OrderByModel() |
| | | { |
| | | FieldName = item.Key, |
| | | OrderByType = item.Value |
| | | }; |
| | | orderByModels.Add(orderByModel); |
| | | } |
| | | } |
| | | if (EnableWebOrderBy) |
| | | { |
| | | //è·åæåºå段 |
| | | Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties); |
| | | |
| | | foreach (var item in orderbyDic) |
| | | { |
| | | OrderByModel orderByModel = new OrderByModel() |
| | | { |
| | | FieldName = item.Key, |
| | | OrderByType = item.Value |
| | | }; |
| | | orderByModels.Add(orderByModel); |
| | | } |
| | | } |
| | | |
| | | int total = 0; |
| | | PageGridData<Dt_StockInfo> pageGridData = new PageGridData<Dt_StockInfo>(); |
| | | sugarQueryable = sugarQueryable.OrderBy(orderByModels); |
| | | pageGridData.Rows = sugarQueryable.ToPageList(options.Page, options.Rows, ref total); |
| | | pageGridData.Total = total; |
| | | |
| | | return pageGridData; |
| | | } |
| | | } |
| | | } |