wangxinhui
2024-12-22 0a4224dbd27287ee2c79f832149e5222914d7ad4
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs
@@ -8,7 +8,9 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
@@ -19,6 +21,7 @@
using WIDESEA_IBasicService;
using WIDESEA_IOutboundRepository;
using WIDESEA_IOutboundService;
using WIDESEA_IStockRepository;
using WIDESEA_IStockService;
using WIDESEA_Model.Models;
@@ -27,16 +30,22 @@
    public class OutboundOrderService : ServiceBase<Dt_OutboundOrder, IOutboundOrderRepository>, IOutboundOrderService
    {
        private readonly IMapper _mapper;
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly IBasicService _basicService;
        private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository;
        private readonly IStockInfoService _stockInfoService;
        private readonly IStockInfoRepository _stockInfoRepository;
        public IOutboundOrderRepository Repository => BaseDal;
        public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper, IBasicService basicService, IOutboundOrderDetailRepository outboundOrderDetailRepository) : base(BaseDal)
        public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper,IUnitOfWorkManage unitOfWorkManage, IBasicService basicService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IStockInfoService stockInfoService,
          IStockInfoRepository stockInfoRepository) : base(BaseDal)
        {
            _mapper = mapper;
            _unitOfWorkManage=unitOfWorkManage;
            _basicService = basicService;
            _outboundOrderDetailRepository = outboundOrderDetailRepository;
            _stockInfoService = stockInfoService;
            _stockInfoRepository= stockInfoRepository;
        }
        public WebResponseContent ReceiveOutOrder(ErpOutOrderDTO model)
@@ -71,6 +80,7 @@
                        }
                        else
                        {
                            Dt_StockInfo? stockInfo = null;
                            Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail()
                            {
                                RowNo = Convert.ToInt32(model.RowNo),
@@ -81,8 +91,20 @@
                                OrderQuantity = model.Qty,
                                OrderId = oldOutboundOrder.Id
                            };
                            //ERP上传测试仓领料单更新对应库存状态
                            if (warehouse.WarehouseId == 1)
                            {
                                //获取出库单库存
                                stockInfo = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId).Includes(x => x.Details).Where(x => x.Details.Any(x => x.MaterielCode == model.MCode && x.BatchNo == model.MLot && x.InboundOrderRowNo == Convert.ToInt32(model.RowNo))).First();
                                stockInfo.StockStatus = StockStatusEmun.入库完成.ObjToInt();
                            }
                            _unitOfWorkManage.BeginTran();
                            if (stockInfo != null)
                            {
                                _stockInfoRepository.UpdateData(stockInfo);
                            }
                            _outboundOrderDetailRepository.AddData(outboundOrderDetail);
                            _unitOfWorkManage.CommitTran();
                        }
                    }
                    else
@@ -106,8 +128,21 @@
                            WarehouseId = warehouse.WarehouseId,
                            Details = new List<Dt_OutboundOrderDetail> { outboundOrderDetail }
                        };
                        Dt_StockInfo? stockInfo = null;
                        //ERP上传测试仓领料单更新对应库存状态
                        if (warehouse.WarehouseId==1)
                        {
                            //获取出库单库存
                            stockInfo = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId).Includes(x => x.Details).Where(x => x.Details.Any(x => x.MaterielCode == model.MCode && x.BatchNo == model.MLot && x.InboundOrderRowNo == Convert.ToInt32(model.RowNo))).First();
                            stockInfo.StockStatus=StockStatusEmun.入库完成.ObjToInt();
                        }
                        _unitOfWorkManage.BeginTran();
                        if (stockInfo!=null)
                        {
                            _stockInfoRepository.UpdateData(stockInfo);
                        }
                        Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand();
                        _unitOfWorkManage.CommitTran();
                    }
                }
                else if (model.Way == 2)
@@ -121,7 +156,7 @@
                    {
                        return WebResponseContent.Instance.Error($"未找到该明细行号信息");
                    }
                    if(outboundOrderDetail.OrderDetailStatus != OrderDetailStatusEnum.New.ObjToInt())
                    if (outboundOrderDetail.OrderDetailStatus != OrderDetailStatusEnum.New.ObjToInt())
                    {
                        return WebResponseContent.Instance.Error($"该明细不可修改");
                    }
@@ -137,6 +172,40 @@
                    _outboundOrderDetailRepository.UpdateData(outboundOrderDetail);
                }
                else if (model.Way == 3)
                {
                    if (oldOutboundOrder == null)
                    {
                        return WebResponseContent.Instance.Error($"未找到该出库单");
                    }
                }
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        public WebResponseContent ReleaseOutOrder(int id)
        {
            try
            {
                Dt_OutboundOrder outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == id).Includes(x => x.Details).First();
                if (outboundOrder == null)
                {
                    return WebResponseContent.Instance.Error($"未找到该出库单");
                }
                if(outboundOrder.Details == null || outboundOrder.Details.Count == 0)
                {
                    return WebResponseContent.Instance.Error($"未找到明细信息");
                }
                foreach (var item in outboundOrder.Details)
                {
                }
                return WebResponseContent.Instance.OK();
            }