1
647556386
2025-12-03 475fc7c0176aafe0e0833ba4dd5cab9fd5c18160
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_BasicService/InvokeMESService.cs
@@ -129,7 +129,7 @@
            _client.DefaultRequestHeaders.Clear();
            _client.DefaultRequestHeaders.Add("Accept", "application/json");
            _logger.LogInformation("InvokeMESService  FeedbackOutbound :  " + json);
            _logger.LogInformation("InvokeMESService  FeedbackOutbound :  "+ model.orderNo +"  , " + json);
            var response = await _client.PostAsync("AldMaterialOutbound/MaterialOutbound", content);
            string body = await response.Content.ReadAsStringAsync();
@@ -139,7 +139,7 @@
                throw new HttpRequestException(body);
            }
            _logger.LogInformation("InvokeMESService  FeedbackOutbound  body:  " + body);
            return JsonConvert.DeserializeObject<ResponseModel>(body);
        }
@@ -248,58 +248,7 @@
            }
        }
        /// <summary>
        /// å‡†å¤‡å›žä¼ æ•°æ®
        /// </summary>
        private TransferDataDto PrepareTransferData(List<Dt_PickingRecord> pickingRecords)
        {
            var transferData = new TransferDataDto
            {
                TransferTime = DateTime.Now,
                Items = new List<TransferItemDto>()
            };
            // æŒ‰ç‰©æ–™åˆ†ç»„
            var materialGroups = pickingRecords
                .GroupBy(x => x.MaterielCode)
                .ToList();
            foreach (var group in materialGroups)
            {
                var item = new TransferItemDto
                {
                    MaterialCode = group.Key,
                    TotalQuantity = group.Sum(x => x.PickQuantity),
                    Locations = new List<LocationInfoDto>()
                };
                // æŒ‰è´§ä½åˆ†ç»„
                var locationGroups = group
                    .GroupBy(x => x.LocationCode)
                    .ToList();
                foreach (var locationGroup in locationGroups)
                {
                    var location = new LocationInfoDto
                    {
                        LocationCode = locationGroup.Key,
                        Quantity = locationGroup.Sum(x => x.PickQuantity),
                        Barcodes = locationGroup.Select(x => new BarcodeInfoDto
                        {
                            Barcode = x.Barcode,
                            Quantity = x.PickQuantity
                        }).ToList()
                    };
                    item.Locations.Add(location);
                }
                transferData.Items.Add(item);
            }
            return transferData;
        }
        /// <summary>
        /// 
        /// </summary>
@@ -511,7 +460,7 @@
                        materialCode = detail.MaterielCode,
                        lineNo = detail.lineNo,
                        warehouseCode = detail.WarehouseCode,
                        qty = 0,
                        qty = detail.BarcodeQty,
                        currentDeliveryQty = 0,
                        unit = detail.BarcodeUnit,
                        barcodes = new List<WIDESEA_DTO.Outbound.BarcodesModel>()
@@ -544,8 +493,7 @@
                        else
                        {
                            barModel.qty = item.PickQuantity;
                        }
                        detailModel.qty += barModel.qty;
                        }
                        detailModel.currentDeliveryQty += barModel.qty;
                        detailModel.barcodes.Add(barModel);
                    }
@@ -553,12 +501,12 @@
                    feedModel.details.Add(detailModel);
                }
                feedModel.details = feedModel.details.GroupBy(item => new { item.materialCode, item.lineNo, item.warehouseCode, item.unit }).Select(group => new FeedbackOutboundDetailsModel
                feedModel.details = feedModel.details.GroupBy(item => new { item.materialCode, item.lineNo, item.warehouseCode, item.unit,item.qty  }).Select(group => new FeedbackOutboundDetailsModel
                {
                    materialCode = group.Key.materialCode,
                    lineNo = group.Key.lineNo,
                    warehouseCode = group.Key.warehouseCode,
                    qty = group.Sum(x => x.qty),
                    qty = group.Key.qty,
                    currentDeliveryQty = group.Sum(x => x.currentDeliveryQty),
                    unit = group.Key.unit,
                    barcodes = group.SelectMany(x => x.barcodes.GroupBy(o => new { o.barcode, o.supplyCode, o.batchNo, o.unit }).Select(row => new WIDESEA_DTO.Outbound.BarcodesModel
@@ -829,6 +777,11 @@
                            .Where(x => x.OrderNo == orderNo)
                            .ExecuteCommandAsync();
                        await _pickingRecoreRepository.Db.Updateable<Dt_PickingRecord>()
                                 .SetColumns(x => x.ReturnToMESStatus == 1)
                            .Where(x => x.OrderNo == orderNo)
                            .ExecuteCommandAsync();
                        return WebResponseContent.Instance.OK("回传MES成功");
                    }
                    else
@@ -848,7 +801,7 @@
                return WebResponseContent.Instance.Error("处理回传MES时发生异常,请联系管理员");
            }
        }
    }
    }
    public static class UniqueValueGenerator
    {
@@ -862,14 +815,27 @@
        public static string Generate()
        {
            var now = DateTime.Now;
            string datePart = now.ToString("yyyyMMdd");
            string datePart = now.ToString("MMdd");
            long ticksPart = now.Ticks;
            // åŽŸå­é€’å¢žè®¡æ•°å™¨ï¼ˆå–æ¨¡1000,确保计数器仅3位,控制长度)
            long counterPart = Interlocked.Increment(ref _counter) % 1000;
            // æ‹¼æŽ¥ï¼šè®¡æ•°å™¨è¡¥0为3位(避免位数不一致)
            return $"{datePart}{ticksPart}{counterPart:D3}";
            return $"{datePart}{ticksPart}";
        }
        public static string GenerateCount()
        {
            var now = DateTime.Now;
            string datePart = now.ToString("yyyyMMddHHmmss");
            // åŽŸå­é€’å¢žè®¡æ•°å™¨ï¼ˆå–æ¨¡1000,确保计数器仅3位,控制长度)
            long counterPart = Interlocked.Increment(ref _counter) % 1000;
            // æ‹¼æŽ¥ï¼šè®¡æ•°å™¨è¡¥0为3位(避免位数不一致)
            return $"{datePart}{counterPart:D3}";
        }
    }
}