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, 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(); 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(); 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() }; 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; } /// /// 获取对应仓库盘点单 /// /// 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 takeStockOrders = new List(); if (string.IsNullOrEmpty(orderNo)) { takeStockOrders = Db.Queryable().Where(x => x.TakeStockStatus < TakeStockStatusEnum.盘点完成.ObjToInt() && x.WarehouseId == warehouseId).Includes(x => x.Details).ToPageList(pageNo, 5); } else { takeStockOrders = Db.Queryable().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; } /// /// 成品盘点 /// /// public WebResponseContent TakeStockOrderCP(SaveModel saveModel) { WebResponseContent responseContent = new WebResponseContent(); try { } catch (Exception) { throw; } return WebResponseContent.Instance.OK(); } } }