huanghongfeng
3 天以前 5ffc36a1db18d3112a9b50a9cf3953d7fcf21bae
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs
@@ -21,6 +21,7 @@
    private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository;
    private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
    private readonly IDt_WheelsStockRepository _WheelsStockRepository;
    private readonly IDt_ZdpStockRepository _zdpStockRepository;
    private readonly IMapper _mapper;
    public LocationInfoService(ILocationInfoRepository BaseDal,
@@ -33,7 +34,8 @@
                                    IStockInfoDetailRepository stockInfoDetailRepository,
                                    IMapper mapper,
                                    IDt_TaskService taskService,
                                    IDt_WheelsStockRepository wheelsStockRepository) : base(BaseDal)
                                    IDt_WheelsStockRepository wheelsStockRepository,
                                    IDt_ZdpStockRepository zdpStockRepository) : base(BaseDal)
    {
        _unitOfWorkManage = unitOfWorkManage;
        _taskRepository = taskRepository;
@@ -45,6 +47,7 @@
        _mapper = mapper;
        _taskService = taskService;
        _WheelsStockRepository = wheelsStockRepository;
        _zdpStockRepository = zdpStockRepository;
    }
    /// <summary>
@@ -80,6 +83,8 @@
                // èŽ·å–æ–°çš„åº“ä½çš„ä»»åŠ¡
                var internalTransferTask = await _taskRepository.QueryFirstAsync(x => x.SourceAddress == newLocationID && x.Roadway == outboundTask.Roadway && x.TaskState == (int)TaskOutStatusEnum.OutNew);
                LogFactory.GetLog("检查是否需要移库").InfoFormat(true, "需要移库,获取新库位的任务", $"新库位任务:{internalTransferTask}");
                // å¦‚果新的库位没有找到对应的任务
@@ -369,8 +374,12 @@
        // åˆ¤æ–­è¯¥ä½ç½®æ˜¯å¦æœ‰åº“å­˜
        var stockInfo = await _WheelsStockRepository.QueryFirstAsync(x => x.Wheels_Location == newLocationID);
        // åˆ¤æ–­è¯¥ä½ç½®æ˜¯å¦æœ‰åº“å­˜
        var zdpInfo = await _zdpStockRepository.QueryFirstAsync(x => x.Zdp_Location == newLocationID);
        LogFactory.GetLog("检查是否需要移库").InfoFormat(true, "需要移库,未获取到新库位任务", $"该位置是否有库存:{stockInfo}");
        if (stockInfo == null)
        if (stockInfo == null && zdpInfo==null)
        {
            LogFactory.GetLog("检查是否需要移库").InfoFormat(true, "需要移库,未获取到库存数据", $"直接返回原先出库任务:{outboundTask}");
            // å¦‚果没有库存,直接返回当前出库任务
@@ -388,14 +397,14 @@
            {
                CreateDate = DateTime.Now,
                Creater = App.User.UserName == null ? "admin" : App.User.UserName,
                CurrentAddress = stockInfo.Wheels_Location,
                CurrentAddress = stockInfo != null ?stockInfo.Wheels_Location: zdpInfo.Zdp_Location,
                Grade = 99,
                MaterialNo = stockInfo.Wheels_Type,
                MaterialNo = stockInfo != null ? stockInfo.Wheels_Type: "2",
                NextAddress = emptyLocation.LocationCode,
                PalletCode = stockInfo.Wheels_Num,
                PalletCode = stockInfo != null ? stockInfo.Wheels_Num : zdpInfo.Zdp_code,
                Remark = "移库",
                Roadway = "SC1",
                SourceAddress = stockInfo.Wheels_Location,
                SourceAddress = stockInfo != null ? stockInfo.Wheels_Location : zdpInfo.Zdp_Location,
                TaskNum = taskNo,
                TargetAddress = emptyLocation.LocationCode,
                TaskState = (int)TaskStatus.Created,
@@ -424,8 +433,12 @@
        // åˆ¤æ–­è¯¥ä½ç½®æ˜¯å¦æœ‰åº“å­˜
        var stockInfo = await _WheelsStockRepository.QueryFirstAsync(x => x.Wheels_Location == newLocationID);
        // åˆ¤æ–­è¯¥ä½ç½®æ˜¯å¦æœ‰åº“å­˜
        var zdpInfo = await _zdpStockRepository.QueryFirstAsync(x => x.Zdp_Location == newLocationID);
        LogFactory.GetLog("检查是否需要移库").InfoFormat(true, "需要移库,未获取到新库位任务", $"该位置是否有库存:{stockInfo}");
        if (stockInfo == null)
        if (stockInfo == null && zdpInfo == null)
        {
            LogFactory.GetLog("检查是否需要移库").InfoFormat(true, "需要移库,未获取到库存数据", $"直接返回原先出库任务:{inboundTask}");
            // å¦‚果没有库存,直接返回当前出库任务
@@ -443,14 +456,14 @@
            {
                CreateDate = DateTime.Now,
                Creater = App.User.UserName == null ? "admin" : App.User.UserName,
                CurrentAddress = stockInfo.Wheels_Location,
                CurrentAddress = stockInfo != null ? stockInfo.Wheels_Location : zdpInfo.Zdp_Location,
                Grade = 99,
                MaterialNo = stockInfo.Wheels_Type,
                MaterialNo = stockInfo != null ? stockInfo.Wheels_Type : "2",
                NextAddress = emptyLocation.LocationCode,
                PalletCode = stockInfo.Wheels_Num,
                PalletCode = stockInfo != null ? stockInfo.Wheels_Num : zdpInfo.Zdp_code,
                Remark = "移库",
                Roadway = "SC1",
                SourceAddress = stockInfo.Wheels_Location,
                SourceAddress = stockInfo != null ? stockInfo.Wheels_Location : zdpInfo.Zdp_Location,
                TaskNum = taskNo,
                TargetAddress = emptyLocation.LocationCode,
                TaskState = (int)TaskStatus.Created,
@@ -497,7 +510,7 @@
                //List<DtLocationInfo> locations = new List<DtLocationInfo>();
                if (locationInfos == null || locationInfos.Count == 0)
                {
                    locationInfos = BaseDal.QueryData(x => x.LocationStatus == (int)LocationEnum.Free && x.RoadwayNo == "SC1" && x.EnalbeStatus == 1 && x.LocationType == 1);
                    locationInfos = BaseDal.QueryData(x => x.LocationStatus == 0 && x.RoadwayNo == "SC1" && x.EnalbeStatus == 1 && x.LocationType == 1);
                }
@@ -518,7 +531,7 @@
                        {
                            locationInfos.Remove(location);
                            if (locationInfos.Count == 0) return null;
                            RequestLocation(RoadWayNo, locationInfos);
                            return RequestLocation(RoadWayNo, locationInfos);
                        }
                    }
                }
@@ -539,7 +552,7 @@
    }
    private DtLocationInfo GetEmptyLocation(List<DtLocationInfo> dtLocationInfos)
    {
        var locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.RoadwayNo == "SC1" && x.EnalbeStatus == 1 && x.LocationType == 1).OrderBy(x => x.Layer).ThenByDescending(x => x.Depth).ThenBy(x => x.Row).ThenBy(x => x.Column).FirstOrDefault();
        var locationinfo = dtLocationInfos.Where(x => x.LocationStatus == 0 && x.RoadwayNo == "SC1" && x.EnalbeStatus == 1 && x.LocationType == 1).OrderBy(x => x.Layer).ThenByDescending(x => x.Depth).ThenBy(x => x.Row).ThenBy(x => x.Column).FirstOrDefault();
        return locationinfo;
    }