| | |
| | | { |
| | | MaterielCode = "空托盘", |
| | | Id = 0, |
| | | Status = (int)StockStateEmun.已入库 |
| | | } |
| | | } |
| | | }; |
| | |
| | | private DtStockInfo CreateFullPalletStock(Dt_Task task, DtLocationInfo locationInf, DtBoxingInfo boxing) |
| | | { |
| | | var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>(); |
| | | boxDetail.ForEach(x => { x.Status = (int)StockStateEmun.已入库; }); |
| | | var stock = new DtStockInfo() |
| | | { |
| | | PalletCode = task.PalletCode, |
| | |
| | | { |
| | | Software = "WMS", |
| | | TrayBarcode = input.PalletCode, |
| | | //EquipmentCode = "EQ_CWJZ01" |
| | | EquipmentCode = "ECH001-B" |
| | | }; |
| | | |
| | |
| | | return content.Error(result.MOMMessage); |
| | | |
| | | // TODO 获取本地料框属性与整盘电芯属性获取的值进行对比,如果一致则继续,否则返回错误信息 |
| | | var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty)); |
| | | if (productions.Count <= 0) |
| | | return content.Error("料框属性不存在"); |
| | | //var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty)); |
| | | //if (productions.Count <= 0) |
| | | // return content.Error("料框属性不存在"); |
| | | |
| | | // 调用CreateBoxingInfo方法,创建组盘信息 |
| | | |
| | |
| | | return content.OK(data: task); |
| | | } |
| | | |
| | | return await CreateNewTask(input, null, 1); |
| | | // 获取目标地址 |
| | | List<string> strings = input.Position == "1016" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" }; |
| | | |
| | | return await CreateNewTask(input, strings, 1); |
| | | //return await CreateNewTask(input, null, 1); |
| | | } |
| | | catch (Exception) |
| | | { |
| | |
| | | { |
| | | // 根据托盘类型查询库存信息 |
| | | DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound |
| | | ? QueryStockInfoForRealTray(areaCode, roadways) |
| | | : QueryStockInfoForEmptyTray(areaCode, roadways); |
| | | ? QueryStockInfoForRealTrayAsync(areaCode, roadways).Result |
| | | : QueryStockInfoForEmptyTrayAsync(areaCode, roadways).Result; |
| | | |
| | | if (stockInfo == null) |
| | | { |
| | | return content.Error("库存信息不存在"); |
| | | } |
| | | |
| | | // 新增重复任务校验 |
| | | var hasTask = BaseDal.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); |
| | | if (hasTask != null) |
| | | { |
| | | WMSTaskDTO taskDTO1 = CreateTaskDTO(hasTask); |
| | | return content.OK("已存在空盘出库任务", data: taskDTO1); |
| | | } |
| | | |
| | | // 创建新任务实例 |
| | |
| | | /// <summary> |
| | | /// 查询实盘库存信息 |
| | | /// </summary> |
| | | private DtStockInfo QueryStockInfoForRealTray(string areaCode, List<string> roadways) |
| | | private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, List<string> roadways) |
| | | { |
| | | // TODO时间根据MOM系统配置的出库时间来获取,暂时不知道MOM返回的时间是什么所以这里测试时候在改 |
| | | return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && Convert.ToDateTime(x.LinedProcessFeedbackTime) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)) |
| | | .Includes(x => x.LocationInfo) |
| | | .Includes(x => x.StockInfoDetails) |
| | | .OrderBy(x => x.CreateDate) |
| | | .First(); |
| | | //return _stockInfoRepository.QueryFirstNavAsync(x => x.AreaCode == areaCode && Convert.ToDateTime(x.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(x.SpecialParameterDuration)) < DateTime.Now |
| | | // && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo) && x.StockInfoDetails.Any(x => x.Status == (int)StockStateEmun.已入库) && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).Result; |
| | | |
| | | var result = await _stockInfoRepository.QueryFirstNavAsync(x => |
| | | x.AreaCode == areaCode && |
| | | Convert.ToDateTime(x.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(x.SpecialParameterDuration)) < DateTime.Now && |
| | | x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && |
| | | roadways.Contains(x.LocationInfo.RoadwayNo) && |
| | | x.StockInfoDetails != null && x.StockInfoDetails.Any(detail => detail.Status == (int)StockStateEmun.已入库)); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询空盘库存信息 |
| | | /// </summary> |
| | | private DtStockInfo QueryStockInfoForEmptyTray(string areaCode, List<string> roadways) |
| | | private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode, List<string> roadways) |
| | | { |
| | | return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "空托盘") && roadways.Contains(x.LocationInfo.RoadwayNo)) |
| | | .Includes(x => x.LocationInfo) |
| | | .Includes(x => x.StockInfoDetails) |
| | | .OrderBy(x => x.CreateDate) |
| | | .First(); |
| | | //return _stockInfoRepository.QueryFirstNavAsync(x => x.StockInfoDetails.Any(x => x.MaterielCode == "空托盘") && roadways.Contains(x.LocationInfo.RoadwayNo) && x.StockInfoDetails.Any(x => x.Status == (int)StockStateEmun.已入库) && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).Result; |
| | | var result = await _stockInfoRepository.QueryFirstNavAsync(x => |
| | | x.StockInfoDetails != null && x.StockInfoDetails.Any(detail => detail.MaterielCode == "空托盘") && |
| | | roadways.Contains(x.LocationInfo.RoadwayNo) && |
| | | x.StockInfoDetails.Any(detail => detail.Status == (int)StockStateEmun.已入库) && |
| | | x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | |
| | | // 获取目标地址 |
| | | string ToAddress = await GetRoadWayAsync(process); |
| | | //string ToAddress = await GetRoadWayAsync(process); |
| | | string ToAddress = await GetRoadWayAsync(input, process); |
| | | |
| | | // 创建新任务实例 |
| | | var task = new Dt_Task |
| | |
| | | /// <param name="Direction">方向</param> |
| | | /// <param name="area">关系区域</param> |
| | | /// <returns></returns> |
| | | public async Task<string> GetRoadWayAsync(List<string> process) |
| | | public async Task<string> GetRoadWayAsync(RequestTaskDto input, List<string> process) |
| | | { |
| | | var minGroup = _locationRepository.QueryData(x => process.Contains(x.RoadwayNo) && x.LocationStatus == (int)LocationEnum.Free) |
| | | .GroupBy(x => x.RoadwayNo) |