wangxinhui
2025-04-08 dcecb039035f4b2e82e31c39b74db9402444c536
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs
@@ -150,10 +150,24 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_ProOutOrder proOutOrder = _outboundRepository.ProOutOrderRepository.Db.Queryable<Dt_ProOutOrder>().Where(x => x.ProOutOrderNo == outOrderDTO.OrderNo).Includes(x => x.Details).First();
                if (proOutOrder==null)
                {
                    return content.Error($"未找到出库单{outOrderDTO.OrderNo}");
                }
                if (proOutOrder.ProOrderStatus==OutOrderStatusEnum.出库完成.ObjToInt() || proOutOrder.ProOrderStatus == OutOrderStatusEnum.出库中.ObjToInt())
                {
                    return content.Error("出库单执行中");
                }
                _unitOfWorkManage.BeginTran();
                _outboundRepository.ProOutOrderRepository.DeleteData(proOutOrder);
                _outboundRepository.ProOutOrderDetailRepository.DeleteData(proOutOrder.Details);
                _unitOfWorkManage.CommitTran();
                content.OK("成功");
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
@@ -162,11 +176,12 @@
        /// æˆå“å‡ºå¾…发货区(平库)+同步ERP出库(绑定了出库单库存)
        /// </summary>
        /// <returns></returns>
        public WebResponseContent OutProductPK(string[] OutPKCodes,string ProOutNo)
        public WebResponseContent OutProductPK(SaveModel saveModel, string ProOutNo)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                List<string> OutPKCodes = saveModel.DelKeys.Select(x => x.ToString()).ToList();
                if (OutPKCodes.IsNullOrEmpty())
                {
                    return content.Error("不能为空");
@@ -291,6 +306,11 @@
                    };
                    _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(proStockInfos, OperateTypeEnum.自动完成);
                    _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(proStockInfoDetails, OperateTypeEnum.自动完成);
                    WebResponseContent contentSaveInfos = SaveOutProPKInfos(proStockInfos);
                    if (!contentSaveInfos.Status)
                    {
                        throw new Exception(contentSaveInfos.Message);
                    };
                    string response = _invokeERPService.InvokeProOutApi(proOutOrderModel);
                    ErpRequestContent erpRequestContent = response.DeserializeObject<ErpRequestContent>();
                    if (erpRequestContent.res != 1)
@@ -319,6 +339,65 @@
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// èŽ·å–å‡ºåº“æ‰€æœ‰çš„å¤–å†…åŒ…æ˜Žç»†
        /// </summary>
        /// <param name="proStockInfos"></param>
        /// <returns></returns>
        public WebResponseContent SaveOutProPKInfos(List<Dt_ProStockInfo> proStockInfos)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                List<Dt_OutProPKStockInfo> outProPKStockInfos = new List<Dt_OutProPKStockInfo>();
                foreach (var fromItem in proStockInfos)
                {
                    foreach (var lordItem in fromItem.proStockInfoDetails)
                    {
                        Dt_OutProPKStockInfo outProPKStockInfo = new Dt_OutProPKStockInfo()
                        {
                            PCode = lordItem.ProductCode,
                            PVer=lordItem.ProductVersion,
                            PLot=lordItem.ProductVersion,
                            DateCode=lordItem.DateCode,
                            StockId=fromItem.Id,
                            OriginalQuantity=lordItem.StockPcsQty,
                            AssignQuantity=lordItem.StockPcsQty,
                            PalletCode=fromItem.PalletCode,
                            Unit="PCS"
                        };
                        outProPKStockInfos.Add(outProPKStockInfo);
                    }
                }
                Db.InsertNav(outProPKStockInfos).Include(x=>x).ExecuteCommand();
                content.OK();
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
        //根据内包出库
        public WebResponseContent BagProductPK(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                var outOrder = saveModel.MainData["proOutNo"].ToString();
                var outBags = saveModel.DelKeys.Select(x => x.ToString()).ToList();
                if (outBags.Count<=0)
                {
                    return content.Error("内包信息获取失败");
                }
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
@@ -449,8 +528,8 @@
                    {
                        Way = 1,
                        StockOutCode = _outboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.ProOutCOdeRule)),
                        ConfirmedUserNo = "admin",
                        AssignUserNo = "admin",
                        ConfirmedUserNo = App.User.UserName,
                        AssignUserNo = App.User.UserName,
                        WarehouseCode = warehouse.WarehouseCode,
                        ShipDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                        DeliverplanCode = proOutOrder.ProOutOrderNo,
@@ -482,5 +561,63 @@
            }
            return content;
        }
        /// <summary>
        /// PDA获取出库单据
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        public WebResponseContent GetProOutOrders(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                int pageNo = saveModel.MainData["pageNo"].ObjToInt();
                int warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
                string orderNo = saveModel.MainData["orderNo"].ToString();
                List<Dt_ProOutOrder> proOutOrders = new List<Dt_ProOutOrder>();
                if (string.IsNullOrEmpty(orderNo))
                {
                    proOutOrders = Db.Queryable<Dt_ProOutOrder>().Where(x => x.ProOrderStatus == OutOrderStatusEnum.出库中.ObjToInt() && x.WarehouseId == warehouseId).Includes(x=>x.Details).OrderByDescending(x => x.Id).ToPageList(pageNo, 5);
                }
                else
                {
                    proOutOrders = Db.Queryable<Dt_ProOutOrder>().Where(x => (x.ProOutOrderNo.Contains(orderNo) || x.ProOutOrderNo.Contains(orderNo)) && x.ProOrderStatus == OutOrderStatusEnum.出库中.ObjToInt() && x.WarehouseId == warehouseId).OrderByDescending(x => x.Id).Includes(x => x.Details).ToPageList(pageNo, 5);
                }
                content.OK(data: proOutOrders);
            }
            catch (Exception)
            {
                throw;
            }
            return content;
        }
        /// <summary>
        /// èŽ·å–æ‰«ç èŽ·å–è®¢å•æ˜Žç»†ä¿¡æ¯
        /// </summary>
        public WebResponseContent GetOrderDetails(int keyId)
        {
            WebResponseContent content=new WebResponseContent();
            try
            {
                //获取出库单号
                Dt_ProOutOrder proOutOrder = BaseDal.QueryFirst(x => x.Id == keyId);
                if (proOutOrder == null)
                {
                    return content.Error($"未找到出库单{proOutOrder.ProOutOrderNo}");
                }
                //获取当前已绑定的外包码(出库状态)
                List<string> outBags = _stockRepository.ProStockInfoRepository.QueryData(x => x.StockStatus == StockStatusEmun.平库待发货.ObjToInt() && x.ShipmentOrder== proOutOrder.ProOutOrderNo).Select(x=>x.PalletCode).ToList();
                //获取明细
                List<Dt_ProOutOrderDetail> proOutOrderDetails = _outboundRepository.ProOutOrderDetailRepository.QueryData(x=>x.ProOrderId==keyId).OrderBy(x=>x.ProOrderDetailStatus).ThenBy(x=>x.Id).ToList();
                content.OK("成功", new { outBags, proOutOrderDetails });
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
    }
}