| | |
| | | { |
| | | var palletCode = saveModel.MainData["palletCode"].ToString(); |
| | | if (string.IsNullOrEmpty(palletCode)) throw new Exception("æçå·ä¸å¯ä¸ºç©º"); |
| | | var orderNo = saveModel.MainData["orderNo"].ToString(); |
| | | if (string.IsNullOrEmpty(orderNo)) throw new Exception("æ¹å·ä¸å¯ä¸ºç©º"); |
| | | //var orderNo = saveModel.MainData["orderNo"].ToString(); |
| | | //if (string.IsNullOrEmpty(orderNo)) throw new Exception("æ¹å·ä¸å¯ä¸ºç©º"); |
| | | var qty = saveModel.MainData["qty"].ToString(); |
| | | if (string.IsNullOrEmpty(qty)) throw new Exception("è¢æ°ä¸å¯ä¸ºç©º"); |
| | | var batchNo = saveModel.MainData["batchNo"].ToString(); |
| | | if (string.IsNullOrEmpty(batchNo)) throw new Exception("æå·ä¸å¯ä¸ºç©º"); |
| | | |
| | | #region æ¥è¯¢åºåãå
¥åºå |
| | | Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(palletCode); |
| | | if (stockInfo != null) throw new Exception($"æçã{palletCode}ãå·²åå¨åºåä¿¡æ¯"); |
| | | stockInfo = new Dt_StockInfo(); |
| | | stockInfo.Details = new List<Dt_StockInfoDetail>(); |
| | | Dt_InboundOrder? inboundOrder = _inboundService.InbounOrderService.GetInboundOrder(orderNo); |
| | | if (inboundOrder == null) throw new Exception($"æªæ¾å°æ¹å·ä¸ºã{orderNo}ãçå
¥åºå"); |
| | | Dt_InboundOrderDetail? inboundOrderDetail = inboundOrder.Details.Where(x => x.BatchNo == batchNo).FirstOrDefault(); |
| | | if (inboundOrderDetail == null) throw new Exception($"æ¹å·ã{orderNo}ãçå
¥åºåæªæ¾å°æå·ã{batchNo}ã"); |
| | | if (inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity < 1) throw new Exception($"æ¹å·ã{orderNo}ãçæå·ã{batchNo}ãå¯ç»çæ°éä¸è¶³"); |
| | | Dt_InventoryInfo inventoryInfo = _inventoryInfoRepository.QueryFirst(x => x.PalletCode == palletCode); |
| | | if (inventoryInfo != null) throw new Exception($"æçã{palletCode}ãå·²åå¨åºåä¿¡æ¯"); |
| | | Dt_InboundOrderDetail? inboundOrderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.BatchNo == batchNo); |
| | | if (inboundOrderDetail == null) throw new Exception($"æªæ¾å°æ¹å·ã{batchNo}ãçå
¥åºå"); |
| | | if (inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity < qty.ObjToInt()) throw new Exception($"æ¹å·ã{batchNo}ãå¯ç»çæ°éä¸è¶³"); |
| | | Dt_InboundOrder? inboundOrder = _inboundService.InbounOrderService.Repository.QueryFirst(x => x.Id == inboundOrderDetail.OrderId); |
| | | if (inboundOrder == null) throw new Exception($"æªæ¾å°æ¹å·ä¸ºã{batchNo}ãçå
¥åºå"); |
| | | Dt_Inventory_Batch inventory_Batch = _inventoryBatchRepository.QueryFirst(x => x.BatchNo == batchNo); |
| | | if (inventory_Batch == null) throw new Exception($"æªæ¾å°æ¹å·ä¸ºã{batchNo}ãçæ¹æ¬¡ä¿¡æ¯"); |
| | | #endregion |
| | | |
| | | #region åå»ºä»»å¡ |
| | |
| | | Creater = "System", |
| | | PalletCode = palletCode, |
| | | Roadway = "SC01", |
| | | OrderNo = orderNo + batchNo, |
| | | OrderNo = batchNo, |
| | | TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | TaskState = InTaskStatusEnum.AGV_InFinish.ObjToInt(), |
| | | TaskType = TaskTypeEnum.Inbound.ObjToInt(), |
| | | TaskType = inboundOrder.OrderType == InOrderTypeEnum.Quality.ObjToInt() ? TaskTypeEnum.InQuality.ObjToInt() : TaskTypeEnum.Inbound.ObjToInt(), |
| | | CreateDate = DateTime.Now, |
| | | Dispatchertime = DateTime.Now, |
| | | }; |
| | | #endregion |
| | | |
| | | #region æ·»å åºåä¿¡æ¯ãå¤çå
¥åºå |
| | | inboundOrderDetail.ReceiptQuantity++; |
| | | inboundOrderDetail.OrderDetailStatus = inboundOrderDetail.OverInQuantity == inboundOrderDetail.OrderQuantity ? OrderDetailStatusEnum.Over.ObjToInt() : OrderDetailStatusEnum.GroupAndInbound.ObjToInt(); |
| | | if (inboundOrder.Details.FirstOrDefault(x => x.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()) == null) |
| | | inventoryInfo = new Dt_InventoryInfo() |
| | | { |
| | | inboundOrder.OrderStatus = InboundStatusEnum.å
¥åºå®æ.ObjToInt(); |
| | | } |
| | | else if (inboundOrder.OrderStatus == InboundStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | inboundOrder.OrderStatus = InboundStatusEnum.å
¥åºä¸.ObjToInt(); |
| | | } |
| | | Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail() |
| | | { |
| | | Status = StockStatusEmun.ç»çæå.ObjToInt(), |
| | | OrderNo = inboundOrder.OrderNo, |
| | | StockId = stockInfo.Id != 0 ? stockInfo.Id : 0, |
| | | MaterielName = inboundOrderDetail.MaterielName, |
| | | MaterielCode = inboundOrderDetail.MaterielCode, |
| | | BatchNo = inboundOrderDetail.BatchNo, |
| | | StockQuantity = 1, |
| | | SerialNumber = "", |
| | | BatchNo = inventory_Batch.BatchNo, |
| | | MaterielCode = inventory_Batch.MaterielCode, |
| | | MaterielName = inventory_Batch.MaterielName, |
| | | PalletCode = palletCode, |
| | | ProductionDate = inventory_Batch.ProductionDate, |
| | | StockStatus = StockStatusEmun.ç»çæå.ObjToInt(), |
| | | ProductStatus = dt_Task.TaskType == TaskTypeEnum.InQuality.ObjToInt() ? ProductStatusEmun.å¾
æ£2.ObjToInt() : ProductStatusEmun.å¾
æ£1.ObjToInt(), |
| | | ShelfLife = inventory_Batch.ShelfLife, |
| | | ValidityPeriod = inventory_Batch.ValidityPeriod, |
| | | StockQuantity = qty.ObjToInt(), |
| | | BoxQuantity = (qty.ObjToInt() % 8 > 0) ? (qty.ObjToInt() / 8) + 1 : qty.ObjToInt() / 8, |
| | | Creater = "System" |
| | | }; |
| | | if (stockInfo.Id == 0) |
| | | { |
| | | stockInfo.PalletCode = palletCode; |
| | | stockInfo.StockStatus = StockStatusEmun.ç»çæå.ObjToInt(); |
| | | stockInfo.Creater = "System"; |
| | | stockInfo.Remark = "人工ç»çå
¥åº"; |
| | | } |
| | | stockInfo.Details.Add(stockInfoDetail); |
| | | inboundOrder.OrderStatus = InboundStatusEnum.å
¥åºä¸.ObjToInt(); |
| | | inboundOrderDetail.ReceiptQuantity += inventoryInfo.StockQuantity; |
| | | inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt(); |
| | | inventory_Batch.ProductStatus = inventoryInfo.ProductStatus; |
| | | #endregion |
| | | |
| | | Db.Ado.BeginTran(); |
| | | _inboundService.InbounOrderService.UpdateDataWithDetail(inboundOrder); |
| | | _stockService.StockInfoService.AddMaterielGroup(stockInfo); |
| | | _inboundService.InbounOrderService.UpdateData(inboundOrder); |
| | | _inboundService.InboundOrderDetailService.UpdateData(inboundOrderDetail); |
| | | _inventoryInfoRepository.AddData(inventoryInfo); |
| | | _inventoryBatchRepository.UpdateData(inventory_Batch); |
| | | AddData(dt_Task); |
| | | List<WMSTaskDTO> wMSTaskDTOs = _mapper.Map<List<WMSTaskDTO>>(new List<Dt_Task> { dt_Task }); |
| | | var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ReceiveTask, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>()); |
| | | if (ResultData.Result == null) throw new Exception($"åWCSä¸å人工ç»çå
¥åºä»»å¡è¶
æ¶"); |
| | | if (ResultData.Result == null) throw new Exception($"åWCSä¸åå
¥åºä»»å¡è¶
æ¶"); |
| | | responseContent = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result); |
| | | if (responseContent == null) throw new Exception($"ä¸å人工ç»çå
¥åºä»»å¡WCSæ ååº"); |
| | | if (responseContent == null) throw new Exception($"ä¸åå
¥åºä»»å¡WCSæ ååº"); |
| | | if (!responseContent.Status) throw new Exception(responseContent.Message); |
| | | Db.Ado.CommitTran(); |
| | | } |