liuying
2024-11-30 3706fb22a858169204aa05a01b38ec1a4e04b5c7
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/WmsRbLineTaskService.cs
@@ -92,7 +92,7 @@
        var entity = input.Adapt<WmsRbLineTask>();
        //重复性验证
        await CheckExist(entity, true);
        await CheckExist(entity,true);
        await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
    }
@@ -115,7 +115,7 @@
    #region 导入
    /// <summary>
    /// Excel模板导入机器人任务表功能
    /// </summary>
@@ -125,15 +125,15 @@
    [ApiDescriptionSettings(Name = "ImportExcel")]
    [Description("WmsRbLineTask/ImportExcel")]
    public async Task<int> ImportExcelAsync(IFormFile file)
    {
    {
        int _HeadStartLine = 2;//第1行是说明,第2行是列名
        int _DataStartLine = 3;//第3行开始是数据
        DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
        var addList = await CommonImport(importDataTable, _DataStartLine);
        var addList =await CommonImport(importDataTable, _DataStartLine);
        await _rep.InsertRangeAsync(addList);
        return addList.Count;
    }
    /// <summary>
    ///  DataTable转换实体对象列表
    /// </summary>
@@ -148,234 +148,218 @@
        {
            index++;
            //导入模版定制化代码(替换模版使用)
            var addItem = new WmsRbLineTask();
            #region 定义变量
            var _TaskNo = "";//任务号
            var _TaskName = "";//任务名称
            var _UPI = "";//部件条码
            var _Length = "";//长
            var _Width = "";//宽
            var _Thk = "";//厚
            var _PlanNo = "";//批次号
            var _OrderId = "";//订单号
            var _PackageCode = "";//包装号
            var _PlaceCode = "";//库位编码
            var _RbTaskType = "";//任务类型
            var _RbTaskTypeEnumName = "";//任务类型名称
            var _TaskStatus = "";//任务状态
            var _TaskStatusName = "";//任务状态名称
            var _TaskDescribe = "";//任务描述
            var _TaskMsg = "";//任务消息
            var _IssueTime = "";//下发时间
            var _FinishedTime = "";//任务完成时间
            var _IsFlagFinish = "";//是否标记强制完成
            #endregion
            #region 取值
            _TaskNo = row["任务号"]?.ToString();
            _TaskName = row["任务名称"]?.ToString();
            _UPI = row["部件条码"]?.ToString();
            _Length = row["长"]?.ToString();
            _Width = row["宽"]?.ToString();
            _Thk = row["厚"]?.ToString();
            _PlanNo = row["批次号"]?.ToString();
            _OrderId = row["订单号"]?.ToString();
            _PackageCode = row["包装号"]?.ToString();
            _PlaceCode = row["库位编码"]?.ToString();
            _RbTaskType = row["任务类型"]?.ToString();
            _RbTaskTypeEnumName = row["任务类型名称"]?.ToString();
            _TaskStatus = row["任务状态"]?.ToString();
            _TaskStatusName = row["任务状态名称"]?.ToString();
            _TaskDescribe = row["任务描述"]?.ToString();
            _TaskMsg = row["任务消息"]?.ToString();
            _IssueTime = row["下发时间"]?.ToString();
            _FinishedTime = row["任务完成时间"]?.ToString();
            _IsFlagFinish = row["是否标记强制完成"]?.ToString();
            #endregion
            #region 验证
            if (string.IsNullOrEmpty(_TaskNo))
            {
                throw Oops.Oh($"第{index}行[任务号]{_TaskNo}不能为空!");
            }
            if (!string.IsNullOrEmpty(_TaskNo))
            {
                addItem.TaskNo = (string)(_TaskNo.Trim());
            }
            if (!string.IsNullOrEmpty(_TaskName))
            {
                addItem.TaskName = (string)(_TaskName.Trim());
            }
            if (string.IsNullOrEmpty(_UPI))
            {
                throw Oops.Oh($"第{index}行[部件条码]{_UPI}不能为空!");
            }
            if (!string.IsNullOrEmpty(_UPI))
            {
                addItem.UPI = (string)(_UPI.Trim());
            }
            if (string.IsNullOrEmpty(_Length))
            {
                throw Oops.Oh($"第{index}行[长]{_Length}不能为空!");
            }
            //if(!string.IsNullOrEmpty(_Length))
            //{
            //      addItem.Length = (float)(_Length.Trim());
            // }
            //if (string.IsNullOrEmpty(_Width))
            //{
            //  throw Oops.Oh($"第{index}行[宽]{_Width}不能为空!");
            //}
            //if(!string.IsNullOrEmpty(_Width))
            //{
            //      addItem.Width = (float)(_Width.Trim());
            // }
            if (string.IsNullOrEmpty(_Thk))
            {
                throw Oops.Oh($"第{index}行[厚]{_Thk}不能为空!");
            }
            //if(!string.IsNullOrEmpty(_Thk))
            //{
            //      addItem.Thk = (float)(_Thk.Trim());
            // }
            if (string.IsNullOrEmpty(_PlanNo))
            {
                throw Oops.Oh($"第{index}行[批次号]{_PlanNo}不能为空!");
            }
            if (!string.IsNullOrEmpty(_PlanNo))
            {
                addItem.PlanNo = (string)(_PlanNo.Trim());
            }
            if (string.IsNullOrEmpty(_OrderId))
            {
                throw Oops.Oh($"第{index}行[订单号]{_OrderId}不能为空!");
            }
            if (!string.IsNullOrEmpty(_OrderId))
            {
                addItem.OrderId = (string)(_OrderId.Trim());
            }
            if (string.IsNullOrEmpty(_PackageCode))
            {
                throw Oops.Oh($"第{index}行[包装号]{_PackageCode}不能为空!");
            }
            if (!string.IsNullOrEmpty(_PackageCode))
            {
                addItem.PackageCode = (string)(_PackageCode.Trim());
            }
            if (string.IsNullOrEmpty(_PlaceCode))
            {
                throw Oops.Oh($"第{index}行[库位编码]{_PlaceCode}不能为空!");
            }
            if (!string.IsNullOrEmpty(_PlaceCode))
            {
                addItem.PlaceCode = (string)(_PlaceCode.Trim());
            }
            if (!string.IsNullOrEmpty(_RbTaskType))
            {
                Admin.NET.Application.RbTaskTypeEnum enumRbTaskType = default(Admin.NET.Application.RbTaskTypeEnum);
                if (!Enum.TryParse<Admin.NET.Application.RbTaskTypeEnum>(_RbTaskType, out enumRbTaskType) && !string.IsNullOrEmpty(_RbTaskType))
                {
                    throw Oops.Oh($"第{index}行[任务类型]{_RbTaskType}值不正确!");
                }
                else
                {
                    addItem.RbTaskType = enumRbTaskType;
                }
            }
            if (!string.IsNullOrEmpty(_RbTaskTypeEnumName))
            {
                addItem.RbTaskTypeEnumName = (string)(_RbTaskTypeEnumName.Trim());
            }
            if (string.IsNullOrEmpty(_TaskStatus))
            {
                throw Oops.Oh($"第{index}行[任务状态]{_TaskStatus}不能为空!");
            }
            if (!string.IsNullOrEmpty(_TaskStatus))
            {
                Admin.NET.Application.TaskStatusEnum enumTaskStatus = default(Admin.NET.Application.TaskStatusEnum);
                if (!Enum.TryParse<Admin.NET.Application.TaskStatusEnum>(_TaskStatus, out enumTaskStatus) && !string.IsNullOrEmpty(_TaskStatus))
                {
                    throw Oops.Oh($"第{index}行[任务状态]{_TaskStatus}值不正确!");
                }
                else
                {
                    addItem.TaskStatus = enumTaskStatus;
                }
            }
            if (string.IsNullOrEmpty(_TaskStatusName))
            {
                throw Oops.Oh($"第{index}行[任务状态名称]{_TaskStatusName}不能为空!");
            }
            if (!string.IsNullOrEmpty(_TaskStatusName))
            {
                addItem.TaskStatusName = (string)(_TaskStatusName.Trim());
            }
            if (!string.IsNullOrEmpty(_TaskDescribe))
            {
                addItem.TaskDescribe = (string)(_TaskDescribe.Trim());
            }
            if (!string.IsNullOrEmpty(_TaskMsg))
            {
                addItem.TaskMsg = (string)(_TaskMsg.Trim());
            }
            if (!string.IsNullOrEmpty(_IssueTime))
            {
                addItem.IssueTime = Convert.ToDateTime(Convert.ToDateTime(_IssueTime.Trim()).ToShortDateString());
            }
            if (!string.IsNullOrEmpty(_FinishedTime))
            {
                addItem.FinishedTime = Convert.ToDateTime(Convert.ToDateTime(_FinishedTime.Trim()).ToShortDateString());
            }
            if (string.IsNullOrEmpty(_IsFlagFinish))
            {
                throw Oops.Oh($"第{index}行[是否标记强制完成]{_IsFlagFinish}不能为空!");
            }
            if (!string.IsNullOrEmpty(_IsFlagFinish))
            {
                if (!_IsFlagFinish.Equals("是") && !_IsFlagFinish.Equals("否"))
                {
                    throw Oops.Oh($"第{index}行[是否标记强制完成]{_IsFlagFinish}值不正确!");
                }
                else
                {
                    bool outIsFlagFinish = _IsFlagFinish.Equals("是") ? true : false;
                    addItem.IsFlagFinish = outIsFlagFinish;
                }
            }
            #endregion
                           var addItem = new WmsRbLineTask();
                          #region 定义变量
                           var _TaskNo = "";//任务号
                           var _TaskName = "";//任务名称
                           var _UPI = "";//部件条码
                           var _Length = "";//长
                           var _Width = "";//宽
                           var _Thk = "";//厚
                           var _PlanNo = "";//批次号
                           var _OrderId = "";//订单号
                           var _PackageCode = "";//包装号
                           var _PlaceCode = "";//库位编码
                           var _RbTaskType = "";//任务类型
                           var _RbTaskTypeEnumName = "";//任务类型名称
                           var _TaskStatus = "";//任务状态
                           var _TaskStatusName = "";//任务状态名称
                           var _TaskDescribe = "";//任务描述
                           var _TaskMsg = "";//任务消息
                           var _IssueTime = "";//下发时间
                           var _FinishedTime = "";//任务完成时间
                           var _IsFlagFinish = "";//是否标记强制完成
                          #endregion
                          #region 取值
                           _TaskNo = row["任务号"]?.ToString() ;
                           _TaskName = row["任务名称"]?.ToString() ;
                           _UPI = row["部件条码"]?.ToString() ;
                           _Length = row["长"]?.ToString() ;
                           _Width = row["宽"]?.ToString() ;
                           _Thk = row["厚"]?.ToString() ;
                           _PlanNo = row["批次号"]?.ToString() ;
                           _OrderId = row["订单号"]?.ToString() ;
                           _PackageCode = row["包装号"]?.ToString() ;
                           _PlaceCode = row["库位编码"]?.ToString() ;
                           _RbTaskType = row["任务类型"]?.ToString() ;
                           _RbTaskTypeEnumName = row["任务类型名称"]?.ToString() ;
                           _TaskStatus = row["任务状态"]?.ToString() ;
                           _TaskStatusName = row["任务状态名称"]?.ToString() ;
                           _TaskDescribe = row["任务描述"]?.ToString() ;
                           _TaskMsg = row["任务消息"]?.ToString() ;
                           _IssueTime = row["下发时间"]?.ToString() ;
                           _FinishedTime = row["任务完成时间"]?.ToString() ;
                           _IsFlagFinish = row["是否标记强制完成"]?.ToString() ;
                          #endregion
                          #region 验证
                          if (string.IsNullOrEmpty(_TaskNo))
                          {
                            throw Oops.Oh($"第{index}行[任务号]{_TaskNo}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_TaskNo))
                          {
                                addItem.TaskNo = (string)(_TaskNo.Trim());
                           }
                          if(!string.IsNullOrEmpty(_TaskName))
                          {
                                addItem.TaskName = (string)(_TaskName.Trim());
                           }
                          if (string.IsNullOrEmpty(_UPI))
                          {
                            throw Oops.Oh($"第{index}行[部件条码]{_UPI}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_UPI))
                          {
                                addItem.UPI = (string)(_UPI.Trim());
                           }
                          if (string.IsNullOrEmpty(_Length))
                          {
                            throw Oops.Oh($"第{index}行[长]{_Length}不能为空!");
                          }
                          if (string.IsNullOrEmpty(_Thk))
                          {
                            throw Oops.Oh($"第{index}行[厚]{_Thk}不能为空!");
                          }
                          if (string.IsNullOrEmpty(_PlanNo))
                          {
                            throw Oops.Oh($"第{index}行[批次号]{_PlanNo}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_PlanNo))
                          {
                                addItem.PlanNo = (string)(_PlanNo.Trim());
                           }
                          if (string.IsNullOrEmpty(_OrderId))
                          {
                            throw Oops.Oh($"第{index}行[订单号]{_OrderId}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_OrderId))
                          {
                                addItem.OrderId = (string)(_OrderId.Trim());
                           }
                          if (string.IsNullOrEmpty(_PackageCode))
                          {
                            throw Oops.Oh($"第{index}行[包装号]{_PackageCode}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_PackageCode))
                          {
                                addItem.PackageCode = (string)(_PackageCode.Trim());
                           }
                          if (string.IsNullOrEmpty(_PlaceCode))
                          {
                            throw Oops.Oh($"第{index}行[库位编码]{_PlaceCode}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_PlaceCode))
                          {
                                addItem.PlaceCode = (string)(_PlaceCode.Trim());
                           }
                          if(!string.IsNullOrEmpty(_RbTaskType))
                          {
                          Admin.NET.Application.RbTaskTypeEnum  enumRbTaskType = default(Admin.NET.Application.RbTaskTypeEnum);
                             if(!Enum.TryParse<Admin.NET.Application.RbTaskTypeEnum>(_RbTaskType, out enumRbTaskType)&&!string.IsNullOrEmpty(_RbTaskType))
                              {
                                throw Oops.Oh($"第{index}行[任务类型]{_RbTaskType}值不正确!");
                              }
                              else
                              {
                                 addItem.RbTaskType = enumRbTaskType;
                              }
                           }
                          if(!string.IsNullOrEmpty(_RbTaskTypeEnumName))
                          {
                                addItem.RbTaskTypeEnumName = (string)(_RbTaskTypeEnumName.Trim());
                           }
                          if (string.IsNullOrEmpty(_TaskStatus))
                          {
                            throw Oops.Oh($"第{index}行[任务状态]{_TaskStatus}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_TaskStatus))
                          {
                          Admin.NET.Application.TaskStatusEnum  enumTaskStatus = default(Admin.NET.Application.TaskStatusEnum);
                             if(!Enum.TryParse<Admin.NET.Application.TaskStatusEnum>(_TaskStatus, out enumTaskStatus)&&!string.IsNullOrEmpty(_TaskStatus))
                              {
                                throw Oops.Oh($"第{index}行[任务状态]{_TaskStatus}值不正确!");
                              }
                              else
                              {
                                 addItem.TaskStatus = enumTaskStatus;
                              }
                           }
                          if (string.IsNullOrEmpty(_TaskStatusName))
                          {
                            throw Oops.Oh($"第{index}行[任务状态名称]{_TaskStatusName}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_TaskStatusName))
                          {
                                addItem.TaskStatusName = (string)(_TaskStatusName.Trim());
                           }
                          if(!string.IsNullOrEmpty(_TaskDescribe))
                          {
                                addItem.TaskDescribe = (string)(_TaskDescribe.Trim());
                           }
                          if(!string.IsNullOrEmpty(_TaskMsg))
                          {
                                addItem.TaskMsg = (string)(_TaskMsg.Trim());
                           }
                          if(!string.IsNullOrEmpty(_IssueTime))
                          {
                                addItem.IssueTime =   Convert.ToDateTime(_IssueTime.Trim());
                           }
                          if(!string.IsNullOrEmpty(_FinishedTime))
                          {
                                addItem.FinishedTime =   Convert.ToDateTime(_FinishedTime.Trim());
                           }
                          if (string.IsNullOrEmpty(_IsFlagFinish))
                          {
                            throw Oops.Oh($"第{index}行[是否标记强制完成]{_IsFlagFinish}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_IsFlagFinish))
                          {
                            if(!_IsFlagFinish.Equals("是") && !_IsFlagFinish.Equals("否"))
                             {
                               throw Oops.Oh($"第{index}行[是否标记强制完成]{_IsFlagFinish}值不正确!");
                             }
                             else
                             {
                               bool outIsFlagFinish = _IsFlagFinish.Equals("是") ? true : false;
                               addItem.IsFlagFinish = outIsFlagFinish;
                             }
                             }
                          #endregion
            details.Add(addItem);
        }
@@ -383,7 +367,7 @@
        await CheckExisitForImport(details);
        return details;
    }
    /// <summary>
    /// 根据版本下载机器人任务表的Excel导入模板
    /// </summary>
@@ -397,7 +381,7 @@
        var fileName = HttpUtility.UrlEncode($"导入模板(机器人任务表).xlsx", Encoding.GetEncoding("UTF-8"));
        return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
    }
    #endregion
    #region 私有方法
@@ -440,72 +424,72 @@
            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskMsg), u => u.TaskMsg.Contains(input.TaskMsg.Trim()))
            .WhereIF(input.IsFlagFinish.HasValue, u => u.IsFlagFinish == input.IsFlagFinish)
            .Select<WmsRbLineTaskOutput>();
        if (input.IssueTimeRange != null && input.IssueTimeRange.Count > 0)
        if(input.IssueTimeRange != null && input.IssueTimeRange.Count >0)
        {
            DateTime? start = input.IssueTimeRange[0].Value.AddDays(-1);
            query = query.WhereIF(start.HasValue, u => u.IssueTime > start);
            if (input.IssueTimeRange.Count > 1 && input.IssueTimeRange[1].HasValue)
            DateTime? start= input.IssueTimeRange[0].Value;
            query = query.WhereIF(start.HasValue, u => u.IssueTime >= start);
            if (input.IssueTimeRange.Count >1 && input.IssueTimeRange[1].HasValue)
            {
                var end = input.IssueTimeRange[1].Value.AddDays(1);
                query = query.Where(u => u.IssueTime < end);
                var end = input.IssueTimeRange[1].Value;
                query = query.Where(u => u.IssueTime <= end);
            }
        }
        if (input.FinishedTimeRange != null && input.FinishedTimeRange.Count > 0)
        }
        if(input.FinishedTimeRange != null && input.FinishedTimeRange.Count >0)
        {
            DateTime? start = input.FinishedTimeRange[0].Value.AddDays(-1);
            query = query.WhereIF(start.HasValue, u => u.FinishedTime > start);
            if (input.FinishedTimeRange.Count > 1 && input.FinishedTimeRange[1].HasValue)
            DateTime? start= input.FinishedTimeRange[0].Value;
            query = query.WhereIF(start.HasValue, u => u.FinishedTime >= start);
            if (input.FinishedTimeRange.Count >1 && input.FinishedTimeRange[1].HasValue)
            {
                var end = input.FinishedTimeRange[1].Value.AddDays(1);
                query = query.Where(u => u.FinishedTime < end);
                var end = input.FinishedTimeRange[1].Value;
                query = query.Where(u => u.FinishedTime <= end);
            }
        }
        }
        return query;
    }
       }
    /// <summary>
    /// 重复性验证
    /// </summary>
    /// <param name="input">验证对象</param>
    /// <param name="isEdit">是否是编辑</param>
    /// <returns></returns>
    private async Task CheckExist(WmsRbLineTask input, bool isEdit = false)
    {
        //没有配置组合校验,不需要验重
        //没有配置单独校验,不需要验重
    }
    /// <summary>
    /// 根据组合校验和单独校验验证数据是否已存在-导入时验证
    /// </summary>
    /// <param name="inputs"></param>
    /// <returns></returns>
    private async Task CheckExisitForImport(List<WmsRbLineTask> inputs)
    {
        if (inputs?.Count <= 0)
        /// <summary>
        /// 重复性验证
        /// </summary>
        /// <param name="input">验证对象</param>
        /// <param name="isEdit">是否是编辑</param>
        /// <returns></returns>
        private async Task CheckExist( WmsRbLineTask input,bool isEdit=false)
        {
            throw Oops.Oh($"导入数据不能为空");
            //没有配置组合校验,不需要验重
            //没有配置单独校验,不需要验重
       }
       /// <summary>
        /// 根据组合校验和单独校验验证数据是否已存在-导入时验证
        /// </summary>
        /// <param name="inputs"></param>
        /// <returns></returns>
        private async Task CheckExisitForImport(List<WmsRbLineTask> inputs)
        {
            if (inputs?.Count <= 0)
            {
                throw Oops.Oh($"导入数据不能为空");
            }
            //根据组合校验验证表格中中是否已存在相同数据
           //根据单独校验验证表格中中是否已存在相同数据
        }
        //根据组合校验验证表格中中是否已存在相同数据
        //根据单独校验验证表格中中是否已存在相同数据
    }
    #endregion
     #endregion
}