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, 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(), Details = new List() }; 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, 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; } } }