647556386
3 天以前 696edbff3c8812e4b820f624d66a02ae6ddb1a06
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs
@@ -1,22 +1,31 @@
using Autofac.Core;
using MailKit.Search;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using SqlSugar;
using SqlSugar.Extensions;
using System.Net;
using System.Threading.Tasks;
using WIDESEA_BasicService;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Core;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.BaseController;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.Enums;
using WIDESEA_DTO.Allocate;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Mes;
using WIDESEA_IBasicService;
using WIDESEA_IInboundService;
using WIDESEA_InboundService;
using WIDESEA_IOutboundService;
using WIDESEA_ITaskInfoService;
using WIDESEA_Model.Models;
using WIDESEA_OutboundService;
namespace WIDESEA_WMSServer.Controllers.Inbound
{
@@ -30,13 +39,18 @@
        private readonly WIDESEA_IBasicService.IErpApiService erpApiService;
        private readonly WIDESEA_IBasicService.IInvokeMESService _invokeMESService;
        public readonly IInboundService _inboundService;
        private readonly IESSApiService _eSSApiService;
        private readonly ILocationInfoService _locationInfoService;
        private readonly IDailySequenceService _dailySequenceService;
        private readonly IMaterialUnitService _materialUnitService;
        private readonly IRepository<Dt_MaterielInfo> _materialInfoRepository;
        private readonly IOutStockLockInfoService _outStockLockInfoService;
        private readonly IOutboundOrderDetailService _outboundOrderDetailService;
        private readonly IRepository<Dt_Task> _taskRepository;
        private readonly ITask_HtyService _task_HtyService;
        private readonly ILogger<InboundOrderController> _logger;
        public InboundOrderController(IInboundOrderService service, WIDESEA_IBasicService.IErpApiService erpApiService, WIDESEA_IBasicService.IInvokeMESService invokeMESService, IESSApiService eSSApiService, IDailySequenceService dailySequenceService, ILocationInfoService locationInfoService, ILogger<InboundOrderController> logger, IMaterialUnitService materialUnitService) : base(service)
        public InboundOrderController(IInboundOrderService service, WIDESEA_IBasicService.IErpApiService erpApiService, WIDESEA_IBasicService.IInvokeMESService invokeMESService, IESSApiService eSSApiService, IDailySequenceService dailySequenceService, ILocationInfoService locationInfoService, ILogger<InboundOrderController> logger, IMaterialUnitService materialUnitService, IInboundService inboundService, IOutStockLockInfoService outStockLockInfoService, IOutboundOrderDetailService outboundOrderDetailService, IRepository<Dt_Task> taskRepository, ITask_HtyService task_HtyService, IRepository<Dt_MaterielInfo> materialInfoRepository) : base(service)
        {
            this.erpApiService = erpApiService;
            _invokeMESService = invokeMESService;
@@ -45,41 +59,66 @@
            _locationInfoService = locationInfoService;
            _logger = logger;
            _materialUnitService = materialUnitService;
            _inboundService = inboundService;
            _outStockLockInfoService = outStockLockInfoService;
            _outboundOrderDetailService = outboundOrderDetailService;
            _taskRepository = taskRepository;
            _task_HtyService = task_HtyService;
            _materialInfoRepository = materialInfoRepository;
        }
        [HttpPost, Route("Test"), AllowAnonymous, MethodParamsValidate]
        public async Task<WebResponseContent> Test()
        {
            var purchaseToStockResult = await _materialUnitService.ConvertPurchaseToStockAsync("101001-00002", 10);
            var pdddurchaseToStockResult = await _materialUnitService.ConvertPurchaseToStockAsync("100513-00210", 10);
            //var seq = await _dailySequenceService.GetNextSequenceAsync();
            //var SDDD= "WSLOT" + DateTime.Now.ToString("yyyyMMdd") + seq.ToString()?.PadLeft(5, '0');
            var sddd = _locationInfoService.AssignLocation();
            var code = sddd.LocationCode;
            // await _dailySequenceService.GetNextSequenceAsync();
            //var originalTask = _taskRepository.Db.Queryable<Dt_Task>().First();
            //var result = _task_HtyService.DeleteAndMoveIntoHty(originalTask, OperateTypeEnum.人工删除);
            //if (result)
            //{
            //    var sddd = "trueee";
            //}
            //var originalTask = _taskRepository.Db.Queryable<Dt_Task>().First();
            //_taskRepository.DeleteAndMoveIntoHty(originalTask, OperateTypeEnum.自动完成);
            // Service.Db.Deleteable<Dt_InboundOrder>().Where(x=>x.UpperOrderNo== "12020251100040").ExecuteCommand();
            //_inboundService.InboundOrderDetailService.Db.Deleteable<Dt_InboundOrderDetail>()
            // .Where(p => SqlFunc.Subqueryable<Dt_InboundOrder>().Where(s => s.Id == p.OrderId && s.UpperOrderNo == "12020251100040").Any()).ExecuteCommand();
            //var purchaseToStockResult = await _materialUnitService.ConvertPurchaseToStockAsync("100513-00303", 1);
            //var pdddurchaseToStockResult = await _materialUnitService.ConvertFromToStockAsync("100513-00303", "W013", 1);
            //var sddd = _locationInfoService.AssignLocation(1);
            //var code = sddd.LocationCode;
            //var ssss=await _dailySequenceService.GetNextSequenceAsync();
            //var  ddddssss = "WSLOT" + DateTime.Now.ToString("yyyyMMddHHmmss") + ssss.ToString().PadLeft(5, '0');
            //erpApiService.GetSuppliersAsync();
            //erpApiService.GetMaterialUnitAsync();
            //var sss=await  _invokeMESService.NewMaterielToMes(new WIDESEA_DTO.Basic.MaterielToMesDTO
            //  {
            //      reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
            //      reqCode = Guid.NewGuid().ToString(),
            //      oldmaterialCode = "b001",
            //      newmaterialCode = "Bar01",
            //      unit = "A01",
            //      operationType = 1,
            //      supplyCode = "A0001",
            //      batchNo = "A0002",
            //      materialCode = "FC00001",
            //      warehouseCode = "",
            //      factoryArea = "A01",
            //      qty = "20.0",
            //  });
            // erpApiService.GetMaterialUnitAsync();
            //var sss = await _invokeMESService.NewMaterielToMes(new WIDESEA_DTO.Basic.MaterielToMesDTO
            //{
            //    reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
            //    reqCode = Guid.NewGuid().ToString(),
            //    oldmaterialCode = "b001",
            //    newmaterialCode = "Bar01",
            //    unit = "A01",
            //    operationType = 1,
            //    supplyCode = "A0001",
            //    batchNo = "A0002",
            //    materialCode = "FC00001",
            //    warehouseCode = "",
            //    factoryArea = "A01",
            //    qty =20,
            //});
            //await _eSSApiService.MoveContainerAsync(new WIDESEA_DTO.Basic.MoveContainerRequest
            //{
            //    slotCode = "3-5",
            //    containerCode = "A000008002"
            //    containerCode = "A000008009"
            //});
            //await erpApiService.GetSuppliersAsync();
@@ -87,7 +126,7 @@
            //await  erpApiService.GetMaterialInfoAsync(new WIDESEA_DTO.Basic.MaterialRequest());
            return WebResponseContent.Instance.OK(code);
            return WebResponseContent.Instance.OK( );
        }
        /// <summary>
@@ -98,8 +137,12 @@
        [HttpPost, Route("ReceiveInboundOrder"), AllowAnonymous, MethodParamsValidate]
        public async Task<WebResponseContent> ReceiveInboundOrder([FromBody] InboundRequestModel model)
        {
            if (model.inBounds == null || !model.inBounds.Any())
            {
                return WebResponseContent.Instance.Error("入库单不能为空");
            }
            _logger.LogInformation("InboundOrderController ReceiveInboundOrder:  " +  JsonConvert.SerializeObject(model));
            _logger.LogInformation("InboundOrderController ReceiveInboundOrder:  " + JsonConvert.SerializeObject(model));
            List<Dt_InboundOrder> inboundOrders = new List<Dt_InboundOrder>();
            foreach (var item in model.inBounds)
@@ -107,7 +150,7 @@
                Dt_InboundOrder dt_InboundOrder = new Dt_InboundOrder() { Details = new List<Dt_InboundOrderDetail>() };
                foreach (var detailitem in item.details)
                {
                    var materialName = _materialInfoRepository.QueryFirst(x => x.MaterielCode == detailitem.materialCode).MaterielName;
                    if (detailitem.barcodes != null && detailitem.barcodes.Any())
                    {
                        foreach (var barcode in detailitem.barcodes)
@@ -116,6 +159,7 @@
                            {
                                lineNo = detailitem.lineNo,
                                MaterielCode = detailitem.materialCode,
                                MaterielName = materialName,
                                SupplyCode = detailitem.supplyCode,
                                BatchNo = detailitem.batchNo,
                                Unit = detailitem.unit,
@@ -124,7 +168,9 @@
                                OutBoxbarcodes = barcode.outBoxbarcodes,
                                BarcodeUnit = barcode.unit,
                                BarcodeQty = barcode.qty,
                                OrderQuantity = barcode.qty
                                OrderQuantity = barcode.qty,
                                Remark = detailitem.remark??"",
                            };
                            dt_InboundOrder.Details.Add(inboundOrderDetail);
@@ -144,6 +190,8 @@
                            OrderQuantity = detailitem.qty,
                            BarcodeUnit = detailitem.unit,
                            BarcodeQty = detailitem.qty,
                            MaterielName = materialName,
                            Remark = detailitem.remark??""
                        };
                        dt_InboundOrder.Details.Add(inboundOrderDetail);
                    }
@@ -153,11 +201,12 @@
                dt_InboundOrder.BusinessType = item.business_type;
                dt_InboundOrder.IsBatch = item.isBatch;
                dt_InboundOrder.FactoryArea = item.factoryArea;
                dt_InboundOrder.CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt();
                dt_InboundOrder.IsTestMaterials = item.isTestMaterials;
                inboundOrders.Add(dt_InboundOrder);
            }
            var content =await Service.ReceiveInboundOrder(inboundOrders, model.operationType);
            var content = await Service.ReceiveInboundOrder(inboundOrders, model.operationType);
            if (content.Status) return WebResponseContent.Instance.OK(200);
            else return WebResponseContent.Instance.Error(content.Message);
@@ -176,6 +225,18 @@
            return content;
        }
        [HttpPost, Route("UnPalletGroupBarcode"), AllowAnonymous, MethodParamsValidate]
        public WebResponseContent UnPalletGroupBarcode(string orderNo)
        {
            return Service.UnPalletGroupBarcode(orderNo);
        }
        [HttpPost, Route("UndoPalletGroup"), AllowAnonymous, MethodParamsValidate]
        public WebResponseContent UndoPalletGroup(string code)
        {
            return Service.UndoPalletGroup(code);
        }
        /// <summary>
        /// 
        /// </summary>
@@ -190,5 +251,29 @@
        }
        [HttpPost, Route("UnPalletQuantity"), AllowAnonymous, MethodParamsValidate]
        public WebResponseContent UnPalletQuantity(string orderNo)
        {
            return Service.UnPalletQuantity(orderNo);
        }
        [HttpPost, Route("BatchOrderFeedbackToMes"), AllowAnonymous]
        public async Task<WebResponseContent> BatchOrderFeedbackToMes([FromBody] BatchOrderFeedbackToMesDto request)
        {
            return await _invokeMESService.BatchOrderFeedbackToMes(request.orderNos, request.inout);
        }
        [HttpPost, Route("HandCloseOrder"), AllowAnonymous, MethodParamsValidate]
        public WebResponseContent HandCloseOrder(List<string> orderIds)
        {
            return Service.HandCloseOrder(orderIds);
        }
        [HttpPost, Route("GetLocationType"), AllowAnonymous, MethodParamsValidate]
        public WebResponseContent GetLocationType(string code)
        {
            return Service.GetLocationType(code);
        }
    }
}