diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmGoodsBatchSearchController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmGoodsBatchSearchController.cs index 26073983..f1dc383c 100644 --- a/ZR.Admin.WebApi/Controllers/mes/wms/WmGoodsBatchSearchController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmGoodsBatchSearchController.cs @@ -6,6 +6,7 @@ using ZR.Admin.WebApi.Filters; using ZR.Model.MES.wms.Dto; using ZR.Service.mes.wms.IService; using ZR.Model.MES.wms; +using ZR.Model; //创建时间:2024-04-26 namespace ZR.Admin.WebApi.Controllers @@ -39,12 +40,13 @@ namespace ZR.Admin.WebApi.Controllers { throw new ArgumentNullException(nameof(parm)); } - List result = null; - // 父组件 + PagedInfo result = null; + // 树父列表 if (parm.Model == 1 && parm.Type == 1) { result = _wmGoodsBatchSearchService.GetBatchOutRecordByPackageCodeShort(parm); } + // 树子列表 else if (parm.Model == 1 && parm.Type == 2) { result = _wmGoodsBatchSearchService.GetBatchOutRecordTreeLazyByPackageCodeShort(parm); diff --git a/ZR.Model/MES/wms/Dto/WmGoodsBatchSearchDto.cs b/ZR.Model/MES/wms/Dto/WmGoodsBatchSearchDto.cs index 76fb605b..35107dda 100644 --- a/ZR.Model/MES/wms/Dto/WmGoodsBatchSearchDto.cs +++ b/ZR.Model/MES/wms/Dto/WmGoodsBatchSearchDto.cs @@ -34,7 +34,7 @@ namespace ZR.Model.MES.wms.Dto /// /// ID /// - public int Id { get; set; } = -1; + public string Id { get; set; } = string.Empty; /// /// 树子节点主键(需要第二层为空) /// @@ -62,7 +62,7 @@ namespace ZR.Model.MES.wms.Dto /// /// 箱数 /// - public string PackageNum { get; set; } = string.Empty; + public int PackageNum { get; set; } = 0; /// /// 理论库存 /// @@ -76,6 +76,14 @@ namespace ZR.Model.MES.wms.Dto /// public DateTime? EntryWarehouseTime { get; set; } = null; /// + /// 出库时间 + /// + public DateTime? OutTime { get; set; } = null; + /// + /// 备注 + /// + public string Remark { get; set; } = null; + /// /// 是否拥有树子节点 /// public bool HasChild { get; set; } = false; diff --git a/ZR.Service/mes/wms/IService/IWmGoodsBatchSearchService.cs b/ZR.Service/mes/wms/IService/IWmGoodsBatchSearchService.cs index cd33037a..3569358e 100644 --- a/ZR.Service/mes/wms/IService/IWmGoodsBatchSearchService.cs +++ b/ZR.Service/mes/wms/IService/IWmGoodsBatchSearchService.cs @@ -17,13 +17,13 @@ namespace ZR.Service.mes.wms.IService /// /// /// - List GetBatchOutRecordByPackageCodeShort(WmGoodsBatchSearchDto parm); + PagedInfo GetBatchOutRecordByPackageCodeShort(WmGoodsBatchSearchDto parm); /// /// 树表子节点懒加载查询 /// /// /// - List GetBatchOutRecordTreeLazyByPackageCodeShort(WmGoodsBatchSearchDto parm); + PagedInfo GetBatchOutRecordTreeLazyByPackageCodeShort(WmGoodsBatchSearchDto parm); } } diff --git a/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs b/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs index 0360e4ba..61ac581b 100644 --- a/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs +++ b/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs @@ -15,6 +15,7 @@ using MimeKit.Utils; using System.Collections.Generic; using Org.BouncyCastle.Crypto; using static System.Runtime.InteropServices.JavaScript.JSType; +using JinianNet.JNTemplate; namespace ZR.Service.Business { @@ -24,25 +25,52 @@ namespace ZR.Service.Business [AppService(ServiceType = typeof(IWmGoodsBatchSearchService), ServiceLifetime = LifeTime.Transient)] public class WmGoodsBatchSearchService : BaseService, IWmGoodsBatchSearchService { - public List GetBatchOutRecordByPackageCodeShort(WmGoodsBatchSearchDto parm) + public PagedInfo GetBatchOutRecordByPackageCodeShort(WmGoodsBatchSearchDto parm) { try { // 查询条件 var exp = Expressionable.Create() - .AndIF(!string.IsNullOrEmpty(parm.Partnumber), it => it.PackageCodeClient.Contains(parm.Partnumber)) - .AndIF(!string.IsNullOrEmpty(parm.PackageCode), it => it.PackageCodeClient.Contains(parm.PackageCode)) + .AndIF(!string.IsNullOrEmpty(parm.Partnumber), it => it.Partnumber.Contains(parm.Partnumber)) + // 根据sql语句进行切换 + .AndIF(!string.IsNullOrEmpty(parm.PackageCode), it => it.PackageCode.Contains(parm.PackageCode)) .ToExpression(); - // 出库记录 - List outPackageList = Context.Queryable() - .Where(exp) - .GroupBy(x => x.PackageCode) - - .ToList(); - - - - List result = new List(); + string sql = "SELECT\n" + + " MAX( id ) AS ID,\n" + + " SUBSTRING_INDEX( package_code_client, '_', 1 ) AS PackageCodeClient_son,\n" + + " NULL AS PackageCodeClient_short_parent,\n" + + " MAX( partnumber ) AS Partnumber,\n" + + " '' AS Description,\n" + + " SUBSTRING_INDEX( package_code_client, '_', 1 ) AS PackageCode,\n" + + " MAX( location_code ) AS LocationCode,\n" + + " COUNT( * ) AS PackageNum,\n" + + " SUM( goods_num_logic ) AS GoodsNumLogic,\n" + + " SUM( goods_num_action ) AS GoodsNumAction,\n" + + " MAX( Remark ) AS Remark,\n" + + " MAX( out_time ) AS OutTime,\n" + + " TRUE AS HasChild \n" + + "FROM\n" + + " wm_goods_out_record \n" + + "GROUP BY\n" + + " PackageCode \n" + + "ORDER BY\n" + + " OutTime DESC"; + PagedInfo result = Context.SqlQueryable(sql) + .Where(exp) + .Select() + .ToPage(parm); + foreach(WmGoodsBatchTableDto item in result.Result) + { + WmMaterial material = Context.Queryable() + .Where(it => it.Partnumber.Contains(item.Partnumber)) + .First(); + if(material == null) + { + item.Description = "此零件号不在物料清单内!"; + continue; + } + item.Description = !string.IsNullOrEmpty(material.Description) ? material.Description : material.ProductName; + } return result; } catch @@ -52,9 +80,50 @@ namespace ZR.Service.Business } - public List GetBatchOutRecordTreeLazyByPackageCodeShort(WmGoodsBatchSearchDto parm) + public PagedInfo GetBatchOutRecordTreeLazyByPackageCodeShort(WmGoodsBatchSearchDto parm) { - throw new NotImplementedException(); + try + { + PagedInfo result = new PagedInfo(); + // 出库记录 + List list = Context.Queryable() + .Where(it => it.PackageCodeClient.Contains(parm.PackageCode)) + .Select(it => new WmGoodsBatchTableDto + { + Id = it.Id, + PackageCode = it.PackageCodeClient, + PackageCodeClient_son = null, + PackageCodeClient_short_parent = parm.PackageCode, + Partnumber = it.Partnumber, + Description = "", + LocationCode = it.LocationCode, + PackageNum = 1, + GoodsNumLogic = (int)it.GoodsNumLogic, + GoodsNumAction = (int)it.GoodsNumAction, + OutTime = it.OutTime, + Remark = it.Remark, + HasChild = false + }) + .OrderBy(it => it.Id) + .ToList(); + foreach (WmGoodsBatchTableDto item in list) + { + WmMaterial material = Context.Queryable() + .Where(it => it.Partnumber.Contains(item.Partnumber)) + .First(); + if (material == null) + { + item.Description = "此零件号不在物料清单内!"; + continue; + } + item.Description = !string.IsNullOrEmpty(material.Description) ? material.Description : material.ProductName; + } + result.Result = list; + return result; + } + catch { + return null; + } } } } \ No newline at end of file