wangxinhui
15 小时以前 67348f250a1b7970059698002949a5e0a5f3c52f
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
using AutoMapper;
using MailKit.Search;
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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_DTO.Basic;
using WIDESEA_DTO.Stock;
using WIDESEA_IBasicRepository;
using WIDESEA_IRecordRepository;
using WIDESEA_IRecordService;
using WIDESEA_IStockRepository;
using WIDESEA_IStockService;
using WIDESEA_Model.Models;
using WIDESEA_StockRepository;
 
namespace WIDESEA_StockService
{
    public partial class StockInfoService : ServiceBase<Dt_StockInfo, IStockInfoRepository>, IStockInfoService
    {
        private readonly IMapper _mapper;
        private readonly IBasicRepository _basicRepository;
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        public IStockInfoRepository Repository => BaseDal;
 
        public StockInfoService(IStockInfoRepository BaseDal, IMapper mapper, IBasicRepository basicRepository, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
        {
            _mapper = mapper;
            _basicRepository = basicRepository;
            _unitOfWorkManage = unitOfWorkManage;
        }
 
 
 
 
        public WebResponseContent StockQueryData(SaveModel saveModel)
        {
            try
            {
                var barcode = saveModel.MainData["barcode"].ToString();
                var warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
                Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == barcode && x.WarehouseId == warehouseId).First();
                if (stockInfo == null) throw new Exception("未找到托盘信息");
                return WebResponseContent.Instance.OK(data: stockInfo);
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
 
        public WebResponseContent ManualMaterielGroup(SaveModel saveModel)
        {
            WebResponseContent content=new WebResponseContent();
            try
            {
                var barcode = saveModel.MainData["palletCode"].ToString();
                var warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
                var materSn = saveModel.MainData["materSn"];
                //直径
                var thickness = saveModel.MainData["thickness"].ObjToInt();
                var weight = saveModel.MainData["weight"].ObjToInt();
                //幅宽
                var wide = saveModel.MainData["wide"].ObjToInt();
                Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x=>x.MaterielCode== materSn);
                if (materielInfo==null)
                {
                    return content.Error("未找到物料信息");
                }
                Dt_StockInfo stockInfoOld = BaseDal.QueryFirst(x=>x.PalletCode== barcode);
                if (stockInfoOld != null)
                {
                    return content.Error("托盘信息已存在");
                }
                //生成库存组盘信息
                Dt_StockInfo stockInfo = new Dt_StockInfo()
                {
                    MaterielInvOrgId=materielInfo.MaterielInvOrgId,
                    PalletCode= barcode,
                    LocationCode="",
                    PalletType = 1,
                    WarehouseId=warehouseId,
                    StockAttribute= materielInfo.MaterielSourceType,
                    StockStatus=StockStatusEmun.手动组盘暂存.ObjToInt(),
                    MaterielSpec=materielInfo.MaterielSpec,
                    Unit=materielInfo.MaterielUnit,
                    MaterielThickness=thickness,
                    MaterielWide=wide,
                    MaterielWeight=weight,
                    MaterielCode = materielInfo.MaterielCode,
                    MaterielName=materielInfo.MaterielName,
                };
                if (wide>1200)
                {
                    stockInfo.PalletType = 2;
                }
                BaseDal.AddData(stockInfo);
                content.OK("组盘成功");
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
 
        public List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, int warehoseId)
        {
            List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId);
 
            return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes);
        }
 
        public List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, string palletcode, int warehoseId)
        {
            Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletcode && x.WarehouseId == warehoseId).First();
 
            List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(stockInfo.LocationCode);
 
            return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes);
        }
 
    }
}