| | |
| | | using static WIDESEA_Common.HouseInventoryIn; |
| | | using WIDESEA_Common; |
| | | using Parameter = WIDESEA_Common.Parameter; |
| | | using WIDESEA_Core.LogHelper; |
| | | using WIDESEA_DTO.Task; |
| | | using WIDESEA_Core.TaskEnum; |
| | | |
| | | namespace WIDESEA_TaskInfoService |
| | | { |
| | | public partial class TaskService |
| | | { |
| | | |
| | | |
| | | /// <summary> |
| | | /// PDA申请入库--堆垛机立库入库 |
| | | /// 立库入库指令上传 |
| | | /// </summary> |
| | | /// <param name="stationCode">起始地址</param> |
| | | /// <param name="taskType">任务类型--入空,入料</param> |
| | | /// <param name="palletCode">托盘编号</param> |
| | | /// <returns>返回处理结果</returns> |
| | | public WebResponseContent GenerateInboundTask(string stationCode, int taskType, string palletCode) |
| | | public WebResponseContent InboundRequest(string stationCode, string roadwayNo, string palletCode) |
| | | { |
| | | string? name = Enum.GetName(typeof(TaskTypeEnum), taskType); |
| | | MethodInfo? methodInfo = GetType().GetMethod(name + "Request"); |
| | | if (methodInfo != null) |
| | | // 输入验证 |
| | | if (string.IsNullOrWhiteSpace(palletCode)) |
| | | return WebResponseContent.Instance.Error("请输入正确托盘号"); |
| | | |
| | | try |
| | | { |
| | | WebResponseContent? responseContent = (WebResponseContent?)methodInfo.Invoke(this, new object[] { stationCode, palletCode }); |
| | | if (responseContent != null) |
| | | Dt_Task task = Repository.QueryFirst(x => x.PalletCode == palletCode); |
| | | if (task != null) |
| | | { |
| | | return responseContent; |
| | | PushTasksToWCS(new List<Dt_Task> { task }); |
| | | return WebResponseContent.Instance.OK($"该托盘已生成任务", _mapper.Map<WMSTaskDTO>(task)); |
| | | } |
| | | // 获取入库单明细 |
| | | var inboundOrderDet = GetInboundOrderDetail(palletCode); |
| | | if (inboundOrderDet == null) |
| | | return WebResponseContent.Instance.Error($"未找到托盘号 {palletCode} 对应的入库单明细"); |
| | | |
| | | // 获取入库单 |
| | | var inboundOrder = GetInboundOrder(inboundOrderDet.OrderId); |
| | | if (inboundOrder == null) |
| | | return WebResponseContent.Instance.Error($"未找到入库单信息"); |
| | | |
| | | // 验证入库单明细 |
| | | if (inboundOrder.Details == null || inboundOrder.Details.Count == 0) |
| | | return WebResponseContent.Instance.Error($"入库单 {inboundOrder.OrderNo} 没有明细信息"); |
| | | |
| | | // 获取仓库和巷道信息 |
| | | var warehouse = GetWarehouse(inboundOrder.WarehouseId); |
| | | var roadwayInfo = GetRoadwayInfo(warehouse.WarehouseCode); |
| | | |
| | | // 处理库存信息 |
| | | //var stockInfo = GetOrCreateStockInfo(palletCode, inboundOrder, inboundOrderDet, warehouse); |
| | | var dt_StockInfoDetail = new Dt_StockInfoDetail |
| | | { |
| | | //StockId = stockInfo.Id, |
| | | MaterielCode = inboundOrderDet.MaterielCode, |
| | | MaterielName = inboundOrderDet.MaterielName, |
| | | OrderNo = inboundOrder.OrderNo, |
| | | BatchNo = inboundOrderDet.BatchNo, |
| | | LinId = inboundOrderDet.LinId, |
| | | StockQuantity = inboundOrderDet.OrderQuantity, |
| | | Status = (int)StockStatusEmun.组盘暂存, |
| | | Creater = "WMS", |
| | | CreateDate = DateTime.Now, |
| | | Id = inboundOrderDet.LinId.ObjToInt(), |
| | | }; |
| | | |
| | | var dt_Stock = new Dt_StockInfo |
| | | { |
| | | BatchNo = inboundOrderDet.BatchNo, |
| | | PalletCode = palletCode, |
| | | PalletType = GetPalletType(warehouse, palletCode), |
| | | IsFull = true, |
| | | StockStatus = (int)StockStatusEmun.组盘暂存, |
| | | Creater = "WMS", |
| | | CreateDate = DateTime.Now, |
| | | MaterialType = (int)InventoryMaterialType.成品, |
| | | Materialweight = 0, |
| | | Wlstatus = (int)InventoryMaterialStatus.合格, |
| | | Mgeneratetime = DateTime.Now, |
| | | WarehouseId = warehouse.WarehouseId, |
| | | Details = new List<Dt_StockInfoDetail> { dt_StockInfoDetail } |
| | | }; |
| | | |
| | | // 检查入库请求 |
| | | var checkResult = CheckRequestInbound(roadwayInfo.InSCStationCode, palletCode, true, dt_Stock); |
| | | if (!checkResult.Item1) |
| | | return WebResponseContent.Instance.Error(checkResult.Item2); |
| | | |
| | | // 分配库位并更新数据 |
| | | Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(roadwayNo, dt_Stock.PalletType, dt_Stock.WarehouseId); |
| | | //Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(stationCode, TaskTypeEnum.Inbound.ObjToInt()); |
| | | if (locationInfo == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"货位分配失败,未找到可分配货位"); |
| | | } |
| | | |
| | | Dt_Task newTask = new Dt_Task() |
| | | { |
| | | CurrentAddress = stationCode, |
| | | Grade = 0, |
| | | NextAddress = locationInfo.LocationCode, |
| | | PalletCode = palletCode, |
| | | Roadway = roadwayNo, |
| | | SourceAddress = stationCode, |
| | | TargetAddress = locationInfo.LocationCode, |
| | | TaskType = TaskTypeEnum.Inbound.ObjToInt(), |
| | | TaskStatus = TaskStatusEnum.New.ObjToInt(), |
| | | WarehouseId = dt_Stock.WarehouseId, |
| | | PalletType = dt_Stock.PalletType, |
| | | Creater = "WMS", |
| | | CreateDate = DateTime.Now, |
| | | }; |
| | | |
| | | LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus; |
| | | _unitOfWorkManage.BeginTran(); |
| | | Db.InsertNav(dt_Stock).Include(x => x.Details).ExecuteCommand(); |
| | | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus.ObjToInt(), LocationStatusEnum.Lock.ObjToInt(), LocationChangeType.InboundAssignLocation.ObjToInt()); |
| | | //_basicService.LocationInfoService.UpdateLocationStatus(locationInfo, newTask.PalletType, LocationStatusEnum.Lock, newTask.WarehouseId); |
| | | int taskId = BaseDal.AddData(newTask); |
| | | newTask.TaskId = taskId; |
| | | _stockRepository.StockInfoRepository.UpdateData(dt_Stock); |
| | | _unitOfWorkManage.CommitTran(); |
| | | WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask); |
| | | |
| | | PushTasksToWCS(new List<Dt_Task> { newTask }); |
| | | if (newTask.WarehouseId == 5) PutFinish(stationCode); |
| | | return WebResponseContent.Instance.OK(data: wMSTaskDTO); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | private Dt_InboundOrderDetail GetInboundOrderDetail(string palletCode) |
| | | { |
| | | return BaseDal.Db.Queryable<Dt_InboundOrderDetail>() |
| | | .Where(x => x.LPNNo == palletCode) |
| | | .First(); |
| | | } |
| | | |
| | | private Dt_InboundOrder GetInboundOrder(int orderId) |
| | | { |
| | | return BaseDal.Db.Queryable<Dt_InboundOrder>() |
| | | .Where(x => x.Id == orderId) |
| | | .Includes(x => x.Details) |
| | | .First(); |
| | | } |
| | | |
| | | private Dt_Warehouse GetWarehouse(int warehouseId) |
| | | { |
| | | return _basicService.WarehouseService.Repository |
| | | .QueryFirst(x => x.WarehouseId == warehouseId); |
| | | } |
| | | |
| | | private Dt_RoadwayInfo GetRoadwayInfo(string warehouseCode) |
| | | { |
| | | return _basicService.RoadwayInfoService.Repository |
| | | .QueryFirst(x => x.RoadwayNo == warehouseCode); |
| | | } |
| | | |
| | | private Dt_StockInfo GetOrCreateStockInfo(string palletCode, Dt_InboundOrder inboundOrder, Dt_InboundOrderDetail inboundOrderDet, Dt_Warehouse warehouse) |
| | | { |
| | | var stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>() |
| | | .Where(x => x.PalletCode == palletCode) |
| | | .Includes(x => x.Details) |
| | | .First(); |
| | | decimal beforeQuantity = 0; |
| | | if (stockInfo == null) |
| | | { |
| | | stockInfo = CreateNewStockInfo(palletCode, inboundOrder, inboundOrderDet, warehouse); |
| | | //CreateStockInfoDetail(stockInfo, inboundOrder, inboundOrderDet); |
| | | } |
| | | else |
| | | { |
| | | return WebResponseContent.Instance.Error("未找到该任务类型业务"); |
| | | if (stockInfo.StockStatus != StockStatusEmun.组盘暂存.ObjToInt()) |
| | | { |
| | | return null; |
| | | } |
| | | beforeQuantity = stockInfo.Details.Sum(x => x.StockQuantity); |
| | | } |
| | | return WebResponseContent.Instance.Error("错误"); |
| | | |
| | | return stockInfo; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 空托盘入库 |
| | | /// </summary> |
| | | /// <param name="stationCode">起始地址</param> |
| | | /// <param name="palletCode">托盘编号</param> |
| | | /// <returns>返回处理结果</returns> |
| | | public WebResponseContent PalletInboundRequest(string stationCode, string palletCode) |
| | | private Dt_StockInfo CreateNewStockInfo(string palletCode, Dt_InboundOrder inboundOrder, Dt_InboundOrderDetail inboundOrderDet, Dt_Warehouse warehouse) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | var dt_StockInfoDetail = new Dt_StockInfoDetail |
| | | { |
| | | (bool, string) result = CheckRequestInbound(stationCode, palletCode, false); |
| | | if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2); |
| | | content = AssignLocUpdateData(stationCode, TaskTypeEnum.PalletInbound.ObjToInt(), palletCode, false); |
| | | } |
| | | catch (Exception ex) |
| | | //StockId = stockInfo.Id, |
| | | MaterielCode = inboundOrderDet.MaterielCode, |
| | | MaterielName = inboundOrderDet.MaterielName, |
| | | OrderNo = inboundOrder.OrderNo, |
| | | BatchNo = inboundOrderDet.BatchNo, |
| | | LinId = inboundOrderDet.LinId, |
| | | StockQuantity = inboundOrderDet.OrderQuantity, |
| | | Status = (int)StockStatusEmun.组盘暂存, |
| | | Creater = "WMS", |
| | | CreateDate = DateTime.Now, |
| | | Id = inboundOrderDet.LinId.ObjToInt(), |
| | | }; |
| | | |
| | | var dt_Stock = new Dt_StockInfo |
| | | { |
| | | content = WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | return content; |
| | | BatchNo = inboundOrderDet.BatchNo, |
| | | PalletCode = palletCode, |
| | | PalletType = GetPalletType(warehouse, palletCode), |
| | | IsFull = true, |
| | | StockStatus = (int)StockStatusEmun.组盘暂存, |
| | | Creater = "WMS", |
| | | CreateDate = DateTime.Now, |
| | | MaterialType = (int)InventoryMaterialType.成品, |
| | | Materialweight = 0, |
| | | Wlstatus = (int)InventoryMaterialStatus.合格, |
| | | Mgeneratetime = DateTime.Now, |
| | | WarehouseId = warehouse.WarehouseId, |
| | | Details = new List<Dt_StockInfoDetail> { dt_StockInfoDetail } |
| | | }; |
| | | |
| | | //_stockService.StockInfoService.Repository.AddData(dt_Stock); |
| | | Db.InsertNav(dt_Stock).Include(x => x.Details).ExecuteCommand(); |
| | | return _stockService.StockInfoService.Repository.GetStockInfo(palletCode); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 物料入库 |
| | | /// </summary> |
| | | /// <param name="stationCode">起始地址</param> |
| | | /// <param name="palletCode">托盘编号</param> |
| | | /// <returns>返回处理结果</returns> |
| | | public WebResponseContent InboundRequest(SaveModel saveModel) |
| | | private void CreateStockInfoDetail(Dt_StockInfo stockInfo, Dt_InboundOrder inboundOrder, Dt_InboundOrderDetail inboundOrderDet) |
| | | { |
| | | string palletCode = saveModel.palletCode; |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | var dt_StockInfoDetail = new Dt_StockInfoDetail |
| | | { |
| | | Dt_InboundOrderDetail inboundOrderDet = BaseDal.Db.Queryable<Dt_InboundOrderDetail>().Where(x => x.LPNNo == palletCode).First(); |
| | | Dt_InboundOrder inboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.Id == inboundOrderDet.OrderId).Includes(x => x.Details).First(); |
| | | Dt_RoadwayInfo roadwayInfo = _basicService.RoadwayInfoService.Repository.QueryFirst(x => x.RoadwayNo == inboundOrder.OutWareHouse); |
| | | if (inboundOrder == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"未找到入库单信息"); |
| | | } |
| | | if (inboundOrder.Details == null || inboundOrder.Details.Count <= 0) |
| | | { |
| | | return WebResponseContent.Instance.Error($"未找到入库单明细信息"); |
| | | } |
| | | Dt_StockInfo stockInfo1 = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First(); |
| | | if (stockInfo1 != null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"已存在此托盘库存信息"); |
| | | } |
| | | StockId = stockInfo.Id, |
| | | MaterielCode = inboundOrderDet.MaterielCode, |
| | | MaterielName = inboundOrderDet.MaterielName, |
| | | OrderNo = inboundOrder.OrderNo, |
| | | BatchNo = inboundOrderDet.BatchNo, |
| | | LinId = inboundOrderDet.LinId, |
| | | StockQuantity = inboundOrderDet.OrderQuantity, |
| | | Status = (int)StockStatusEmun.组盘暂存, |
| | | Creater = "WMS", |
| | | CreateDate = DateTime.Now, |
| | | Id = inboundOrderDet.LinId.ObjToInt(), |
| | | }; |
| | | |
| | | //Dt_InboundOrder dt_Int = _inboundService.InbounOrderService.Repository.QueryFirst(x => x.UpperOrderNo == palletCode); |
| | | //Dt_InboundOrderDetail dt_InboundOrderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.OrderId == dt_Int.Id); |
| | | if (inboundOrder != null) |
| | | { |
| | | Dt_StockInfo dt_Stock = new() |
| | | { |
| | | BatchNo = inboundOrderDet.BatchNo, |
| | | PalletCode = palletCode, |
| | | IsFull = true, |
| | | StockStatus = (int)StockStatusEmun.组盘暂存, |
| | | Creater = "WMS", |
| | | CreateDate = DateTime.Now, |
| | | MaterialType = (int)InventoryMaterialType.成品, |
| | | Materialweight = 0, |
| | | Wlstatus = (int)InventoryMaterialStatus.合格, |
| | | Mgeneratetime = DateTime.Now, |
| | | }; |
| | | _stockService.StockInfoService.Repository.AddData(dt_Stock); |
| | | } |
| | | Dt_StockInfo dt_StockInfo = _stockService.StockInfoService.Repository.GetStockInfo(palletCode); |
| | | if (inboundOrderDet != null) |
| | | { |
| | | Dt_StockInfoDetail dt_StockInfoDetail = new() |
| | | { |
| | | StockId = dt_StockInfo.Id, |
| | | MaterielCode = inboundOrderDet.MaterielCode, //物料号 |
| | | MaterielName = inboundOrderDet.MaterielName, //物料名称 |
| | | OrderNo = inboundOrder.OrderNo, //物料详情 |
| | | BatchNo = inboundOrderDet.BatchNo, //物料批次 |
| | | LinId = inboundOrderDet.LinId, //SerialNumber = targetCodes[2].ToString(), //包号 |
| | | //BatchNoName = dt_Int.OrderNo, |
| | | StockQuantity = inboundOrderDet.OrderQuantity, //重量 |
| | | OutboundQuantity = 1, //序列号 |
| | | Status = (int)StockStatusEmun.组盘暂存, |
| | | Creater = "WMS", |
| | | CreateDate = DateTime.Now, |
| | | Id = inboundOrderDet.LinId.ObjToInt(), |
| | | }; |
| | | _stockService.StockInfoDetailService.Repository.AddData(dt_StockInfoDetail); |
| | | } |
| | | Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First(); |
| | | (bool, string) result = CheckRequestInbound(roadwayInfo.InSCStationCode, palletCode, true, stockInfo); |
| | | if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2); |
| | | content = AssignLocUpdateData(roadwayInfo.InSCStationCode, TaskTypeEnum.Inbound.ObjToInt(), palletCode, true, stockInfo, inboundOrder.OrderNo); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content = WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | return content; |
| | | _stockService.StockInfoDetailService.Repository.AddData(dt_StockInfoDetail); |
| | | } |
| | | |
| | | //查询仓库托盘货物类型 |
| | | public int GetPalletType(Dt_Warehouse warehouse, string palletCode) |
| | | { |
| | | if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ToString()) |
| | | { |
| | | if (palletCode.Substring(0, 1) == "6") |
| | | { |
| | | return PalletTypeEnum.MediumPallet.ObjToInt(); |
| | | } |
| | | else |
| | | { |
| | | return PalletTypeEnum.LargestPallet.ObjToInt(); |
| | | } |
| | | } |
| | | else if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ObjToString()) |
| | | { |
| | | Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 1)); |
| | | if (palletTypeInfo == null) |
| | | { |
| | | throw new Exception($"托盘号错误"); |
| | | } |
| | | return palletTypeInfo.PalletType; |
| | | } |
| | | //else if (warehouse.WarehouseCode == WarehouseEnum.HA152.ObjToString()) |
| | | //{ |
| | | // Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 2)); |
| | | // if (palletTypeInfo == null) |
| | | // { |
| | | // throw new Exception($"托盘号错误"); |
| | | // } |
| | | // return palletTypeInfo.PalletType; |
| | | //} |
| | | //else if (warehouse.WarehouseCode == WarehouseEnum.HA57.ObjToString()) |
| | | //{ |
| | | // Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 3)); |
| | | // if (palletTypeInfo == null) |
| | | // { |
| | | // throw new Exception($"托盘号错误"); |
| | | // } |
| | | // return palletTypeInfo.PalletType; |
| | | //} |
| | | return -1; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | #region |
| | | //public WebResponseContent InboundRequest(SaveModel saveModel) |
| | | //{ |
| | | // string palletCode = saveModel.palletCode; |
| | | // if (saveModel.palletCode == null) return WebResponseContent.Instance.Error($"请输入正确托盘号"); |
| | | // WebResponseContent content = new WebResponseContent(); |
| | | // try |
| | | // { |
| | | // Dt_InboundOrderDetail inboundOrderDet = BaseDal.Db.Queryable<Dt_InboundOrderDetail>().Where(x => x.LPNNo == palletCode).First(); |
| | | // Dt_InboundOrder inboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.Id == inboundOrderDet.OrderId).Includes(x => x.Details).First(); |
| | | // if (inboundOrder == null) |
| | | // { |
| | | // return WebResponseContent.Instance.Error($"未找到入库单信息"); |
| | | // } |
| | | // Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseId == inboundOrder.WarehouseId); |
| | | // Dt_RoadwayInfo roadwayInfo = _basicService.RoadwayInfoService.Repository.QueryFirst(x => x.RoadwayNo == warehouse.WarehouseCode); |
| | | // if (roadwayInfo != null) { } |
| | | |
| | | // if (inboundOrder.Details == null || inboundOrder.Details.Count <= 0) |
| | | // { |
| | | // return WebResponseContent.Instance.Error($"未找到入库单明细信息"); |
| | | // } |
| | | // Dt_StockInfo stockInfo1 = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First(); |
| | | // if (stockInfo1 == null) |
| | | // { |
| | | // Dt_StockInfo dt_Stock = new() |
| | | // { |
| | | // BatchNo = inboundOrderDet.BatchNo, |
| | | // PalletCode = palletCode, |
| | | // IsFull = true, |
| | | // StockStatus = (int)StockStatusEmun.组盘暂存, |
| | | // Creater = "WMS", |
| | | // CreateDate = DateTime.Now, |
| | | // MaterialType = (int)InventoryMaterialType.成品, |
| | | // Materialweight = 0, |
| | | // Wlstatus = (int)InventoryMaterialStatus.合格, |
| | | // Mgeneratetime = DateTime.Now, |
| | | // }; |
| | | // _stockService.StockInfoService.Repository.AddData(dt_Stock); |
| | | |
| | | // Dt_StockInfo dt_StockInfo = _stockService.StockInfoService.Repository.GetStockInfo(palletCode); |
| | | // Dt_StockInfoDetail dt_StockInfoDetail = new() |
| | | // { |
| | | // StockId = dt_StockInfo.Id, |
| | | // MaterielCode = inboundOrderDet.MaterielCode, //物料号 |
| | | // MaterielName = inboundOrderDet.MaterielName, //物料名称 |
| | | // OrderNo = inboundOrder.OrderNo, //物料详情 |
| | | // BatchNo = inboundOrderDet.BatchNo, //物料批次 |
| | | // LinId = inboundOrderDet.LinId, //SerialNumber = targetCodes[2].ToString(), //包号 |
| | | // //BatchNoName = dt_Int.OrderNo, |
| | | // StockQuantity = inboundOrderDet.OrderQuantity, //重量 |
| | | // //OutboundQuantity = 1, //序列号 |
| | | // Status = (int)StockStatusEmun.组盘暂存, |
| | | // Creater = "WMS", |
| | | // CreateDate = DateTime.Now, |
| | | // Id = inboundOrderDet.LinId.ObjToInt(), |
| | | // }; |
| | | // _stockService.StockInfoDetailService.Repository.AddData(dt_StockInfoDetail); |
| | | // } |
| | | // Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First(); |
| | | // (bool, string) result = CheckRequestInbound(roadwayInfo.InSCStationCode, palletCode, true, stockInfo); |
| | | // if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2); |
| | | // content = AssignLocUpdateData(roadwayInfo.InSCStationCode, TaskTypeEnum.Inbound.ObjToInt(), palletCode, true, stockInfo, inboundOrder.OrderNo); |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // content = WebResponseContent.Instance.Error(ex.Message); |
| | | // } |
| | | // return content; |
| | | //} |
| | | #endregion |
| | | public string ReceiveWMSInventoryIn = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSInventoryIn"]; |
| | | /// <summary> |
| | | /// 盘点入库 |
| | | /// 盘点差异数量回传 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent InventoryIn(string name, int qty) |
| | |
| | | { |
| | | Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == name); |
| | | Dt_StockInfoDetail stockInfoDetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == stockInfo.Id); |
| | | //Dt_OutboundOrder outboundOrder = _outboundService.OutboundOrderService.Repository.QueryFirst(x => x.OrderNo == stockInfoDetail.OrderNo); |
| | | Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.LPNNo == stockInfo.PalletCode); |
| | | Dt_OutboundOrder outboundOrder = _outboundService.OutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetail.OrderId); |
| | | HouseInventoryIn houseInboundPassBack = new HouseInventoryIn(); |
| | |
| | | houseInboundPassBack.Context.Add("InvOrgId", InvOrgId); |
| | | var responses = HttpHelper.Post<WebResponseContent>(ReceiveWMSInventoryIn, houseInboundPassBack, "立库入库数量回传WMS"); |
| | | } |
| | | |
| | | // #region 验证数据 |
| | | //(bool, string, object ?) result = CheckInboundOrderAddData(orderAddDTO1); |
| | | // if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2); |
| | | // #endregion |
| | | |
| | | // Dt_OutboundOrder inboundOrder = _mapper.Map<Dt_OutboundOrder>(orderAddDTO1); |
| | | // inboundOrder.OrderStatus = InboundStatusEnum.未开始.ObjToInt(); |
| | | // inboundOrder.OrderType = OutOrderTypeEnum.OutInventory.ObjToInt(); |
| | | // inboundOrder.Creater = "WMS"; |
| | | // inboundOrder.CreateDate = DateTime.Now; |
| | | // bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt(); |
| | | _basicService.LocationInfoService.UpdateLocationLock(locationInfo, task.TaskNum, StockChangeType.Inbound.ObjToInt(), false); |
| | | } |
| | | //下发入库任务至WCS |
| | | //var responses = HttpHelper.Post<WebResponseContent>(ReceiveWMSTask, task, "下发任务入库"); |
| | | dt_Int.OrderStatus = InboundStatusEnum.入库中.ObjToInt(); |
| | | _inboundService.InbounOrderService.Repository.UpdateData(dt_Int); |
| | | _basicService.LocationInfoService.Repository.UpdateData(locationInfo); |
| | |
| | | { |
| | | return (false, "该托盘号已有任务"); |
| | | } |
| | | //if (BaseDal.QueryFirst(x => (x.SourceAddress == stationCode || x.CurrentAddress == stationCode) && x.TaskStatus == InTaskStatusEnum.InNew.ObjToInt()) != null) |
| | | //{ |
| | | // return (false, "当前入库站台已有一条新建任务"); |
| | | //} |
| | | if (BaseDal.QueryFirst(x => (x.SourceAddress == stationCode || x.CurrentAddress == stationCode) && x.TaskStatus == InTaskStatusEnum.InNew.ObjToInt()) != null) |
| | | { |
| | | return (false, "当前入库站台已有一条新建任务"); |
| | | } |
| | | if (isCheckStock) |
| | | { |
| | | if (stockInfo == null) |
| | |
| | | |
| | | return (true, "成功"); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 根据托盘条码,起点位置,生成入库信息 |
| | |
| | | // throw; |
| | | // } |
| | | //} |
| | | |
| | | public WebResponseContent PalletQueryinventory() |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | List<Dt_LocationInfo> locationinfoData = _basicService.LocationInfoService.Repository.QueryData(x => x.RoadwayNo == "2" && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() |
| | | && x.LocationType == (int)LocationTypeEnum.EmptyCube && x.EnableStatus == (int)EnableStatusEnum.Normal); |
| | | if (locationinfoData.Count < 20) |
| | | { |
| | | return content = WebResponseContent.Instance.OK(data: 1); |
| | | } |
| | | else |
| | | { |
| | | return content = WebResponseContent.Instance.OK(data: 3); |
| | | } |
| | | } |
| | | } |
| | | } |