dengjunjie
2025-10-15 6c7a356b784efde61e2babc17fa6e05047dcc5a7
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs
@@ -7,11 +7,12 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Helper;
using WIDESEA_IBasicService;
using WIDESEA_ISquareCabinServices;
using WIDESEA_Model.Models;
@@ -26,9 +27,11 @@
    {
       
        static string SearchDate = "";
        private readonly IBasicService _basicService;
        public CabinOrderServices(IRepository<Dt_CabinOrder> BaseDal) : base(BaseDal)
        public CabinOrderServices(IRepository<Dt_CabinOrder> BaseDal, IBasicService basicService) : base(BaseDal)
        {
            _basicService = basicService;
        }
        /// <summary>
@@ -197,18 +200,108 @@
                            OdrderStatus = "新建",
                            Supplier_name=order.supplier_name,
                            Warehouse_no = order.warehouse_no,
                            Details = order.details.Select(d => new Dt_CabinOrderDetail
                            {
                                //OrderId è¦æ‹¿åˆ°å…¥åº“单表中的id,如何拿不到就将这个字段改了,改成入库单号
                                // SqlSugar InsertNav工作原理先插入主表 (Dt_CabinOrder)//获取生成的主键ID//自动设置子表的关联字段 (OrderId)//再插入(Dt_CabinOrderDetail)
                                Goods_no = d.goods_no,
                                Order_qty = d.order_qty,
                                Batch_num = d.batch_num,
                                Exp_date = d.exp_date,
                                OrderDetailStatus="新建",
                                Status = order.warehouse_no== "001" ? 0 : 2, //如果是001房那么就是未同步状态,如果不是001房那么就是无需同步状态
                            }).ToList()
                            Details = new List<Dt_CabinOrderDetail>()
                            //Details = order.details.Select(d => new Dt_CabinOrderDetail
                            //{
                            //    //OrderId è¦æ‹¿åˆ°å…¥åº“单表中的id,如何拿不到就将这个字段改了,改成入库单号
                            //    // SqlSugar InsertNav工作原理先插入主表 (Dt_CabinOrder)//获取生成的主键ID//自动设置子表的关联字段 (OrderId)//再插入(Dt_CabinOrderDetail)
                            //    Goods_no = d.goods_no,
                            //    Order_qty = d.order_qty,
                            //    Batch_num = d.batch_num,
                            //    Exp_date = d.exp_date,
                            //    OrderDetailStatus = "新建",
                            //    Status = order.warehouse_no == "001" ? 0 : 2, //如果是001房那么就是未同步状态,如果不是001房那么就是无需同步状态
                            //}).ToList()
                        };
                        foreach (var item in order.details)
                        {
                            #region æ ¹æ®ç‰©æ–™ç¼–码查询物料信息
                            Dt_MaterielInfo materielInfo = _basicService.MaterielInfoService.Repository.QueryFirst(x => x.MaterielCode == item.goods_no);
                            ///根据物料信息大小件属性区分是否入立库
                            if (materielInfo.MaterielSourceType == MaterielSourceTypeEnum.PurchasePart)
                            {
                                Dt_CabinOrderDetail orderDetail = new Dt_CabinOrderDetail()
                                {
                                    Reservoirarea= order.warehouse_no,
                                    Goods_no = item.goods_no,
                                    Order_qty = item.order_qty,
                                    Batch_num = item.batch_num,
                                    Exp_date = item.exp_date,
                                    OrderDetailStatus = "新建",
                                    Status = 2
                                };
                                entityOrder.Details.Add(orderDetail);
                            }
                            else
                            {
                                Dt_CabinOrderDetail orderDetail = null;
                                var ys = item.order_qty % materielInfo.BoxQty;
                                var xs = item.order_qty / materielInfo.BoxQty;
                                #region ç”Ÿæˆç«‹åº“入库单
                                #region åˆ¤æ–­æ˜¯å¦æœ‰æ•£ä»¶
                                if (ys > 0)
                                {
                                    orderDetail = new Dt_CabinOrderDetail()
                                    {
                                        Goods_no = item.goods_no,
                                        Order_qty = ys,
                                        Batch_num = item.batch_num,
                                        Exp_date = item.exp_date,
                                        OrderDetailStatus = "新建",
                                        Status = 0
                                    };
                                    materielInfo.Business_qty += ys;
                                }
                                #endregion
                                #region åˆ¤æ–­ç«‹åº“库存是否大于立库最低库存数
                                while (materielInfo.Business_qty < materielInfo.MinQty && xs > 0)
                                {
                                    xs--;
                                    if (orderDetail == null)
                                    {
                                        orderDetail = new Dt_CabinOrderDetail()
                                        {
                                            Goods_no = item.goods_no,
                                            Order_qty = materielInfo.BoxQty,
                                            Batch_num = item.batch_num,
                                            Exp_date = item.exp_date,
                                            OrderDetailStatus = "新建",
                                            Status = 0
                                        };
                                        materielInfo.Business_qty += materielInfo.BoxQty;
                                    }
                                    else
                                    {
                                        orderDetail.Order_qty += materielInfo.BoxQty;
                                        materielInfo.Business_qty += materielInfo.BoxQty;
                                    }
                                }
                                #endregion
                                if (orderDetail != null) entityOrder.Details.Add(orderDetail);
                                #endregion
                                #region å‰©ä½™æ•´ä»¶å…¥å¹³åº“
                                if (xs > 0)
                                {
                                    orderDetail = new Dt_CabinOrderDetail()
                                    {
                                        Goods_no = item.goods_no,
                                        Order_qty = materielInfo.BoxQty * xs,
                                        Batch_num = item.batch_num,
                                        Exp_date = item.exp_date,
                                        OrderDetailStatus = "新建",
                                        Status = 2
                                    };
                                    entityOrder.Details.Add(orderDetail);
                                }
                                #endregion
                            }
                            _basicService.MaterielInfoService.Repository.UpdateData(materielInfo);
                            #endregion
                        }
                        _CabinOrders.Add(entityOrder);
                        orderNos.Add(order.order_no);
                    };