pan
2025-12-03 98c5fbdce57cf9f0914ca5fb2c659c9396d3aed6
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_BasicService/InvokeMESService.cs
@@ -27,31 +27,7 @@
using WIDESEA_Model.Models;
namespace WIDESEA_BasicService
{
    public class TransferDataDto
    {
        public DateTime TransferTime { get; set; }
        public List<TransferItemDto> Items { get; set; }
    }
    public class TransferItemDto
    {
        public string MaterialCode { get; set; }
        public decimal TotalQuantity { get; set; }
        public List<LocationInfoDto> Locations { get; set; }
    }
    public class LocationInfoDto
    {
        public string LocationCode { get; set; }
        public decimal Quantity { get; set; }
        public List<BarcodeInfoDto> Barcodes { get; set; }
    }
    public class BarcodeInfoDto
    {
        public string Barcode { get; set; }
        public decimal Quantity { get; set; }
    }
{
    public class InvokeMESService : IInvokeMESService
    {
        private readonly IHttpClientFactory _httpClientFactory;
@@ -129,7 +105,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 +115,7 @@
                throw new HttpRequestException(body);
            }
            _logger.LogInformation("InvokeMESService  FeedbackOutbound  body:  " + body);
            return JsonConvert.DeserializeObject<ResponseModel>(body);
        }
@@ -248,58 +224,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>
@@ -489,7 +414,7 @@
                    business_type = outboundOrder.BusinessType,
                    factoryArea = outboundOrder.FactoryArea,
                    operationType = 1,
                    Operator = outboundOrder.Operator,
                    Operator = outboundOrder.Operator!=""? outboundOrder.Operator:App.User.UserName,
                    orderNo = outboundOrder.UpperOrderNo,
                    documentsNO = documentNo,
                    status = outboundOrder.OrderStatus,
@@ -828,6 +753,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
@@ -847,7 +777,7 @@
                return WebResponseContent.Instance.Error("处理回传MES时发生异常,请联系管理员");
            }
        }
    }
    }
    public static class UniqueValueGenerator
    {
@@ -861,14 +791,23 @@
        public static string Generate()
        {
            var now = DateTime.Now;
            string datePart = now.ToString("yyyyMMdd");
            string datePart = now.ToString("MMdd");
            long ticksPart = now.Ticks;
            // æ‹¼æŽ¥ï¼šè®¡æ•°å™¨è¡¥0为3位(避免位数不一致)
            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}{ticksPart}{counterPart:D3}";
            return $"{datePart}{counterPart:D3}";
        }
    }
}