1
huangxiaoqiang
2025-10-23 82149871f30f4564d84272649352496a2ab0a38e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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;
using WIDESEA_IStorageTaskServices;
using WIDESEA_Model.Models;
using WIDESEA_Model.Models.Order;
 
namespace WIDESEA_OrderServices
{
    public class Dt_OutboundOrderService : ServiceBase<Dt_OutboundOrder, IDt_OutboundOrderRepository>, IDt_OutboundOrderService
    {
        private readonly IUnitOfWorkManage _unitOfWorkManage;
 
        public Dt_OutboundOrderService(IDt_OutboundOrderRepository BaseDal,
                                        IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
        {
            _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;
        }
    }
}