22
schangxiang@126.com
2024-12-18 344680022c0c46a1bb108e7d2e81bf2296d79d15
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/WmsRbLineTaskService.cs
@@ -116,257 +116,7 @@
    #region 导入
    
    /// <summary>
    /// Excel模板导入机器人任务表功能
    /// </summary>
    /// <param name="file">Excel模板文件</param>
    /// <returns>导入的记录数</returns>
    [HttpPost]
    [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);
        await _rep.InsertRangeAsync(addList);
        return addList.Count;
    }
    
    /// <summary>
    ///  DataTable转换实体对象列表
    /// </summary>
    /// <param name="dataTable"></param>
    /// <param name="dataStartLine">模版列名开始行</param>
    /// <returns></returns>
    private async Task<List<WmsRbLineTask>> CommonImport(DataTable dataTable, int dataStartLine)
    {
        var details = new List<WmsRbLineTask>();
        int index = dataStartLine;//模版列名开始行
        foreach (System.Data.DataRow row in dataTable.Rows)
        {
            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(_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);
        }
        //验重
        await CheckExisitForImport(details);
        return details;
    }
    
    /// <summary>
    /// 根据版本下载机器人任务表的Excel导入模板
@@ -396,33 +146,31 @@
        var query = _rep.AsQueryable()
            .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
                u.TaskNo.Contains(input.SearchKey.Trim())
                || u.TaskName.Contains(input.SearchKey.Trim())
                || u.UPI.Contains(input.SearchKey.Trim())
                || u.Upi.Contains(input.SearchKey.Trim())
                || u.PlanNo.Contains(input.SearchKey.Trim())
                || u.OrderId.Contains(input.SearchKey.Trim())
                || u.PackageCode.Contains(input.SearchKey.Trim())
                || u.PlaceCode.Contains(input.SearchKey.Trim())
                || u.RbTaskTypeEnumName.Contains(input.SearchKey.Trim())
                || u.TaskStatusName.Contains(input.SearchKey.Trim())
                || u.TaskDescribe.Contains(input.SearchKey.Trim())
                || u.TaskMsg.Contains(input.SearchKey.Trim())
                || u.Info17.Contains(input.SearchKey.Trim())
                || u.CreateUserName.Contains(input.SearchKey.Trim())
                || u.UpdateUserName.Contains(input.SearchKey.Trim())
            )
            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskNo), u => u.TaskNo.Contains(input.TaskNo.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskName), u => u.TaskName.Contains(input.TaskName.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.UPI), u => u.UPI.Contains(input.UPI.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.Upi), u => u.Upi.Contains(input.Upi.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.PlanNo), u => u.PlanNo.Contains(input.PlanNo.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.OrderId), u => u.OrderId.Contains(input.OrderId.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode.Contains(input.PackageCode.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.PlaceCode), u => u.PlaceCode.Contains(input.PlaceCode.Trim()))
            .WhereIF(input.RbTaskType.HasValue, u => u.RbTaskType == input.RbTaskType)
            .WhereIF(!string.IsNullOrWhiteSpace(input.RbTaskTypeEnumName), u => u.RbTaskTypeEnumName.Contains(input.RbTaskTypeEnumName.Trim()))
            .WhereIF(input.TaskStatus.HasValue, u => u.TaskStatus == input.TaskStatus)
            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskStatusName), u => u.TaskStatusName.Contains(input.TaskStatusName.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskDescribe), u => u.TaskDescribe.Contains(input.TaskDescribe.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskMsg), u => u.TaskMsg.Contains(input.TaskMsg.Trim()))
            .WhereIF(input.IsFlagFinish.HasValue, u => u.IsFlagFinish == input.IsFlagFinish)
            .WhereIF(input.LastNum>0, u => u.LastNum == input.LastNum)
            .WhereIF(!string.IsNullOrWhiteSpace(input.Info17), u => u.Info17.Contains(input.Info17.Trim()))
            .WhereIF(input.Sequence>0, u => u.Sequence == input.Sequence)
            .Select<WmsRbLineTaskOutput>();
        if(input.IssueTimeRange != null && input.IssueTimeRange.Count >0)
        {
@@ -444,6 +192,26 @@
                query = query.Where(u => u.FinishedTime <= end);
            }
        } 
        if(input.CreateTimeRange != null && input.CreateTimeRange.Count >0)
        {
            DateTime? start= input.CreateTimeRange[0].Value;
            query = query.WhereIF(start.HasValue, u => u.CreateTime >= start);
            if (input.CreateTimeRange.Count >1 && input.CreateTimeRange[1].HasValue)
            {
                var end = input.CreateTimeRange[1].Value;
                query = query.Where(u => u.CreateTime <= end);
            }
        }
        if(input.UpdateTimeRange != null && input.UpdateTimeRange.Count >0)
        {
            DateTime? start= input.UpdateTimeRange[0].Value;
            query = query.WhereIF(start.HasValue, u => u.UpdateTime >= start);
            if (input.UpdateTimeRange.Count >1 && input.UpdateTimeRange[1].HasValue)
            {
                var end = input.UpdateTimeRange[1].Value;
                query = query.Where(u => u.UpdateTime <= end);
            }
        }
        return query;
       }