payne
2024-04-24 0609ad2318e9d20dfa1d1eebe3c24242717cd112
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs
@@ -16,7 +16,7 @@
namespace Admin.NET.Application
{
    /// <summary>
    /// 包装关系基础表服务
    /// 容器关系服务
    /// </summary>
    [ApiDescriptionSettings("WmsBase", Name = "WmsContainerPackaging", Order = 100)]
    [Route("api")]
@@ -42,7 +42,7 @@
        }
        /// <summary>
        /// 分页查询包装关系基础表
        /// 分页查询容器关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -67,10 +67,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 +102,7 @@
        }
         /// <summary>
        /// 获取包装关系基础表
        /// 获取容器关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -113,7 +113,7 @@
        }
        /// <summary>
        /// 获取包装关系基础表列表
        /// 获取容器关系列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -126,7 +126,7 @@
        #region 增、删、改
        /// <summary>
        /// 增加包装关系基础表
        /// 增加容器关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -144,7 +144,7 @@
        }
        /// <summary>
        /// 删除包装关系基础表
        /// 删除容器关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -157,7 +157,7 @@
        }
        /// <summary>
        /// 更新包装关系基础表
        /// 更新容器关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -182,7 +182,7 @@
        #region 导入
        /// <summary>
        /// Excel模板导入包装关系基础表功能
        /// Excel模板导入容器关系功能
        /// </summary>
        /// <param name="file">Excel模板文件</param>
        /// <returns>导入的记录数</returns>
@@ -253,6 +253,12 @@
                          
                          
                          #region 验证
                          if (string.IsNullOrEmpty(_ContainerTypeId))
                          {
                            throw Oops.Oh($"第{index}行[容器类型ID]{_ContainerTypeId}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_ContainerTypeId))
                          {
                              if (!long.TryParse(_ContainerTypeId, out long outContainerTypeId)&&!string.IsNullOrEmpty(_ContainerTypeId))
@@ -269,10 +275,22 @@
                              }
                          
                          }
                          if (string.IsNullOrEmpty(_ContainerTypeName))
                          {
                            throw Oops.Oh($"第{index}行[容器类型名称]{_ContainerTypeName}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_ContainerTypeName))
                          {
                                addItem.ContainerTypeName = (string)_ContainerTypeName;
                           }
                          if (string.IsNullOrEmpty(_MaterialTypeId))
                          {
                            throw Oops.Oh($"第{index}行[物料类型ID]{_MaterialTypeId}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_MaterialTypeId))
                          {
                              if (!long.TryParse(_MaterialTypeId, out long outMaterialTypeId)&&!string.IsNullOrEmpty(_MaterialTypeId))
@@ -289,14 +307,32 @@
                              }
                          
                          }
                          if (string.IsNullOrEmpty(_MaterialTypeCode))
                          {
                            throw Oops.Oh($"第{index}行[物料类型编号]{_MaterialTypeCode}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_MaterialTypeCode))
                          {
                                addItem.MaterialTypeCode = (string)_MaterialTypeCode;
                           }
                          if (string.IsNullOrEmpty(_MaterialTypeName))
                          {
                            throw Oops.Oh($"第{index}行[物料类型名称]{_MaterialTypeName}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_MaterialTypeName))
                          {
                                addItem.MaterialTypeName = (string)_MaterialTypeName;
                           }
                          if (string.IsNullOrEmpty(_BoxQty))
                          {
                            throw Oops.Oh($"第{index}行[物料容器容量]{_BoxQty}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_BoxQty))
                          {
                              if (!decimal.TryParse(_BoxQty, out decimal outBoxQty)&&!string.IsNullOrEmpty(_BoxQty))
@@ -342,7 +378,7 @@
        }
        /// <summary>
        /// 根据版本下载包装关系基础表的Excel导入模板
        /// 根据版本下载容器关系的Excel导入模板
        /// </summary>
        /// <param name="version">模板版本</param>
        /// <returns>下载的模板文件</returns>
@@ -350,7 +386,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 };
        }
@@ -369,13 +405,29 @@
           
           
           bool isExist = false;
           if (!isEdit)//新增
           {
                   //数据是否存在重复
                   isExist = await _wmsContainerPackagingRep.AnyAsync(u =>
                                   u.ContainerTypeId.Equals(input.ContainerTypeId)
                   ,false);
          }
           else//编辑
          {
          
                
                 //当前编辑数据以外是否存在重复
                  isExist = await _wmsContainerPackagingRep.AnyAsync(u =>
                                    u.Id != input.Id
                                    &&u.ContainerTypeId.Equals(input.ContainerTypeId)
                    ,false);
               }
               
        
            //没有配置联合主键,不需要验重
            if (isExist) throw Oops.Oh(ErrorCode.E0001);
       }
        
        /// <summary>
@@ -386,10 +438,42 @@
        private async Task CheckExisitForImport(List<WmsContainerPackaging> inputs)
        { 
            //根据联合主键验证表格中中是否已存在相同数据  
                 if (inputs?.Count <= 0)
                 {
                     throw Oops.Oh($"导入数据不能为空");
                 }
                 //数据是否重复
                 var existExcelItem = inputs.GroupBy(g => new {
                                               g.ContainerTypeId
                                               })
                                               .Where(g => g.Count() > 1)
                                               .Select(s => new {
                                               s.Key.ContainerTypeId
                                               }).FirstOrDefault();
                 if (existExcelItem != null)
                 {
                   var wmsContainerPackaging = existExcelItem.Adapt<WmsContainerPackaging>();
                   var item= existExcelItem.Adapt<WmsContainerPackaging>();
                   throw Oops.Oh($"导入的表格中,容器类型ID[{item.ContainerTypeId}]已存在");
                 }
                      
    //根据联合主键验证数据库中是否已存在相同数据
                 var existDBItem = await _wmsContainerPackagingRep.DetachedEntities.FirstOrDefaultAsync(w=>
                                                                         inputs.Select(s=>""
                                                                           +s.ContainerTypeId
                                                                        )
                                                                        .Contains(""
                                                                         +w.ContainerTypeId
                  ));
                  if (existDBItem != null)
                 {
                   var wmsContainerPackaging = existExcelItem.Adapt<WmsContainerPackaging>();
                   var item= existExcelItem.Adapt<WmsContainerPackaging>();
                   throw Oops.Oh($"系统中,容器类型ID[{item.ContainerTypeId}]已存在");
                 }
        }
        #endregion