yanjinhui
2025-12-01 2b49f7643d15b74889d190f216630559006ed93a
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs
@@ -104,15 +104,72 @@
        /// <param name="pageNo"></param>
        /// <param name="orderNo"></param>
        /// <returns></returns>
        //public WebResponseContent GetCabinOrderDetail(int pageNo, string orderNo)
        //{
        //    WebResponseContent content = new WebResponseContent();
        //    Dt_CabinOrder cabinOrder = Db.Queryable<Dt_CabinOrder>().Includes(x => x.Details).First(x => x.Order_no == orderNo);
        //    List<Dt_CabinOrderDetail> cabinOrderDetails = cabinOrder.Details.Where(x => x.Status == 2 && x.OrderDetailStatus != "已完成").ToList();
        //    content.OK(data: cabinOrderDetails);
        //    return content;
        //}
        public WebResponseContent GetCabinOrderDetail(int pageNo, string orderNo)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
            Dt_CabinOrder cabinOrder = Db.Queryable<Dt_CabinOrder>().Includes(x => x.Details).First(x => x.Order_no == orderNo);
            List<Dt_CabinOrderDetail> cabinOrderDetails = cabinOrder.Details.Where(x => x.Status == 2 && x.OrderDetailStatus != "已完成").ToList();
            content.OK(data: cabinOrderDetails);
                // èŽ·å–æ‰€æœ‰ç‰©æ–™ç¼–å·
                var materielCodes = cabinOrderDetails.Select(x => x.Goods_no).Distinct().ToList();
                // èŽ·å–ç‰©æ–™ä¿¡æ¯
                var materiels = Db.Queryable<Dt_MaterielInfo>()
                    .Where(x => materielCodes.Contains(x.MaterielCode))
                    .ToList()
                    .ToDictionary(x => x.MaterielCode, x => x);
                // ç»„合数据
                var result = cabinOrderDetails.Select(detail =>
                {
                    var materiel = materiels.ContainsKey(detail.Goods_no) ? materiels[detail.Goods_no] : null;
                    return new
                    {
                        // è®¢å•明细字段
                        detail.Id,
                        detail.Batch_num,
                        detail.Goods_no,
                        detail.Order_qty,
                        detail.Order_Inqty,
                        detail.Status,
                        detail.OrderDetailStatus,
                        detail.Exp_date,//效期
                        // ç‰©æ–™ä¿¡æ¯å­—段
                        MaterielName = materiel?.MaterielName ?? "",
                        item = materiel?.item ?? "", // å“å/通用名
                        MaterielSpec = materiel?.MaterielSpec ?? "", // ç‰©æ–™è§„æ ¼
                        Factory = materiel?.Factory ?? "", // ç”Ÿäº§åނ家
                        MaterielUnit = materiel?.MaterielUnit ?? "", // åŸºæœ¬å•位
                        MaterielStoragecondition = materiel?.MaterielStoragecondition, // å­˜å‚¨æ¡ä»¶/效期
                        MaterielModel = materiel?.MaterielModel ?? "" // ç‰©æ–™åž‹å·
                    };
                }).ToList();
                int pageSize = 5; // æ¯é¡µæ˜¾ç¤º5条
                var pagedResult = result
                    .Skip((pageNo - 1) * pageSize)
                    .Take(pageSize)
                    .ToList();
                content.OK(data: pagedResult);
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// Pad入库完成 
@@ -871,17 +928,22 @@
                if (order.warehouse_no == WareCodeMJ || order.warehouse_no == WareCodeLD)
                {
                    List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode));
                    List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode));
                    List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
                    List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
                    #region åº“存、库存批次平账
                    foreach (var item in order.details)
                    {
                        //找库存批次信息
                        Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
                        Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).FirstOrDefault();
                        if (inventory_Batch==null)
                        {
                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP报报溢入库错误", $"盘盈入库单【{order.order_no}】物料编号【{item.goods_no}】物料批次【{item.batch_num}】的物料批次信息错误");
                            throw new Exception($"盘盈入库单【{order.order_no}】物料编号【{item.goods_no}】物料批次【{item.batch_num}】的物料批次信息错误");
                        }
                        if (inventory_Batch.SupplyQuantity != item.order_qty)
                        {
                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP报报溢入库错误", $"盘盈入库单【{order.order_no}】物料编号【{item.goods_no}】物料批次【{item.batch_num}】的盘盈数量有误");
                            throw new Exception($"盘盈入库单【{order.order_no}】物料编号【{item.goods_no}】物料批次【{item.batch_num}】的盘盈数量有误");
                            throw new Exception($"盘盈入库单【{order.order_no}】物料编号【{item.goods_no}】物料批次【{item.batch_num}】的的盘盈数量有误");
                        }
                        //找所有库存
                        List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
@@ -970,7 +1032,12 @@
                    foreach (var item in order.details)
                    {
                        //找库存批次信息
                        Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
                        Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).FirstOrDefault();
                        if (inventory_Batch == null)
                        {
                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP报报溢入库错误", $"盘盈入库单【{order.order_no}】物料编号【{item.goods_no}】物料批次【{item.batch_num}】的批次信息没有找到");
                            throw new Exception($"盘盈入库单【{order.order_no}】物料编号【{item.goods_no}】物料批次【{item.batch_num}】的批次信息错误");
                        }
                        var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
                        if (Qty != item.order_qty)
                        {
@@ -1216,8 +1283,8 @@
                }
                else
                {
                    var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
                    if (cabinOrder.Order_type == "2") url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
                    var url = "http://192.168.1.100:80/GYZ2/95fck/outOrderOk";
                    if (cabinOrder.Order_type == "2") url = "http://192.168.1.100:80/GYZ2/95fck/outOrderOk";
                    var requestDate = new
                    {
                        order_no = cabinOrder.Order_no