| | |
| | | using WIDESEA_DTO.Allocate; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; |
| | | using WIDESEA_IRecordService; |
| | | using Microsoft.AspNetCore.Http; |
| | | using MailKit.Net.Smtp; |
| | | |
| | | namespace WIDESEA_OutboundService |
| | | { |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error("æªæ¾å°æ»¡è¶³åºåºæ¡ä»¶çåºåºå"); |
| | | } |
| | | if (outboundOrder.DepartmentCode == "èæåºå
¥åºéå®") |
| | | { |
| | | return WebResponseContent.Instance.Error("è¯¥åæ®å¦ä¸å°çµèæ£å¨è¿è¡èæåºå
¥åºæä½ï¼è¯·ç¨ååè¯"); |
| | | } |
| | | else |
| | | { |
| | | outboundOrder.DepartmentCode = "èæåºå
¥åºéå®"; |
| | | } |
| | | if(outboundOrder.IsBatch == 0) |
| | | { |
| | | return WebResponseContent.Instance.Error("è¯¥åæ®ä¸å±äºåæ¹åä¼ åæ®ï¼ä¸å
许èæåºå
¥åº"); |
| | |
| | | item.NoStockOutQty = 0; |
| | | item.documentsNO = ""; |
| | | } |
| | | _outboundOrderService.UpdateData(outboundOrder); |
| | | _outboundOrderDetailService.UpdateData(outboundOrder.Details); |
| | | return WebResponseContent.Instance.OK("æå"); |
| | | |
| | | } |
| | | |
| | | public WebResponseContent BarcodeValidate(NoStockOutModel noStockOut) |
| | | public WebResponseContent MovePickingOrders(string outOrder) |
| | | { |
| | | Dt_OutboundOrder outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == outOrder).First(); |
| | | if (outboundOrder.DepartmentCode == "èæåºå
¥åºéå®") |
| | | { |
| | | outboundOrder.DepartmentCode = ""; |
| | | } |
| | | _outboundOrderService.UpdateData(outboundOrder); |
| | | return WebResponseContent.Instance.OK("æå"); |
| | | |
| | | } |
| | | |
| | | public WebResponseContent BarcodeValidate(NoStockOutModel noStockOut) |
| | | { |
| | | try |
| | | { |
| | |
| | | var detailLists = new List<Dt_InboundOrderDetail>(); |
| | | var matchedDetail = inboundOrder.Details.FirstOrDefault(detail => |
| | | detail.Barcode == noStockOut.barCode && |
| | | detail.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()); |
| | | detail.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()&& detail.ReceiptQuantity == 0); |
| | | |
| | | if (matchedDetail == null) |
| | | { |
| | | matchedDetail = inboundOrder.Details.FirstOrDefault(detail => |
| | | detail.OutBoxbarcodes == noStockOut.barCode && |
| | | detail.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()); |
| | | detail.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt() && detail.ReceiptQuantity == 0); |
| | | |
| | | if (matchedDetail == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"å¨éè´å {noStockOut.inOder} 䏿ªæ¾å°æ¡ç 为 {noStockOut.barCode} çæç»ã"); |
| | | return WebResponseContent.Instance.Error($"å¨éè´å {noStockOut.inOder} 䏿ªæ¾å°æ¡ç 为 {noStockOut.barCode} çå¯åºåºæç»ã"); |
| | | } |
| | | else |
| | | { |
| | |
| | | { |
| | | if (detail.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt() && |
| | | !string.IsNullOrEmpty(detail.Barcode) && |
| | | detail.OutBoxbarcodes == noStockOut.barCode) |
| | | detail.OutBoxbarcodes == noStockOut.barCode && detail.OrderQuantity > detail.NoStockOutQty) |
| | | { |
| | | detailLists.Add(detail); |
| | | } |
| | |
| | | detailLists.Add(matchedDetail); |
| | | } |
| | | } |
| | | if (!detailLists.Any()) |
| | | { |
| | | return WebResponseContent.Instance.Error("该æ¡ç å·²ç»æ²¡æå¯åºåºæ°é"); |
| | | } |
| | | var outDetails = new List<Dt_OutboundOrderDetail>(); |
| | | // éåæ¯ä¸ªå
¥åºæç» |
| | | foreach (var item in detailLists) |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"å¨åºåºå䏿ªæ¾å°ç©æ{item.MaterielCode}çå¯åºåºæç»"); |
| | | } |
| | | |
| | | // éåç¬¦åæ¡ä»¶çåºåºæç»ï¼éè¡åé
æ°é |
| | | foreach (var outDetail in eligibleOutDetails) |
| | | { |
| | |
| | | { |
| | | try |
| | | { |
| | | |
| | | Dt_OutboundOrder outboundOrder = _inboundOrderRepository.Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == noStockOutSubmit.OutOderSubmit && x.OrderStatus != OutOrderStatusEnum.åºåºå®æ.ObjToInt()).Includes(x => x.Details).First(); |
| | | if (outboundOrder == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°åºåºåï¼{noStockOutSubmit.OutOderSubmit}"); |
| | | } |
| | | |
| | | |
| | | // 1. çéåºæ¬æ¬¡æäº¤æ¡ç å
³èçåºåºæç» |
| | | List<Dt_OutboundOrderDetail> outboundOrderDetail2 = outboundOrder.Details |
| | | .Where(x => !string.IsNullOrWhiteSpace(x.documentsNO) |
| | | && noStockOutSubmit.BarCodeSubmit.Any(barcode => |
| | | x.documentsNO.IndexOf(barcode, StringComparison.OrdinalIgnoreCase) >= 0)) |
| | | .ToList(); |
| | | |
| | | HashSet<string> existBarcodes = new HashSet<string>(); |
| | | |
| | | foreach (var detail in outboundOrderDetail2) |
| | | { |
| | | try |
| | | { |
| | | // ååºååæç»éçæ¡ç å表 |
| | | var barcodesInDoc = JsonConvert.DeserializeObject<List<Barcodes>>(detail.documentsNO); |
| | | if (barcodesInDoc == null) continue; |
| | | |
| | | // ææ¡ç å å
¥å»ééå |
| | | foreach (var b in barcodesInDoc) |
| | | { |
| | | if (!string.IsNullOrEmpty(b.Barcode)) |
| | | existBarcodes.Add(b.Barcode.Trim()); |
| | | } |
| | | } |
| | | catch { } |
| | | } |
| | | |
| | | // 3. å端æäº¤çæ¡ç â å»é |
| | | HashSet<string> submitBarcodes = new HashSet<string>( |
| | | noStockOutSubmit.BarCodeSubmit |
| | | .Where(b => !string.IsNullOrEmpty(b)) |
| | | .Select(b => b.Trim()) |
| | | ); |
| | | |
| | | // 4. æ¾åºãæäº¤äºï¼ä½ç³»ç»éä¸åå¨ãçæ¡ç |
| | | var missingBarcodes = submitBarcodes.Except(existBarcodes).ToList(); |
| | | |
| | | // 5. 妿æç¼ºå¤± â æ¦æªæ¥é |
| | | if (missingBarcodes.Any()) |
| | | { |
| | | return WebResponseContent.Instance.Error( |
| | | $"æ°æ®å¼å¸¸ï¼ä»¥ä¸æ¡ç å¨åºåºå䏿ªæ¾å°æå·²è¢«æ¸
空ï¼{string.Join(",", missingBarcodes)}" |
| | | ); |
| | | } |
| | | |
| | | List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>(); |
| | | |
| | | Dictionary<int, List<string>> orderIdBarCodeDict = new Dictionary<int, List<string>>(); |
| | |
| | | |
| | | var response = NoStockOutresponseModel(inboundOrder, 3, null, allocatefeedmodel); |
| | | |
| | | if (response != null && response.IsSuccess) |
| | | if (response != null && response.IsSuccess && response.Data.Code == "200") |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrderDetail>().SetColumns(it => new Dt_InboundOrderDetail { ReturnToMESStatus = 1 }) |
| | | .Where(it => it.OrderId == inboundOrder.Id && barCodeList.Contains(it.Barcode)).ExecuteCommand(); |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 1 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | if (inboundOrder.OrderStatus == InOrderStatusEnum.å
¥åºå®æ.ObjToInt()) |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 1 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | else if (inboundOrder.OrderStatus == InOrderStatusEnum.å
¥åºä¸.ObjToInt()) |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 3 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 0 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrderDetail>().SetColumns(it => new Dt_InboundOrderDetail { ReturnToMESStatus = 2 }) |
| | | .Where(it => it.OrderId == inboundOrder.Id && barCodeList.Contains(it.Barcode)).ExecuteCommand(); |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus =2}) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | if (inboundOrder.OrderStatus == InOrderStatusEnum.å
¥åºå®æ.ObjToInt()) |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 2 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | else if (inboundOrder.OrderStatus == InOrderStatusEnum.å
¥åºä¸.ObjToInt()) |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 4 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 0 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | return content.Error("åä¼ MES失败"); |
| | | } |
| | | } |
| | |
| | | } |
| | | var response = NoStockOutresponseModel(inboundOrder, 3, feedmodel); |
| | | |
| | | if (response != null && response.IsSuccess) |
| | | if (response != null && response.IsSuccess && response.Data.Code == "200") |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrderDetail>().SetColumns(it => new Dt_InboundOrderDetail { ReturnToMESStatus = 1 }) |
| | | .Where(it => it.OrderId == inboundOrder.Id && barCodeList.Contains(it.Barcode)).ExecuteCommand(); |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 1 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | if (inboundOrder.OrderStatus == InOrderStatusEnum.å
¥åºå®æ.ObjToInt()) |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 1 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | else if (inboundOrder.OrderStatus == InOrderStatusEnum.å
¥åºä¸.ObjToInt()) |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 3 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 0 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrderDetail>().SetColumns(it => new Dt_InboundOrderDetail { ReturnToMESStatus = 2 }).Where(it => it.OrderId == inboundOrder.Id && barCodeList.Contains(it.Barcode)).ExecuteCommand(); |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 2 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | if (inboundOrder.OrderStatus == InOrderStatusEnum.å
¥åºå®æ.ObjToInt()) |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 2 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | else if (inboundOrder.OrderStatus == InOrderStatusEnum.å
¥åºä¸.ObjToInt()) |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 4 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | _inboundOrderRepository.Db.Updateable<Dt_InboundOrder>().SetColumns(it => new Dt_InboundOrder { ReturnToMESStatus = 0 }) |
| | | .Where(it => it.Id == inboundOrder.Id).ExecuteCommand(); |
| | | } |
| | | return content.Error("åä¼ MES失败"); |
| | | } |
| | | } |