| | |
| | | /// <returns></returns> |
| | | public Dt_InboundOrder GetInboundOrder(string inboundOrderNo) |
| | | { |
| | | return BaseDal.Db.Queryable<Dt_InboundOrder>().Includes(x => x.Details).First(x => x.OrderNo == inboundOrderNo); ; |
| | | return BaseDal.Db.Queryable<Dt_InboundOrder>().Includes(x => x.Details).First(x => x.OrderNo == inboundOrderNo); |
| | | } |
| | | /// <summary> |
| | | /// PDAç»ç |
| | | /// åç§ç©æç»ç |
| | | /// </summary> |
| | | /// <param name="pdaMaterielGroupDTO"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent PdaAddStockInfo(PdaMaterielGroupDTO pdaMaterielGroupDTO) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_MaterielInfo materielInfo = _basicService.MaterielInfoService.GetMaterielInfo(pdaMaterielGroupDTO.MaterielCode); |
| | | |
| | | Dt_InboundOrder inboundOrder = GetInboundOrder(pdaMaterielGroupDTO.OrderNo); |
| | | |
| | | Dt_StockInfo? stockInfo = _stockService.StockInfoService.GetStockByPalletCode(pdaMaterielGroupDTO.PalletCode); |
| | | |
| | | var result = CheckMaterielGroupParam(pdaMaterielGroupDTO, materielInfo, inboundOrder, stockInfo); |
| | | if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2); |
| | | |
| | | if (stockInfo == null) |
| | | { |
| | | stockInfo = new Dt_StockInfo(); |
| | | stockInfo.Details = new List<Dt_StockInfoDetail>(); |
| | | } |
| | | var stockInfoDetail = stockInfo.Details.Where(x => pdaMaterielGroupDTO.MaterielCode == x.MaterielCode && x.BatchNo == pdaMaterielGroupDTO.BatchNo).FirstOrDefault(); |
| | | if (stockInfoDetail == null) |
| | | { |
| | | stockInfoDetail = new Dt_StockInfoDetail() |
| | | { |
| | | Status = StockStatusEmun.ç»çæå.ObjToInt(), |
| | | OrderNo = inboundOrder.OrderNo, |
| | | StockId = stockInfo.Id != 0 ? stockInfo.Id : 0, |
| | | MaterielName = materielInfo.MaterielName, |
| | | MaterielCode = materielInfo.MaterielCode, |
| | | BatchNo = pdaMaterielGroupDTO.BatchNo, |
| | | StockQuantity = pdaMaterielGroupDTO.ReceiptQuantity, |
| | | SerialNumber = $"{inboundOrder.OrderNo} | {materielInfo.MaterielCode} | {pdaMaterielGroupDTO.BatchNo} | {pdaMaterielGroupDTO.ReceiptQuantity}", |
| | | Creater = "System" |
| | | }; |
| | | if (stockInfo.Id == 0) |
| | | { |
| | | stockInfo.PalletCode = pdaMaterielGroupDTO.PalletCode; |
| | | stockInfo.StockStatus = StockStatusEmun.ç»çæå.ObjToInt(); |
| | | stockInfo.Creater = "System"; |
| | | } |
| | | stockInfo.Details.Add(stockInfoDetail); |
| | | } |
| | | else |
| | | { |
| | | stockInfoDetail.StockQuantity += pdaMaterielGroupDTO.ReceiptQuantity; |
| | | stockInfoDetail.SerialNumber = $"{inboundOrder.OrderNo} | {materielInfo.MaterielCode} | {pdaMaterielGroupDTO.BatchNo} | {(int)stockInfoDetail.StockQuantity}"; |
| | | } |
| | | |
| | | |
| | | Dt_InboundOrderDetail inboundOrderDetail = inboundOrder.Details.Where(x => materielInfo.MaterielCode == x.MaterielCode && x.BatchNo == pdaMaterielGroupDTO.BatchNo).FirstOrDefault();//订å详æ
|
| | | |
| | | 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) |
| | | { |
| | | inboundOrder.OrderStatus = InboundStatusEnum.å
¥åºå®æ.ObjToInt(); |
| | | } |
| | | else if (inboundOrder.OrderStatus == InboundStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | inboundOrder.OrderStatus = InboundStatusEnum.å
¥åºä¸.ObjToInt(); |
| | | } |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | UpdateData(inboundOrder); |
| | | _inboundOrderDetailService.UpdateData(inboundOrderDetail); |
| | | _stockService.StockInfoService.AddMaterielGroup(stockInfo); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ç»ç |
| | | /// MESä¸åç»ç |
| | | /// </summary> |
| | | /// <param name="materielGroupDTO"></param> |
| | | /// <returns></returns> |
| | |
| | | List<Dt_StockInfoDetail> stockInfoDetails = _mapper.Map<List<Dt_StockInfoDetail>>(matSerialNumberDTOs); |
| | | stockInfoDetails.ForEach(x => |
| | | { |
| | | x.Status = 0; |
| | | x.Status = StockStatusEmun.ç»çæå.ObjToInt(); |
| | | x.OrderNo = inboundOrder.OrderNo; |
| | | x.MaterielName = materielInfos.FirstOrDefault(v => v.MaterielCode == x.MaterielCode)?.MaterielName ?? ""; |
| | | x.StockId = stockInfo.Id != 0 ? stockInfo.Id : 0; |
| | |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// éªè¯PDAç»çæ°æ® |
| | | /// </summary> |
| | | /// <param name="materielGroupDTO"></param> |
| | | /// <param name="materielInfo"></param> |
| | | /// <param name="inboundOrder"></param> |
| | | /// <param name="stockInfo"></param> |
| | | /// <returns></returns> |
| | | public (bool, string, object?) CheckMaterielGroupParam(PdaMaterielGroupDTO materielGroupDTO, Dt_MaterielInfo materielInfo, Dt_InboundOrder inboundOrder, Dt_StockInfo? stockInfo) |
| | | { |
| | | if (_taskRepository.QueryFirst(x => x.PalletCode == materielGroupDTO.PalletCode) != null) |
| | | { |
| | | return (false, "该æçå·å·²æä»»å¡", materielGroupDTO); |
| | | } |
| | | if (stockInfo != null && !string.IsNullOrEmpty(stockInfo.LocationCode) && stockInfo.StockStatus != StockStatusEmun.ç»çæå.ObjToInt()) |
| | | { |
| | | return (false, "已䏿¶çæçä¸è½å次ç»ç", materielGroupDTO); |
| | | } |
| | | if (materielInfo == null) |
| | | { |
| | | return (false, "æç©æä¿¡æ¯æªå½å
¥ï¼è¯·å½å
¥ç©æä¿¡æ¯", materielGroupDTO); |
| | | } |
| | | if (inboundOrder == null) |
| | | { |
| | | return (false, "åæ®ä¸åå¨", materielGroupDTO); |
| | | } |
| | | if (inboundOrder.Details == null || inboundOrder.Details.Count == 0) |
| | | { |
| | | return (false, "æ åæ®æç»ä¿¡æ¯", materielGroupDTO); |
| | | } |
| | | |
| | | if (inboundOrder.OrderStatus != InboundStatusEnum.æªå¼å§.ObjToInt() && inboundOrder.OrderStatus != InboundStatusEnum.å
¥åºä¸.ObjToInt()) |
| | | { |
| | | return (false, "è¯¥åæ®ä¸å¯åç»ç", materielGroupDTO); |
| | | } |
| | | |
| | | Dt_InboundOrderDetail inboundOrderDetail = inboundOrder.Details.Where(x => materielInfo.MaterielCode == x.MaterielCode && x.BatchNo == materielGroupDTO.BatchNo).FirstOrDefault(); |
| | | if (inboundOrderDetail == null) |
| | | { |
| | | return (false, "ç©æææ¹æ¬¡å·æè¯¯", materielGroupDTO); |
| | | } |
| | | if (inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity < 1) |
| | | { |
| | | //return (false, "æç©æè¶
åºåæ®æ°é", materielGroupDTO); |
| | | return (false, "ç»çè¶
åºåæ®æ°é", materielGroupDTO); |
| | | } |
| | | return (true, "æå", inboundOrderDetail); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// éªè¯ç»çæ°æ® |