1
yangpeixing
3 天以前 48e2278d7ac330c7f05deda6f884acb6f01206b4
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core;
using WIDESEA_IInboundRepository;
using WIDESEA_IInboundService;
using WIDESEA_Model.Models;
using WIDESEA_DTO.ERP;
using WIDESEA_Core.BaseRepository;
using WIDESEA_IBasicRepository;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Core.Helper;
using Microsoft.AspNetCore.Mvc.RazorPages;
using WIDESEA_InboundRepository;
using WIDESEA_IStockRepository;
using WIDESEA_Core.Enums;
using SqlSugar;
using System.Collections;
using WIDESEA_Common;
using WIDESEA_DTO.Outbound;
using WIDESEA_Core.TaskEnum;
 
namespace WIDESEA_InboundService
{
    public class TakeStockOrderCPService : ServiceBase<Dt_TakeStockOrderCP, ITakeStockOrderCPRepository>, ITakeStockOrderCPService
    {
        public ITakeStockOrderCPRepository Repository => BaseDal;
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly IBasicRepository _basicRepository;
        private readonly ITakeStockOrderDetailCPRepository _takeStockOrderDetailCPRepository;
        private readonly IStockInfoRepository _stockInfoRepository;
        private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
        public TakeStockOrderCPService(ITakeStockOrderCPRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, ITakeStockOrderDetailCPRepository takeStockOrderDetailCPRepository, IStockInfoRepository stockInfoRepository, IStockInfoDetailRepository stockInfoDetailRepository) : base(BaseDal)
        {
            _unitOfWorkManage = unitOfWorkManage;
            _basicRepository = basicRepository;
            _takeStockOrderDetailCPRepository = takeStockOrderDetailCPRepository;
            _stockInfoRepository = stockInfoRepository;
            _stockInfoDetailRepository = stockInfoDetailRepository;
        }
 
        //smom下发盘点任务
        public WebResponseContent NewInventoryOut(HouseCancelOut houseInventoryOut)
        {
            WebResponseContent content = new();
            try
            {
                Dt_TakeStockOrderCP takeStockOrderCP = BaseDal.QueryFirst(x => x.OrderNo == houseInventoryOut.No);
                if (takeStockOrderCP != null)
                {
                    OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
                    orderAddDTO1.Details = houseInventoryOut.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
                    foreach (var item in orderAddDTO1.Details)
                    {
                        Dt_TakeStockOrderDetailCP takeStockOrderDetail = new Dt_TakeStockOrderDetailCP()
                        {
                            TakeStockId = takeStockOrderCP.Id,
                            MaterielCode = item.MaterielCode,
                            MaterielName = item.MaterielName,
                            BatchNo = item.BatchNo,
                            MaterielSpec = item.MaterieSpec,
                            SysQty = item.OrderQuantity,
                            TakePalletCode = item.LPNNo,
                            TakeDetalStatus = TakeStockDetailStatusEnum.未盘点.ObjToInt(),
                        };
                        takeStockOrderCP.Details.Add(takeStockOrderDetail);
                    }
                }
                else
                {
                    OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
                    orderAddDTO1.Details = houseInventoryOut.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
                    Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == orderAddDTO1.Details.FirstOrDefault().WarehouseCode);
                    takeStockOrderCP = new Dt_TakeStockOrderCP()
                    {
                        OrderNo = houseInventoryOut.No,
                        WarehouseId = warehouse.WarehouseId,
                        TakeStockStatus = TakeStockDetailStatusEnum.未盘点.ObjToInt(),
                        Creater = "SMOM",
                        CreateDate = DateTime.Now,
                        Details = new List<Dt_TakeStockOrderDetailCP>()
                    };
 
                    foreach (var item in orderAddDTO1.Details)
                    {
                        if (item.LPNNo == null)
                        {
                            return WebResponseContent.Instance.Error("盘点托盘号不能为空");
                        }
                        Dt_TakeStockOrderDetailCP takeStockOrderDetail = new Dt_TakeStockOrderDetailCP()
                        {
                            TakeStockId = takeStockOrderCP.Id,
                            MaterielCode = item.MaterielCode,
                            MaterielName = item.MaterielName,
                            BatchNo = item.BatchNo,
                            MaterielSpec = item.MaterieSpec,
                            SysQty = item.OrderQuantity,
                            TakePalletCode = item.LPNNo,
                            Creater = "SMOM",
                            CreateDate = DateTime.Now,
                            TakeDetalStatus = TakeStockDetailStatusEnum.未盘点.ObjToInt(),
                        };
                        takeStockOrderCP.Details.Add(takeStockOrderDetail);
                    }
                }
                _unitOfWorkManage.BeginTran();
                BaseDal.Db.InsertNav(takeStockOrderCP).Include(x => x.Details).ExecuteCommand();
                _unitOfWorkManage.CommitTran();
                content = WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content = WebResponseContent.Instance.Error(ex.Message);
            }
            finally
            {
 
            }
            return content;
        }
 
 
        /// <summary>
        /// 获取对应仓库盘点单
        /// </summary>
        /// <returns></returns>
        public WebResponseContent GetTakeStockOrders(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                int pageNo = saveModel.MainData["pageNo"].ObjToInt();
                string? orderNo = saveModel.MainData["orderNo"].ToString();
                int warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
                List<Dt_TakeStockOrderCP> takeStockOrders = new List<Dt_TakeStockOrderCP>();
                if (string.IsNullOrEmpty(orderNo))
                {
                    takeStockOrders = Db.Queryable<Dt_TakeStockOrderCP>().Where(x => x.TakeStockStatus < TakeStockStatusEnum.盘点完成.ObjToInt() && x.WarehouseId == warehouseId).Includes(x => x.Details).ToPageList(pageNo, 5);
                }
                else
                {
                    takeStockOrders = Db.Queryable<Dt_TakeStockOrderCP>().Where(x => (x.OrderNo.Contains(orderNo) && x.TakeStockStatus < TakeStockStatusEnum.盘点完成.ObjToInt() && x.WarehouseId == warehouseId)).Includes(x => x.Details).ToPageList(pageNo, 5);
                }
                content.OK(data: takeStockOrders);
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
 
        /// <summary>
        /// 成品盘点
        /// </summary>
        /// <returns></returns>
        public WebResponseContent TakeStockOrderCP(SaveModel saveModel)
        {
            WebResponseContent responseContent = new WebResponseContent();
            try
            {
 
            }
            catch (Exception)
            {
 
                throw;
            }
            return WebResponseContent.Instance.OK();
        }
    }
}