1
huangxiaoqiang
2025-10-23 82149871f30f4564d84272649352496a2ab0a38e
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OutboundOrderService.cs
@@ -1,5 +1,12 @@
using WIDESEA_Core.BaseRepository;
using MailKit.Search;
using Masuit.Tools;
using System.Linq.Expressions;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO.Order;
using WIDESEA_IOrderRepository;
using WIDESEA_IOrderServices;
using WIDESEA_IStorageTaskRepository;
@@ -19,5 +26,115 @@
            _unitOfWorkManage = unitOfWorkManage;
        }
        public override WebResponseContent AddData(SaveModel saveModel)
        {
            if (Convert.ToInt32(saveModel.MainData["orderType"])== (int)OrderTypeEmun.原材料领料单 || Convert.ToInt32(saveModel.MainData["orderType"]) == (int)OrderTypeEmun.生产领料单)
            {
                return WebResponseContent.Instance.Error("生产领料单和原材料领料单只能通过ERP推送生成");
            }
            saveModel.MainData.Add("orderNo", GetOrderPintCode("OrderNoOut"));
            saveModel.MainData.Add("upperOrderNo", saveModel.MainData["orderNo"]);
            return base.AddData(saveModel);
        }
        public WebResponseContent GetOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Expression<Func<Dt_OutboundOrder, bool>> expressionOrder = x => true;
                if (!string.IsNullOrEmpty(outboundOrderGetDTO.OrderNo))
                {
                    expressionOrder = x => x.UpperOrderNo.Contains(outboundOrderGetDTO.OrderNo);
                }
                int count = 0;
                if (outboundOrderGetDTO.OrderNo == "")
                {
                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.已完成).ToList().Count();
                }
                else
                {
                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.已完成 && x.UpperOrderNo == outboundOrderGetDTO.OrderNo).ToList().Count();
                }
                int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0));
                if (outboundOrderGetDTO.pageNo <= maxPage)
                {
                    var outboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip((outboundOrderGetDTO.pageNo - 1) * 10).Take(10).Select(x => new Dt_OutboundOrder
                    {
                        OrderNo = x.OrderNo,
                        Id = x.Id,
                        MaterielCode = x.MaterielCode,
                        UpperOrderNo = x.UpperOrderNo,
                        OrderQuantity = x.OrderQuantity,
                        OverOutQuantity = x.OverOutQuantity,
                        CreateDate = x.CreateDate,
                        Creater = x.Creater
                    }).ToList();
                    content = WebResponseContent.Instance.OK(data: outboundOrder);
                }
                else
                {
                    var outboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip((0) * 10).Take(10).Select(x => new Dt_OutboundOrder
                    {
                        OrderNo = x.OrderNo,
                        Id = x.Id,
                        MaterielCode = x.MaterielCode,
                        UpperOrderNo = x.UpperOrderNo,
                        OrderQuantity = x.OrderQuantity,
                        OverOutQuantity = x.OverOutQuantity,
                        CreateDate = x.CreateDate,
                        Creater = x.Creater
                    }).ToList();
                    content = WebResponseContent.Instance.OK(data: outboundOrder);
                    //content = WebResponseContent.Instance.OK(data: null, message: "已到最后一页");
                }
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error($"查询出库单据错误,错误信息:{ex.Message}");
            }
            return content;
        }
        public WebResponseContent GetOutboundOrder(int id)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                var outboundOrderDetail = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == id).Take(10).Select(x => new Dt_OutboundOrder { Id = x.Id, MaterielCode = x.MaterielCode, MaterielName = x.MaterielName, OrderQuantity = x.OrderQuantity, OverOutQuantity = x.OverOutQuantity, OrderNo = x.OrderNo, UpperOrderNo = x.UpperOrderNo }).ToList().FirstOrDefault();
                content = WebResponseContent.Instance.OK(data: outboundOrderDetail);
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error($"查询出库单据错误,错误信息:{ex.Message}");
            }
            return content;
        }
        public string GetOrderPintCode(string printCode)
        {
            string PrintCode = "";
            var PrintSetting = SqlSugarHelper.DbWMS.Queryable<Dt_PrintSetting>().Where(x => x.PrintCode == printCode).ToList().FirstOrDefault();
            if (PrintSetting.Spare1 == DateTime.Now.ToString("yyyyMMdd"))
            {
                PrintCode = PrintSetting.Spare1 + PrintSetting.PrintNo.ToString().PadLeft(PrintSetting.Spare2, '0');
                PrintSetting.PrintNo = PrintSetting.PrintNo + 1;
            }
            else
            {
                PrintSetting.Spare1 = DateTime.Now.ToString("yyyyMMdd");
                PrintSetting.PrintNo = 2;
                PrintCode = PrintSetting.Spare1 + 1.ToString().PadLeft(PrintSetting.Spare2, '0');
            }
            SqlSugarHelper.DbWMS.Updateable(PrintSetting).ExecuteCommand();
            return PrintCode;
        }
    }
}