pan
2025-12-03 61fb796ac4c84a5bbcc42583b4826bdd082487c1
ÏîÄ¿´úÂë/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>
@@ -446,7 +395,7 @@
            }
            return WebResponseContent.Instance.OK();
        }
        private async Task<WebResponseContent> HandleOutboundOrderBatchToMESCompletion(Dt_OutboundOrder outboundOrder, string orderNo)
        {
            // å®šä¹‰é»˜è®¤è¿”回(成功态)
@@ -489,7 +438,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,
@@ -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,14 +493,32 @@
                        else
                        {
                            barModel.qty = item.PickQuantity;
                        }
                        detailModel.qty += barModel.qty;
                        }
                        detailModel.currentDeliveryQty += barModel.qty;
                        detailModel.barcodes.Add(barModel);
                    }
                    detailIds.Add(detail.Id);
                    feedModel.details.Add(detailModel);
                }
                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.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
                    {
                        barcode = row.Key.barcode,
                        supplyCode = row.Key.supplyCode,
                        batchNo = row.Key.batchNo,
                        unit = row.Key.unit,
                        qty = row.Sum(y => y.qty)
                    })).ToList()
                }).ToList();
                var allCompleted = true;
                // ç­›é€‰å¾…回传的明细(ReturnToMESStatus=0)
@@ -810,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
@@ -829,7 +801,7 @@
                return WebResponseContent.Instance.Error("处理回传MES时发生异常,请联系管理员");
            }
        }
    }
    }
    public static class UniqueValueGenerator
    {
@@ -843,14 +815,14 @@
        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}";
        }
    }
}