payne
2024-04-23 f76acac54523d67590f8f07c404e005524eff464
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/CallEmptyService.cs
@@ -1,107 +1,107 @@
using Furion.DatabaseAccessor;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Furion.FriendlyException;
using Mapster;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Linq.Dynamic.Core;
using Admin.NET.Core;
using Yitter.IdGenerator;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Mvc.RazorPages;
using StackExchange.Redis;
//using Furion.DatabaseAccessor;
//using Furion.DependencyInjection;
//using Furion.DynamicApiController;
//using Furion.FriendlyException;
//using Mapster;
//using Microsoft.AspNetCore.Authorization;
//using Microsoft.AspNetCore.Mvc;
//using Microsoft.EntityFrameworkCore;
//using System.Linq.Dynamic.Core;
//using Admin.NET.Core;
//using Yitter.IdGenerator;
//using Microsoft.Extensions.Logging;
//using Microsoft.AspNetCore.Mvc.RazorPages;
//using StackExchange.Redis;
namespace Admin.NET.Application
{
    /// <summary>
    /// Pda空托出库
    /// </summary>
    [ApiDescriptionSettings("Pda空托出库", Name = "CallEmpty", Order = 100)]
    [Route("api/[Controller]")]
    public class CallEmptyService : IDynamicApiController, ITransient
    {
        private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
        private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
//namespace Admin.NET.Application
//{
//    /// <summary>
//    /// Pda空托出库
//    /// </summary>
//    [ApiDescriptionSettings("Pda空托出库", Name = "CallEmpty", Order = 100)]
//    [Route("api/[Controller]")]
//    public class CallEmptyService : IDynamicApiController, ITransient
//    {
//        private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
//        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
//        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
//        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
//        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
//        private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
//        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
//        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
//        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
//        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
//        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
        /// <summary>
        /// 构造函数
        /// </summary>
        public CallEmptyService(
            IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
            IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
            IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
            IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
        )
        {
            _wmsOrderRep = wmsOrderRep;
            _wmsOrderDetailsRep = wmsOrderDetailsRep;
            _wmsTaskRep = wmsTaskRep;
            _wmsPlaceRep = wmsPlaceRep;
            _wmsAreaRep = wmsAreaRep;
            _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
            _wmsMaterialContainerRep = wmsMaterialContainerRep;
            _wmsContainerRep = wmsContainerRep;
            _wmsContainerPlaceRep = wmsContainerPlaceRep;
            _wmsMaterialStockRep = wmsMaterialStockRep;
            _wmsOrderTypeRep = wmsOrderTypeRep;
        }
//        /// <summary>
//        /// 构造函数
//        /// </summary>
//        public CallEmptyService(
//            IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
//            IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
//            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
//            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
//            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
//            IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
//            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
//            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
//            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
//            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
//            IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
//        )
//        {
//            _wmsOrderRep = wmsOrderRep;
//            _wmsOrderDetailsRep = wmsOrderDetailsRep;
//            _wmsTaskRep = wmsTaskRep;
//            _wmsPlaceRep = wmsPlaceRep;
//            _wmsAreaRep = wmsAreaRep;
//            _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
//            _wmsMaterialContainerRep = wmsMaterialContainerRep;
//            _wmsContainerRep = wmsContainerRep;
//            _wmsContainerPlaceRep = wmsContainerPlaceRep;
//            _wmsMaterialStockRep = wmsMaterialStockRep;
//            _wmsOrderTypeRep = wmsOrderTypeRep;
//        }
      
        /// <summary>
        /// 提交出库
        /// </summary>
        /// <returns></returns>
        [HttpPost("PdaContainerOut")]
        [UnitOfWork]
        public async Task PdaContainerOut([FromBody] PdaContainerOutInput input)
        {
            //根据输入数量循环出库的托盘数量
            for (int i = 1; i < input.Qty+1; i++)
            {
                //获取库存中的空托盘
                var wmsMaterialStockModal = await _wmsMaterialStockRep.FirstOrDefaultAsync(x => x.Source == RuKuSourceEnum.KONGTUO);
                //获取库位信息
                var wmsPlacModal = await _wmsPlaceRep.FirstOrDefaultAsync(x => x.PlaceCode == wmsMaterialStockModal.PlaceCode);
                //任务
                var takmodel = new WmsTask()
                {
                    TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
                    TaskModel = TaskModel.QUANZIDONG,
                    TaskType = TaskType.CHUKU,
                    TaskLevel = 1,
                    TaskStatus = TaskStatusEnum.WEIZHIXING,
                    OrderNo = "N/A",
                    OrderDetailsId = 0,
                    ContainerCode = wmsMaterialStockModal.ContainerCode,
                    SourcePlace = wmsMaterialStockModal.PlaceCode,
                    ToPlace = wmsPlacModal.Aisle.ToString(), //目标位
                    AreaName = "绝缘立库",
                    IsRead = true, //WCS是否可以读取
                    SendTimes = 1, //发送次数
                    Aisle = wmsPlacModal.Aisle,
                    TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
                    Description = "空托"
                 };
                await _wmsTaskRep.InsertAsync(takmodel);
            }
        }
    }
}
//        /// <summary>
//        /// 提交出库
//        /// </summary>
//        /// <returns></returns>
//        [HttpPost("PdaContainerOut")]
//        [UnitOfWork]
//        public async Task PdaContainerOut([FromBody] PdaContainerOutInput input)
//        {
//            //根据输入数量循环出库的托盘数量
//            for (int i = 1; i < input.Qty+1; i++)
//            {
//                //获取库存中的空托盘
//                var wmsMaterialStockModal = await _wmsMaterialStockRep.FirstOrDefaultAsync(x => x.Source == RuKuSourceEnum.KONGTUO);
//                //获取库位信息
//                var wmsPlacModal = await _wmsPlaceRep.FirstOrDefaultAsync(x => x.PlaceCode == wmsMaterialStockModal.PlaceCode);
//                //任务
//                var takmodel = new WmsTask()
//                {
//                    TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
//                    TaskModel = TaskModel.QUANZIDONG,
//                    TaskType = TaskType.CHUKU,
//                    TaskLevel = 1,
//                    TaskStatus = TaskStatusEnum.WEIZHIXING,
//                    OrderNo = "N/A",
//                    OrderDetailsId = 0,
//                    ContainerCode = wmsMaterialStockModal.ContainerCode,
//                    SourcePlace = wmsMaterialStockModal.PlaceCode,
//                    ToPlace = wmsPlacModal.Aisle.ToString(), //目标位
//                    AreaName = "绝缘立库",
//                    IsRead = true, //WCS是否可以读取
//                    SendTimes = 1, //发送次数
//                    Aisle = wmsPlacModal.Aisle,
//                    TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
//                    Description = "空托"
//                 };
//                await _wmsTaskRep.InsertAsync(takmodel);
//            }
//        }
//    }
//}