1
payne
2024-04-25 73e52dd9e61cabc5c05da94e7f4c024078f0be31
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs
@@ -13,10 +13,12 @@
using System.Web;
using System.ComponentModel;
using System.Data;
using NetTopologySuite.Algorithm;
using Pipelines.Sockets.Unofficial.Arenas;
namespace Admin.NET.Application
{
    /// <summary>
    /// 包装关系基础表服务
    /// 容器关系服务
    /// </summary>
    [ApiDescriptionSettings("WmsBase", Name = "WmsContainerPackaging", Order = 100)]
    [Route("api")]
@@ -27,22 +29,27 @@
        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
        private readonly ISysExcelTemplateService _sysExcelTemplateService;
        private readonly static object _lock = new();
        private readonly IRepository<WmsMaterialType, MasterDbContextLocator> _wmsMaterialTypeRep;
        private readonly IRepository<WmsContainerType, MasterDbContextLocator> _wmsContainerTypeRep;
        public WmsContainerPackagingService(
            IRepository<WmsContainerPackaging,MasterDbContextLocator> wmsContainerPackagingRep
            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
            ,ISysExcelTemplateService sysExcelTemplateService
            , IRepository<WmsMaterialType, MasterDbContextLocator> wmsMaterialTypeRep
            , IRepository<WmsContainerType, MasterDbContextLocator> wmsContainerTypeRep
        )
        {
            _wmsContainerPackagingRep = wmsContainerPackagingRep;
         _sysDictTypeRep = sysDictTypeRep;
         _sysDictDataRep = sysDictDataRep;
         _sysExcelTemplateService = sysExcelTemplateService;
            _wmsMaterialTypeRep = wmsMaterialTypeRep;
            _wmsContainerTypeRep = wmsContainerTypeRep;
        }
        /// <summary>
        /// 分页查询包装关系基础表
        /// 分页查询容器关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -67,10 +74,10 @@
        }
        /// <summary>
        /// 不分页查询包装关系基础表列表
        /// 不分页查询容器关系列表
        /// </summary>
        /// <param name="input">包装关系基础表查询参数</param>
        /// <returns>(包装关系基础表)实例列表</returns>
        /// <param name="input">容器关系查询参数</param>
        /// <returns>(容器关系)实例列表</returns>
        [HttpGet("WmsContainerPackaging/listNonPage")]
        public async Task<List<WmsContainerPackagingOutput>> ListNonPageAsync([FromQuery] WmsContainerPackagingSearchNonPage input)
        {
@@ -102,7 +109,7 @@
        }
         /// <summary>
        /// 获取包装关系基础表
        /// 获取容器关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -113,7 +120,7 @@
        }
        /// <summary>
        /// 获取包装关系基础表列表
        /// 获取容器关系列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -126,7 +133,7 @@
        #region 增、删、改
        /// <summary>
        /// 增加包装关系基础表
        /// 增加容器关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -134,7 +141,29 @@
        public async Task Add(AddWmsContainerPackagingInput input)
        {
            var wmsContainerPackaging = input.Adapt<WmsContainerPackaging>();
                        //验证
           var wmsMaterialType=(await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.MaterialTypeId&&u.IsDeleted==false)).Adapt<WmsMaterialTypeOutput>();
            if (wmsMaterialType == null)
            {
                throw Oops.Oh($"物料类型不存在");
            }
            if (wmsMaterialType.IsDisabled == true)
            {
                throw Oops.Oh($"物料类型已禁用");
            }
            var wmsContainerType=(await _wmsContainerTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.ContainerTypeId&& u.IsDeleted == false)).Adapt<WmsContainerTypeOutput>();
            if (wmsContainerType == null)
            {
                throw Oops.Oh($"容器类型不存在");
            }
            if (wmsContainerType.IsDisabled == true)
            {
                throw Oops.Oh($"容器类型已禁用");
            }
            wmsContainerPackaging.ContainerTypeName = wmsContainerType.TypeName;
            wmsContainerPackaging.MaterialTypeName= wmsMaterialType.MaterialTypeName;
            wmsContainerPackaging.MaterialTypeCode = wmsMaterialType.MaterialTypeCode;
            //验证
            await CheckExisit(wmsContainerPackaging);
            wmsContainerPackaging.CreatedUserId = wmsContainerPackaging.UpdatedUserId = SysHelper.GetUserId();
@@ -144,7 +173,7 @@
        }
        /// <summary>
        /// 删除包装关系基础表
        /// 删除容器关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -157,7 +186,7 @@
        }
        /// <summary>
        /// 更新包装关系基础表
        /// 更新容器关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -182,7 +211,7 @@
        #region 导入
        /// <summary>
        /// Excel模板导入包装关系基础表功能
        /// Excel模板导入容器关系功能
        /// </summary>
        /// <param name="file">Excel模板文件</param>
        /// <returns>导入的记录数</returns>
@@ -237,7 +266,6 @@
                           var _MaterialTypeCode = "";//物料类型编号
                           var _MaterialTypeName = "";//物料类型名称
                           var _BoxQty = "";//物料容器容量
                           var _Id = "";//Id主键
                          #endregion
                          
                          
@@ -248,7 +276,6 @@
                           _MaterialTypeCode = row["物料类型编号"]?.ToString() ;
                           _MaterialTypeName = row["物料类型名称"]?.ToString() ;
                           _BoxQty = row["物料容器容量"]?.ToString() ;
                           _Id = row["Id主键"]?.ToString() ;
                          #endregion
                          
                          
@@ -349,22 +376,7 @@
                              }
                          
                          }
                          if(!string.IsNullOrEmpty(_Id))
                          {
                              if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id))
                              {
                                 throw Oops.Oh($"第{index}行[Id主键]{_Id}值不正确!");
                              }
                              if (outId <= 0&&!string.IsNullOrEmpty(_Id))
                              {
                                 throw Oops.Oh($"第{index}行[Id主键]{_Id}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.Id = outId;
                              }
                          }
                          #endregion
                          
@@ -378,7 +390,7 @@
        }
        /// <summary>
        /// 根据版本下载包装关系基础表的Excel导入模板
        /// 根据版本下载容器关系的Excel导入模板
        /// </summary>
        /// <param name="version">模板版本</param>
        /// <returns>下载的模板文件</returns>
@@ -386,7 +398,7 @@
        public IActionResult DownloadExcelTemplate([FromQuery] string version)
        {
            string _path = TemplateConst.EXCEL_TEMPLATEFILE_导入模版路径 + $"\\WmsContainerPackaging{TemplateConst.EXCEL_TEMPLATEFILE_导入模版名称后缀}.xlsx";
            var fileName = HttpUtility.UrlEncode($"导入模板(包装关系基础表).xlsx", Encoding.GetEncoding("UTF-8"));
            var fileName = HttpUtility.UrlEncode($"导入模板(容器关系).xlsx", Encoding.GetEncoding("UTF-8"));
            return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
        }
@@ -402,17 +414,23 @@
        /// <returns></returns>
        private async Task CheckExisit( WmsContainerPackaging input,bool isEdit=false)
        {
           bool isExist = false;
            string erorMsg = string.Empty;
            bool isExist = false;
           if (!isEdit)//新增
           {
                   //数据是否存在重复
                   isExist = await _wmsContainerPackagingRep.AnyAsync(u =>
                                   u.ContainerTypeId.Equals(input.ContainerTypeId)
                                   &&u.MaterialTypeId.Equals(input.MaterialTypeId)
                   ,false);
          }
                if (isExist)
                {
                    erorMsg = $"系统中,容器类型[{input.ContainerTypeName}]-物料类型[{input.MaterialTypeName}]关系已存在";
                    throw Oops.Oh(erorMsg);
                }
            }
           else//编辑 
          {
@@ -421,13 +439,18 @@
                 //当前编辑数据以外是否存在重复
                  isExist = await _wmsContainerPackagingRep.AnyAsync(u => 
                                    u.Id != input.Id
                                    &&u.ContainerTypeId.Equals(input.ContainerTypeId)
                    ,false);
               }
                                   &&u.ContainerTypeId.Equals(input.ContainerTypeId)
                                   && u.MaterialTypeId.Equals(input.MaterialTypeId)
                    , false);
                if (isExist)
                {
                    erorMsg = $"系统中,容器类型[{input.ContainerTypeName}]-物料类型[{input.MaterialTypeName}]关系已存在";
                    throw Oops.Oh(erorMsg);
                }
            }
               
        
            if (isExist) throw Oops.Oh(ErrorCode.E0001);
       }
        
        /// <summary>