liulijun
2025-11-24 9086b238cd9fbb9fbeae7cab11d59576cd9d2853
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
using System;
using System.Collections.Generic;
using System.Linq;
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;
using WIDESEA_IOutboundRepository;
using WIDESEA_IRecordService;
using WIDESEA_IStockService;
using WIDESEA_Model.Models;
 
namespace WIDESEA_IOutboundService
{
    public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService
    {
 
        private readonly IStockService _stockService;
        private readonly IRecordService _recordService;
 
        public IOutStockLockInfoRepository Repository => BaseDal;
        public IUnitOfWorkManage _unitOfWorkManage;
 
        public OutStockLockInfoService(IOutStockLockInfoRepository BaseDal, IStockService stockService, IRecordService recordService, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
        {
            _recordService = recordService;
            _stockService = stockService;
            _unitOfWorkManage = unitOfWorkManage;
        }
 
 
        public List<Dt_OutStockLockInfo> GetByOrderDetailId(string orderNo, int orderDetailId, OutLockStockStatusEnum? outStockStatus)
        {
            return BaseDal.QueryData(x =>x.OrderNo== orderNo && x.OrderDetailId == orderDetailId && outStockStatus == null ? true : x.Status == outStockStatus.ObjToInt());
        }
 
        /// <summary>
        /// 生成出库详情
        /// </summary>
        public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_OutBSTOrder outBSTOrder, Dt_OutBSTOrderDetail outboundOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null)
        {
            Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
            {
                PalletCode = outStock.PalletCode,
                AssignQuantity = assignQuantity,
                MaterielCode = outboundOrderDetail.MaterialNo,
                BatchNo = "",
                LocationCode = outStock.LocationCode,
                MaterielName = outStock.MaterielName,
                OrderDetailId = outboundOrderDetail.Id,
                OrderNo = outBSTOrder.OutBSTOrderNo,
                MaterielId = outStock.MaterielId,
                OriginalQuantity = outStock.StockLength,
                Status = taskNum == null ? OutLockStockStatusEnum.已分配.ObjToInt() : OutLockStockStatusEnum.出库中.ObjToInt(),
                StockId = outStock.Id,
                TaskNum = taskNum,
                OrderQuantity = outboundOrderDetail.XqLen,
                Unit = outStock.Unit
            };
 
            return outStockLockInfo;
        }
        /// <summary>
        /// 生成MES出库详情
        /// </summary>
        public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_OutMESOrder ouMESOrder, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null)
        {
            Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
            {
                PalletCode = outStock.PalletCode,
                AssignQuantity = assignQuantity,
                MaterielCode = ouMESOrder.MaterialCode,
                BatchNo = outStock.BatchNo,
                LocationCode = outStock.LocationCode,
                MaterielName = outStock.MaterielName,
                OrderDetailId = ouMESOrder.OutDetailId,
                OrderNo = ouMESOrder.OutMESOrderNo,
                MakeCode = ouMESOrder.MakeCode,
                MachineName=ouMESOrder.MakeArea.ToString(),
                OrderType=OutOrderTypeEnum.OutMESPick.ObjToInt(),
                MaterielId = outStock.MaterielId,
                OriginalQuantity = outStock.StockLength,
                Status = taskNum == null ? OutLockStockStatusEnum.已分配.ObjToInt() : OutLockStockStatusEnum.出库中.ObjToInt(),
                StockId = outStock.Id,
                TaskNum = taskNum,
                OrderQuantity = ouMESOrder.ReqQuantity,
                Unit = outStock.Unit,
                AssistUnit= ouMESOrder.AssistUnitCode
            };
 
            return outStockLockInfo;
        }
        /// <summary>
        /// 生成生管出库详情
        /// </summary>
        public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_OutSGOrder outSGOrder, Dt_OutSGOrderDetail outSGOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null)
        {
            Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
            {
                PalletCode = outStock.PalletCode,
                AssignQuantity = assignQuantity,
                OrderType=OutOrderTypeEnum.OutSGPick.ObjToInt(),
                MaterielCode = outSGOrderDetail.MaterialNo,
                BatchNo = outSGOrderDetail.BoardFluteNo, //楞别批次
                LocationCode = outStock.LocationCode,
                MaterielName = outStock.MaterielName,
                OrderDetailId = outSGOrderDetail.Id,
                OrderNo = outSGOrder.OrderId,
                MaterielId = outStock.MaterielId,
                OriginalQuantity = outStock.StockLength,
                Status = taskNum == null ? OutLockStockStatusEnum.已分配.ObjToInt() : OutLockStockStatusEnum.出库中.ObjToInt(),
                StockId = outStock.Id,
                TaskNum = taskNum,
                OrderQuantity = outSGOrderDetail.XqLen,
                MaterialWeight=outStock.MaterielWeight,
                MaterialWide=outStock.MaterielWide,
                Unit = outStock.Unit,
                MachineName=outSGOrderDetail.MachineName,
            };
 
            return outStockLockInfo;
        }
    }
}