//using Furion.DatabaseAccessor;
//using Furion.DependencyInjection;
//using Furion.DynamicApiController;
//using Furion.FriendlyException;
//using Mapster;
//using Microsoft.AspNetCore.Http;
//using Microsoft.AspNetCore.Mvc;
//using Microsoft.EntityFrameworkCore;
//using System.Linq.Dynamic.Core;
//using System.Text;
//using System.Web;
//using Admin.NET.Core;
//using Yitter.IdGenerator;
//using StackExchange.Redis;
//namespace Admin.NET.Application
//{
// ///
// /// 任务管理服务
// ///
// [ApiDescriptionSettings("仓库作业", Name = "WmsTask", Order = 102)]
// [Route("api/[Controller]")]
// public class WmsTaskService : IDynamicApiController, ITransient
// {
// private readonly IRepository _sysDictTypeRep;
// private readonly IRepository _sysDictDataRep;
// private readonly IRepository _wmsTaskRep;
// private readonly IRepository _wmsWarehouseEntranceRep;
// private readonly IRepository _wmsPlaceRep;
// private readonly IRepository _wmsOrderRep;
// private readonly IRepository _wmsOrderDetailsRep;
// private readonly IRepository _wmsContainerPlaceRep;
// private readonly IRepository _wmsMaterialStockRep;
// private readonly IRepository _wmsContainerRep;
// private readonly IRepository _wmsMaterialContainerRep;
// private readonly IRepository _wmsAreaRep;
// private readonly ISysExcelTemplateService _sysExcelTemplateService;
// private readonly static object _lock = new();
// ///
// /// 构造函数
// ///
// public WmsTaskService(
// IRepository sysDictTypeRep,
// IRepository sysDictDataRep,
// IRepository wmsTaskRep,
// IRepository wmsWarehouseEntranceRep,
// IRepository wmsOrderRep,
// IRepository wmsOrderDetailsRep,
// IRepository wmsPlaceRep,
// IRepository wmsContainerPlaceRep,
// IRepository wmsMaterialStockRep,
// IRepository wmsContainerRep,
// IRepository wmsMaterialContainerRep,
// IRepository wmsAreaRep,
// ISysExcelTemplateService sysExcelTemplateService
// )
// {
// _sysDictTypeRep = sysDictTypeRep;
// _sysDictDataRep = sysDictDataRep;
// _wmsTaskRep = wmsTaskRep;
// _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
// _wmsOrderRep = wmsOrderRep;
// _wmsOrderDetailsRep = wmsOrderDetailsRep;
// _wmsPlaceRep = wmsPlaceRep;
// _wmsContainerPlaceRep = wmsContainerPlaceRep;
// _wmsMaterialStockRep = wmsMaterialStockRep;
// _wmsContainerRep = wmsContainerRep;
// _wmsMaterialContainerRep = wmsMaterialContainerRep;
// _wmsAreaRep= wmsAreaRep;
// _sysExcelTemplateService = sysExcelTemplateService;
// }
// ///
// /// 分页查询出入库任务管理
// ///
// ///
// ///
// [HttpGet("page")]
// public async Task> Page([FromQuery] WmsTaskSearch input)
// {
// var wmsTasks = await _wmsTaskRep.DetachedEntities
// .Where(u => u.AreaName.Contains("绝缘立库"))
// .Where(!string.IsNullOrEmpty(input.TaskNo), u => EF.Functions.Like(u.TaskNo, $"%{input.TaskNo.Trim()}%"))
// .Where(input.TaskModel != null, u => u.TaskModel == input.TaskModel)
// .Where(input.TaskType != null, u => u.TaskType == input.TaskType)
// .Where(input.TaskStatus != null, u => u.TaskStatus == input.TaskStatus)
// .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
// .Where(!string.IsNullOrEmpty(input.AreaName), u => u.AreaName == input.AreaName)
// .Where(!string.IsNullOrEmpty(input.OrderNo), u => EF.Functions.Like(u.OrderNo, $"%{input.OrderNo.Trim()}%"))
// .Where(!string.IsNullOrEmpty(input.SourcePlace), u => EF.Functions.Like(u.SourcePlace, $"%{input.SourcePlace.Trim()}%"))
// .Where(!string.IsNullOrEmpty(input.ToPlace), u => EF.Functions.Like(u.ToPlace, $"%{input.ToPlace.Trim()}%"))
// .Where(input.Aisle != null, u => u.Aisle == input.Aisle)
// .OrderBy(PageInputOrder.OrderBuilder(input))
// .ProjectToType()
// .ToADPagedListAsync(input.PageNo, input.PageSize);
// return wmsTasks;
// }
// ///
// /// 不分页查询出入库任务管理列表
// ///
// /// 出入库任务管理查询参数
// /// (出入库任务管理)实例列表
// [HttpGet("listNonPage")]
// public async Task> ListNonPageAsync([FromQuery] WmsTaskSearchNonPage input)
// {
// var pTaskNo = input.TaskNo?.Trim() ?? "";
// var pTaskModel = input.TaskModel;
// var pTaskType = input.TaskType;
// var pTaskLevel = input.TaskLevel;
// var pTaskStatus = input.TaskStatus;
// var pIsRead = input.IsRead;
// var pContainerCode = input.ContainerCode?.Trim() ?? "";
// var pAreaName = input.AreaName?.Trim() ?? "";
// var pOrderNo = input.OrderNo?.Trim() ?? "";
// var pTaskDodeviceStatus = input.TaskDodeviceStatus;
// var wmsTasks = await _wmsTaskRep.DetachedEntities
// .Where(!string.IsNullOrEmpty(pTaskNo), u => EF.Functions.Like(u.TaskNo, $"%{pTaskNo}%"))
// .Where(pTaskModel != null, u => u.TaskModel == pTaskModel)
// .Where(pTaskType != null, u => u.TaskType == pTaskType)
// .Where(pTaskLevel != null, u => u.TaskLevel == pTaskLevel)
// .Where(pTaskStatus != null, u => u.TaskStatus == pTaskStatus)
// .Where(pIsRead != null, u => u.IsRead == pIsRead)
// .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%"))
// .Where(!string.IsNullOrEmpty(pAreaName), u => u.AreaName == pAreaName)
// .Where(!string.IsNullOrEmpty(pOrderNo), u => EF.Functions.Like(u.OrderNo, $"%{pOrderNo}%"))
// .Where(pTaskDodeviceStatus != null, u => u.TaskDodeviceStatus == pTaskDodeviceStatus)
// .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
// .ProjectToType()
// .ToListAsync();
// return wmsTasks;
// }
// ///
// /// 增加出入库任务管理
// ///
// ///
// ///
// [HttpPost("add")]
// [NonAction]
// public async Task Add(AddWmsTaskInput input)
// {
// var wmsTask = input.Adapt();
// await _wmsTaskRep.InsertAsync(wmsTask);
// }
// ///
// /// 删除出入库任务管理
// ///
// ///
// ///
// [HttpPost("delete")]
// public async Task Delete(DeleteWmsTaskInput input)
// {
// var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
// await _wmsTaskRep.DeleteAsync(wmsTask);
// }
// ///
// /// 更新出入库任务管理
// ///
// ///
// ///
// [HttpPost("edit")]
// public async Task Update(UpdateWmsTaskInput input)
// {
// var isExist = await _wmsTaskRep.AnyAsync(u => u.Id == input.Id, false);
// if (!isExist) throw Oops.Oh(ErrorCode.D3000);
// var wmsTask = input.Adapt();
// await _wmsTaskRep.UpdateAsync(wmsTask, ignoreNullValues: true);
// }
// ///
// /// 强制完成
// ///
// ///
// [HttpPost("finish")]
// [UnitOfWork]
// public async Task Finish([FromBody] WmsTaskFinishInput input)
// {
// //查询任务
// var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
// if (wmsTask == null) throw Oops.Oh("任务不存在!");
// // 查询混合料库区信息
// var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("绝缘立库"));
// if (wmsArea == null) throw Oops.Oh("库区不存在!");
// // 查询托盘信息,呼救AGV时会进行组盘操作
// var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
// if (wmsContainer == null) throw Oops.Oh("托盘不存在!");
// var statusList = new List { TaskStatusEnum.WEIZHIXING, TaskStatusEnum.ZHIXINGZHONG , TaskStatusEnum .DAIZHIXING};
// if (!statusList.Contains(wmsTask.TaskStatus)) throw Oops.Oh("只有未执行和执行中的任务才能强制完成!");
// if (wmsTask.TaskType == TaskType.RUKU) // 入库任务
// {
// // 查询库位信息 随机分配库位
// var wmsPlace = new WmsPlace();
// if (string.IsNullOrEmpty(wmsTask.ToPlace))
// wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.AreaId == wmsArea.Id && u.Islock == YesOrNot.N && u.PlaceStatus == PlaceStatus.KONGXIAN);
// else
// wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.AreaId == wmsArea.Id && u.PlaceCode == wmsTask.ToPlace);
// if (wmsPlace == null) throw Oops.Oh("库位不存在!");
// if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("库位被锁定!");
// if (wmsPlace.PlaceStatus != PlaceStatus.KONGXIAN) throw Oops.Oh("库位已存货!");
// // 更新库位状态为“存货”
// wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
// if (wmsTask.Description == "空托") wmsPlace.EmptyContainer = YesOrNot.Y; //是否空托
// else wmsPlace.EmptyContainer = YesOrNot.N;
// // 创建托盘号库位关系表
// var wmsContainerPlaceModel = new WmsContainerPlace()
// {
// PlaceId = wmsPlace.Id,
// PlaceCode = wmsPlace.PlaceCode,
// ContainerId = wmsContainer.Id,
// ContainerCode = wmsContainer.ContainerCode,
// ContainerPlaceStatus = CommonStatus.ENABLE
// };
// await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel);
// // 更新库存
// var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities
// .Where(p => p.OrderNo ==wmsTask.OrderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType().ToListAsync();
// foreach (var item in wmsMaterialContainerList)
// {
// var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode
// && p.MaterialBatch == item.MaterialBatch);
// if (wmsMaterialStock != null)
// {
// wmsMaterialStock.Source = RuKuSourceEnum.KONGTUO;
// wmsMaterialStock.AreaId = wmsPlace.AreaId;
// wmsMaterialStock.PlaceCode = wmsPlace.PlaceCode;
// wmsMaterialStock.StockNumber += item.BindQuantity;
// await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
// }
// else
// {
// wmsMaterialStock = new WmsMaterialStock()
// {
// InspectionMethod = MaterialInspection.MIANJIAN,
// UnitType = UnitType.ZHONGLIANG,
// UnitNo = UnitNoType.T,
// MaterialNo = item.MaterialNo,
// MaterialType = MaterialType.CHENGPING,
// MaterialName = item.MaterialName,
// MaterialSpec = item.MaterialSpec,
// MaterialBatch = item.MaterialBatch,
// MaterialDensity = item.MaterialDensity,
// StockNumber = 1,
// PlaceCode = wmsPlace.PlaceCode,
// ContainerId = wmsContainer.Id,
// ContainerCode = wmsContainer.ContainerCode,
// AreaId = wmsPlace.AreaId,
// Source = RuKuSourceEnum.KONGTUO,
// };
// await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
// }
// }
// // 空料箱入库
// if (wmsTask.OrderNo == "N/A")
// {
// var wmsMaterialStock = new WmsMaterialStock()
// {
// InspectionMethod = MaterialInspection.MIANJIAN,
// UnitType = UnitType.ZHONGLIANG,
// UnitNo = UnitNoType.T,
// MaterialNo = "N/A",
// MaterialType = MaterialType.KONGTUO,
// MaterialName = "N/A",
// MaterialSpec = "N/A",
// MaterialBatch = "N/A",
// MaterialDensity = "N/A",
// StockNumber = 0,
// PlaceCode = wmsPlace.PlaceCode,
// ContainerId = wmsContainer.Id,
// ContainerCode = wmsContainer.ContainerCode,
// AreaId = wmsPlace.AreaId,
// Source = RuKuSourceEnum.KONGTUO,
// };
// await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
// }
// // 更新任务状态、设备任务状态、托盘编号、目标位置、库区名称
// wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
// wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
// wmsTask.ContainerCode = wmsContainer.ContainerCode;
// wmsTask.ToPlace = wmsPlace.PlaceCode;
// wmsTask.AreaName = wmsPlace.WmsArea.AreaName;
// wmsTask.IsRead = true;
// // 更新库位状态为存货
// wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
// await _wmsPlaceRep.UpdateAsync(wmsPlace);
// // 更新托盘状态为“库位”
// wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
// await _wmsContainerRep.UpdateAsync(wmsContainer);
// }
// else if (wmsTask.TaskType == TaskType.CHUKU) //出库任务
// {
// var wmsMaterialContainerList = new List();
// // 查询库位信息
// var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.PlaceCode == wmsTask.SourcePlace);
// if (wmsPlace == null) throw Oops.Oh("库位信息不存在!");
// if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("库位被锁定!");
// //if (wmsPlace != null && wmsPlace.PlaceStatus != PlaceStatus.DAICHU) throw Oops.Oh("库位异常货!");
// // 查询是否已存在托盘与库位的关系
// var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode
// && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
// if (wmsContainerPlace == null) throw Oops.Oh("库位容器关系不存在!");
// // 不是空托才会有组盘关系
// if (wmsPlace.EmptyContainer == YesOrNot.N)
// {
// // 检查物料与空托号关系
// wmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
// if (wmsMaterialContainerList.Count <= 0) throw Oops.Oh("托盘号与物料关系不存在!");
// }
// else
// {
// // 更新空料箱库存
// var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsContainer.ContainerCode);
// if (wmsMaterialStock.Source == RuKuSourceEnum.KONGTUO)
// {
// await _wmsMaterialStockRep.DeleteAsync(wmsMaterialStock);
// }
// }
// //构建出库物料和周转箱号关系
// var orderNo = "N/A";
// if (wmsMaterialContainerList.Count > 0) orderNo = YitIdHelper.NextId().ToString();
// foreach (var wmsMaterialContaine in wmsMaterialContainerList)
// {
// //更新状态为”删除“
// wmsMaterialContaine.BindStatus = CommonStatus.DELETED;
// await _wmsMaterialContainerRep.UpdateNowAsync(wmsMaterialContaine);
// //新增组盘绑定记录 正常
// var addWmsMaterialContainer = wmsMaterialContaine;
// addWmsMaterialContainer.Id = YitIdHelper.NextId();
// addWmsMaterialContainer.OrderNo = orderNo;
// addWmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
// await _wmsMaterialContainerRep.InsertNowAsync(addWmsMaterialContainer);
// // 这里没有分拣操作直接更新库存信息
// var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsMaterialContaine.ContainerCode);
// wmsMaterialStock.PlaceCode = "N/A";
// wmsMaterialStock.StockNumber -= wmsMaterialContaine.BindQuantity;
// await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
// }
// //更新任务状态
// wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
// wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
// wmsTask.IsRead = true;
// // 禁用托盘库位关系
// wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
// await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
// // 更新库位状态为“空闲”
// wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
// await _wmsPlaceRep.UpdateAsync(wmsPlace);
// // 更新托盘状态为“空闲”
// wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
// await _wmsContainerRep.UpdateAsync(wmsContainer);
// }
// else //移库任务
// {
// }
// await _wmsTaskRep.UpdateAsync(wmsTask);
// }
// ///
// /// 更新优先级(向上)
// ///
// ///
// [HttpPost("upwardTaskLevel")]
// public async Task UpwardTaskLevel([FromBody] UpdateTaskLevelInput input)
// {
// var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
// if (wmsTask == null) throw Oops.Oh("任务不存在!");
// if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("只有未执行的任务才能更新任务优先级!");
// if(wmsTask.TaskLevel==5) throw Oops.Oh("任务已为最高级别!");
// wmsTask.TaskLevel += 1;
// await _wmsTaskRep.UpdateAsync(wmsTask);
// }
// ///
// /// 更新优先级(向下)
// ///
// ///
// [HttpPost("downTaskLevel")]
// public async Task DownTaskLevel([FromBody] UpdateTaskLevelInput input)
// {
// var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
// if (wmsTask == null) throw Oops.Oh("任务不存在!");
// if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("只有未执行的任务才能更新任务优先级!");
// if (wmsTask.TaskLevel == 1) throw Oops.Oh("任务已为最低级别!");
// wmsTask.TaskLevel -= 1;
// await _wmsTaskRep.UpdateAsync(wmsTask);
// }
// ///
// /// 取消
// ///
// ///
// ///
// [HttpPost("CancelTask")]
// public async Task CancelTask([FromBody] CancelInput input)
// {
// var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
// if (wmsTask == null) throw Oops.Oh("任务不存在!");
// if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("只有未执行的任务才能取消任务!");
// wmsTask.TaskStatus = TaskStatusEnum.QUXIAO;
// wmsTask.IsRead=true;
// await _wmsTaskRep.UpdateAsync(wmsTask);
// }
// ///
// /// 批量取消
// ///
// ///
// ///
// [HttpPost("batchCancel")]
// public async Task BatchCancel([FromBody] BatchCancelInput input)
// {
// int length = input.Id.Count;
// for (int i = 0; i < length; i++)
// {
// long Id = input.Id[i];
// var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == Id);
// if (wmsTask == null) throw Oops.Oh("任务不存在!");
// if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("只有未执行的任务才能取消任务!");
// wmsTask.TaskStatus = TaskStatusEnum.QUXIAO;
// await _wmsTaskRep.UpdateAsync(wmsTask);
// }
// }
// ///
// /// 批量暂停
// ///
// ///
// ///
// [HttpPost("batchBreak")]
// public async Task BatchBreak([FromBody] BatchBreakInput input)
// {
// int length = input.Id.Count;
// for (int i = 0; i < length; i++)
// {
// long Id = input.Id[i];
// var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == Id);
// if (wmsTask == null) throw Oops.Oh("任务不存在!");
// if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("只有未执行的任务才能暂停任务!");
// wmsTask.TaskStatus = TaskStatusEnum.ZANTING;
// await _wmsTaskRep.UpdateAsync(wmsTask);
// }
// }
// ///
// /// 批量继续
// ///
// ///
// ///
// [HttpPost("batchContinue")]
// public async Task BatchContinue([FromBody] BatchContinueInput input)
// {
// int length = input.Id.Count;
// for (int i = 0; i < length; i++)
// {
// long Id = input.Id[i];
// var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == Id);
// if (wmsTask == null) throw Oops.Oh("任务不存在!");
// if (wmsTask.TaskStatus != TaskStatusEnum.ZANTING) throw Oops.Oh("只有暂停的任务才能继续任务!");
// wmsTask.TaskStatus = TaskStatusEnum.WEIZHIXING;
// await _wmsTaskRep.UpdateAsync(wmsTask);
// }
// }
// ///
// /// 获取出入库任务管理
// ///
// ///
// ///
// [HttpGet("detail")]
// public async Task Get([FromQuery] QueryeWmsTaskInput input)
// {
// return (await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt();
// }
// ///
// /// 获取出入库任务管理列表
// ///
// ///
// ///
// [HttpGet("list")]
// public async Task> List([FromQuery] TaskInput input)
// {
// return await _wmsTaskRep.DetachedEntities.ProjectToType().ToListAsync();
// }
// ///
// /// Excel模板导入出入库任务管理功能
// ///
// /// Excel模板文件
// /// Excel导入方式
// /// 导入的记录数
// [HttpPost("fromExcel")]
// public async Task FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
// {
// int size = 200;
// var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTask", "v2");
// if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
// var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty();
// for (var i = 0; i < keys.Length; i++)
// {
// keys[i] = keys[i]?.Trim() ?? string.Empty;
// }
// ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List headers, out List> data, out string sheetName);
// List wmsTaskList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary dict);
// List> uniqueKeyValueDictList = wmsTaskList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
// var filters = DataConvertUtil.GetExpressionListByUniqueDict(keys.ToList(), uniqueKeyValueDictList, size);
// var selectKeys = keys.ToList();
// if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
// var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict(selectKeys);
// List updates = new();
// List adds = new();
// lock (_lock)
// {
// foreach (var filter in filters)
// {
// var wmsTaskExistSubList = _wmsTaskRep.Where(filter).Select(selector).ToList();
// wmsTaskExistSubList.ForEach(x =>
// {
// var k = DataConvertUtil.GetKey(x, keys);
// if (dict.ContainsKey(k)) dict[k].Id = x.Id;
// });
// }
// foreach (var wmsTask in wmsTaskList)
// {
// if (wmsTask.Id > 0)
// {
// if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsTask.Adapt());
// }
// else
// {
// adds.Add(wmsTask.Adapt());
// }
// }
// if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsTaskRep.Update(x));
// var maxId = _wmsTaskRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
// adds.ForEach(x => x.Id = ++maxId);
// Db.GetDbContext().Set().AddRange(adds);
// Db.GetDbContext().SaveChanges();
// }
// await Task.CompletedTask;
// return adds.Count;
// }
// ///
// /// 根据版本下载出入库任务管理的Excel导入模板
// ///
// /// 模板版本
// /// 下载的模板文件
// [HttpGet("downloadExcelTemplate")]
// public async Task DownloadExcelTemplate([FromQuery] string version)
// {
// var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTask", version);
// if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
// var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
// Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
// var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}导入模板.xlsx", Encoding.GetEncoding("UTF-8"));
// return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
// }
// ///
// /// 根据出入库任务管理查询参数导出Excel
// ///
// /// 出入库任务管理(熟化库)查询参数
// /// 导出的Excel文件
// [HttpGet("toExcel")]
// public async Task ToExcelAsync([FromQuery] WmsTaskSearchNonPage input)
// {
// var wmsTaskList = await ListNonPageAsync(input);
// MemoryStream ms = new();
// DataConvertUtil.ToExcelData(wmsTaskList, _sysDictTypeRep, _sysDictDataRep, out List headers,
// out List> data, out string sheetName);
// var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTask", "v1");
// if (excelTemplate != null)
// {
// ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
// }
// else
// {
// ExcelUtil.ToExcel(headers, data, sheetName, ms);
// }
// ms.Position = 0;
// var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
// return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
// }
// }
//}