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, 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().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 GetUseableStocks(string materielCode, string batchNo, int warehoseId) { List locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId); return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes); } public List GetUseableStocks(string materielCode, string batchNo, string palletcode, int warehoseId) { Dt_StockInfo stockInfo = BaseDal.Db.Queryable().Where(x => x.PalletCode == palletcode && x.WarehouseId == warehoseId).First(); List locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(stockInfo.LocationCode); return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes); } } }