//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 }; // } // } //}