WMS
dengjunjie
2024-12-18 12e2d0e41d52f36d0746118e24b3fed228f92f98
WMS
已修改4个文件
已添加5个文件
309 ■■■■■ 文件已修改
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/MesResponseContent.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/TestToolModel.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockOutboundOrderDTO.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/MesResponseContent.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
namespace WIDESEA_DTO
{
    [ModelValidate]
    public class MesResponseContent
    {
        /// <summary>
        ///
        /// </summary>
        public bool bSucc { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string StrCode { get; set; }
        /// <summary>
        /// æ‰§è¡ŒæˆåŠŸ
        /// </summary>
        public string StrMsg { get; set; }
        /// <summary>
        ///
        /// </summary>
        public DateTime DataTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public content Content { get; set; }
        public class content
        {
            /// <summary>
            ///
            /// </summary>
            public string Code { get; set; }
            /// <summary>
            ///
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            ///
            /// </summary>
            public string ShortName { get; set; }
            /// <summary>
            ///
            /// </summary>
            public string Contacts { get; set; }
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/TestToolModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Attributes;
namespace WIDESEA_DTO
{
    /// <summary>
    /// æµ‹è¯•架出仓模型
    /// </summary>
    [ModelValidate]
    public class TestToolOutModel
    {
        /// <summary>
        /// æµ‹æž¶ç¼–码
        /// </summary>
        [PropertyValidate("测架编码", NotNullAndEmpty = true)]
        public string ToolCode { get; set; }
        /// <summary>
        /// ç›®æ ‡åœ°å€ç 
        /// </summary>
        [PropertyValidate("目标地址码", NotNullAndEmpty = true)]
        public string TargetAddressCode { get; set; }
    }
    /// <summary>
    /// æµ‹è¯•架报废模型
    /// </summary>
    [ModelValidate]
    public class TestToolScrapModel
    {
        /// <summary>
        /// æµ‹æž¶ç¼–码
        /// </summary>
        [PropertyValidate("测架编码", NotNullAndEmpty = true)]
        public string ToolCode { get; set; }
    }
    /// <summary>
    /// æµ‹è¯•架退库模型
    /// </summary>
    [ModelValidate]
    public class TestToolBackModel
    {
        /// <summary>
        /// æºä½ç½®
        /// </summary>
        [PropertyValidate("源位置", NotNullAndEmpty = true)]
        public string SourceAddressCode { get; set; }
        /// <summary>
        /// æµ‹è¯•架编码
        /// </summary>
        [PropertyValidate("测试架编码", NotNullAndEmpty = true)]
        public string TestToolCode { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockOutboundOrderDTO.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_DTO.Stock
{
    public class StockOutboundOrderDTO
    {
        /// <summary>
        /// å•据编码
        /// </summary>
        public string OrderNo { get; set; }
        /// <summary>
        /// æ‰˜ç›˜å·
        /// </summary>
        public string PalletCode { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码
        /// </summary>
        public string MaterielCode { get; set; }
        /// <summary>
        /// ç‰©æ–™åç§°
        /// </summary>
        public string MaterielName { get; set; }
        /// <summary>
        /// æ‰¹æ¬¡å·
        /// </summary>
        public string BatchNo { get; set; }
        /// <summary>
        /// åºåˆ—号
        /// </summary>
        public string SerialNumber {  get; set; }
        /// <summary>
        /// åº“存数量
        /// </summary>
        public float StockQuantity { get; set; }
        /// <summary>
        /// å‡ºåº“数量
        /// </summary>
        public float OutboundQuantity { get; set; }
        /// <summary>
        /// å·¥å•总数
        /// </summary>
        public float OrderQuantity { get; set; }
        /// <summary>
        /// å·²å‡ºæ•°é‡
        /// </summary>
        public float OverOutQuantity { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_DTO.Stock;
using WIDESEA_IStockRepository;
@@ -19,5 +20,6 @@
        List<Dt_StockInfo> GetOutboundStocks(List<Dt_StockInfo> stockInfos, string materielCode, float needQuantity, out float residueQuantity);
        List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, int warehoseId);
        StockOutboundOrderDTO GetStockOutboundOrder(SaveModel saveModel);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -25,6 +25,8 @@
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_DTO;
using WIDESEA_DTO.ERP;
using WIDESEA_DTO.Stock;
using WIDESEA_ITaskInfoRepository;
using WIDESEA_Model.Models;
@@ -38,5 +40,11 @@
        WebResponseContent RequestInboundTask(string palletCode, string stationCode);
        WebResponseContent InboundTaskCompleted(int taskNum);
        /// <summary>
        /// æµ‹è¯•架出仓
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        MesResponseContent TestToolOut(TestToolOutModel model);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
@@ -1,4 +1,5 @@
using AutoMapper;
using MailKit.Search;
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
using SqlSugar;
using System;
@@ -70,7 +71,54 @@
            }
        }
        public StockOutboundOrderDTO GetStockOutboundOrder(SaveModel saveModel)
        {
            try
            {
                var palletCode = saveModel.MainData["barcode"].ToString();
                Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
                if (stockInfo == null)
                {
                    throw new Exception($"未找到库存信息");
                }
                Dt_StockInfoDetail stockInfoDetail = stockInfo.Details.FirstOrDefault();
                if (stockInfoDetail == null)
                {
                    throw new Exception($"未找到库存详情");
                }
                BaseDal.QueryTabs<Dt_OutboundOrder, Dt_OutboundOrderDetail, StockOutboundOrderDTO>((a, b) => a.Id == b.OrderId, (a, b) => new StockOutboundOrderDTO
                {
                    OrderNo = a.OrderNo,
                    MaterielCode = b.MaterielCode,
                    MaterielName = b.MaterielName,
                    PalletCode = stockInfo.PalletCode,
                    BatchNo = b.BatchNo,
                    OrderQuantity = b.OrderQuantity,
                    OverOutQuantity = b.OverOutQuantity,
                    OutboundQuantity = stockInfoDetail.OutboundQuantity,
                    SerialNumber = stockInfoDetail.SerialNumber,
                    StockQuantity = stockInfoDetail.StockQuantity,
                }, a => true, b => b.BatchNo == stockInfoDetail.BatchNo && b.MaterielCode == stockInfoDetail.MaterielCode, x => true).Select(x => new StockOutboundOrderDTO
                {
                    OrderNo = x.OrderNo,
                    MaterielCode = x.MaterielCode,
                    MaterielName = x.MaterielName,
                    PalletCode = x.PalletCode,
                    BatchNo = x.BatchNo,
                    OrderQuantity = x.OrderQuantity,
                    OverOutQuantity = x.OverOutQuantity,
                    OutboundQuantity = x.OutboundQuantity,
                    SerialNumber = x.SerialNumber,
                    StockQuantity = x.StockQuantity,
                }).ToList();
                return new StockOutboundOrderDTO();
            }
            catch (Exception ex)
            {
                return null;
            }
        }
        public List<Dt_StockInfo> GetOutboundStocks(List<Dt_StockInfo> stockInfos, string materielCode, float needQuantity, out float residueQuantity)
        {
            List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>();
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.BaseServices;
using WIDESEA_DTO;
using WIDESEA_ITaskInfoRepository;
using WIDESEA_ITaskInfoService;
using WIDESEA_Model.Models;
namespace WIDESEA_TaskInfoService
{
    public partial class TaskService : ServiceBase<Dt_Task, ITaskRepository>, ITaskService
    {
        /// <summary>
        /// æµ‹è¯•架出仓
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public MesResponseContent TestToolOut(TestToolOutModel model)
        {
            return new MesResponseContent();
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core.Attributes;
using WIDESEA_Core;
using WIDESEA_DTO;
using WIDESEA_IBasicService;
using WIDESEA_IInboundRepository;
using WIDESEA_IInboundService;
using WIDESEA_IOutboundService;
using WIDESEA_ITaskInfoService;
using WIDESEA_TaskInfoService;
using WIDESEA_DTO.ERP;
namespace WIDESEA_WMSServer.Controllers.MES
{
    [Route("api/Mes")]
    [ApiController]
    public class MesController : ControllerBase
    {
        private readonly IPurchaseOrderRepository _purchaseOrderRepository;
        private readonly IPurchaseOrderService _purchaseOrderService;
        private readonly ISupplierInfoService _supplierInfoService;
        private readonly IMaterielInfoService _materielInfoService;
        private readonly IOutboundOrderService _outboundOrderService;
        private readonly ITaskService _taskService;
        public MesController(IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderService purchaseOrderService, ISupplierInfoService supplierInfoService, IMaterielInfoService materielInfoService, IOutboundOrderService outboundOrderService,ITaskService taskService)
        {
            _purchaseOrderRepository = purchaseOrderRepository;
            _purchaseOrderService = purchaseOrderService;
            _supplierInfoService = supplierInfoService;
            _materielInfoService = materielInfoService;
            _outboundOrderService = outboundOrderService;
            _taskService = taskService;
        }
        /// <summary>
        /// æŽ¥æ”¶MES测试架出库
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost, Route("TestToolOut"), AllowAnonymous, MethodParamsValidate]
        public MesResponseContent TestToolOut([FromBody] Root<TestToolOutModel> model)
        {
          return  _taskService.TestToolOut(model.Content);
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core;
using WIDESEA_Core.BaseController;
using WIDESEA_DTO.Stock;
using WIDESEA_IBasicRepository;
@@ -23,5 +24,16 @@
        {
            return Service.GetStockSelectViews(orderId, materielCode);
        }
        /// <summary>
        /// æ‹£é€‰
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("GetStockOutboundOrder")]
        public StockOutboundOrderDTO GetStockOutboundOrder([FromBody] SaveModel saveModel)
        {
            return Service.GetStockOutboundOrder(saveModel);
        }
    }
}