| | |
| | | { |
| | | var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>() |
| | | .FirstAsync(x => x.EquipmentName == task.Roadway); |
| | | var info = JsonConvert.DeserializeObject<EquipmentParameterInfo>(process.ProcessValue); |
| | | var info = JsonConvert.DeserializeObject<List<EquipmentParameterInfo>>(process.ProcessValue); |
| | | |
| | | var agingOutputDto = MapToAgingOutputDto(stock, info); |
| | | content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto); |
| | |
| | | } |
| | | } |
| | | |
| | | private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, EquipmentParameterInfo info) |
| | | private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, List<EquipmentParameterInfo> info) |
| | | { |
| | | return new AgingOutputDto |
| | | { |
| | |
| | | SlotNo = x.OrderNo.ToInt32(), |
| | | SerialNo = x.SerialNumber, |
| | | SerialNoResult = true, |
| | | ParameterInfo = new List<ParameterInfo> |
| | | { |
| | | new ParameterInfo |
| | | ParameterInfo = info.Select(x => new ParameterInfo() |
| | | { |
| | | LowerLomit = info.LowerControlLimit, |
| | | UpperLimit = info.UpperControlLimit, |
| | | ParameterResult = info.EquipmentAvailabilityFlag, |
| | | ParameterCode = info.ParameterCode, |
| | | ParameterDesc = info.Description, |
| | | TargetValue = info.TargetValue, |
| | | Value = info.TargetValue, |
| | | DefectCode = info.UOMCode |
| | | } |
| | | } |
| | | LowerLomit = x.LowerControlLimit, |
| | | UpperLimit = x.UpperControlLimit, |
| | | ParameterResult = x.EquipmentAvailabilityFlag, |
| | | ParameterCode = x.ParameterCode, |
| | | ParameterDesc = x.Description, |
| | | TargetValue = x.TargetValue, |
| | | Value = (DateTime.Now - stock.CreateDate).TotalMinutes.ToString(), |
| | | DefectCode = x.UOMCode |
| | | }).ToList() |
| | | }).ToList() |
| | | }; |
| | | } |
| | |
| | | #region 入库任务完成 |
| | | |
| | | /// <summary> |
| | | /// 入库任务完成 |
| | | /// </summary> |
| | | /// <param name="task">任务数据合集</param> |
| | | /// <returns>返回结果集</returns> |
| | | //public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task) |
| | | //{ |
| | | // WebResponseContent content = new WebResponseContent(); |
| | | // try |
| | | // { |
| | | // var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode); |
| | | // var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress); |
| | | |
| | | // locationInf.LocationStatus = (int)LocationEnum.InStock; |
| | | |
| | | // // 创建历史任务实例模型 |
| | | // var taskHty = CreateHistoricalTask(task); |
| | | |
| | | // // 创建库存实例模型 |
| | | // DtStockInfo stock; |
| | | // if (boxing == null) |
| | | // { |
| | | // // 空托盘 |
| | | |
| | | // stock = new DtStockInfo() |
| | | // { |
| | | // PalletCode = task.PalletCode, |
| | | // LocationCode = task.TargetAddress, |
| | | // CreateDate = DateTime.Now, |
| | | // Creater = "system", |
| | | // IsFull = boxing.IsFull, |
| | | // StockInfoDetails = new List<DtStockInfoDetail>() |
| | | // { |
| | | // new DtStockInfoDetail() |
| | | // { |
| | | // MaterielCode = "空托盘", |
| | | // Id = 0, |
| | | // } |
| | | // } |
| | | // }; |
| | | // } |
| | | // else |
| | | // { |
| | | // // 实盘 |
| | | // var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>(); |
| | | // // 创建库存实例模型 |
| | | // stock = new DtStockInfo() |
| | | // { |
| | | // PalletCode = task.PalletCode, |
| | | // LocationCode = task.TargetAddress, |
| | | // CreateDate = DateTime.Now, |
| | | // Creater = "system", |
| | | // IsFull = boxing.IsFull, |
| | | // StockInfoDetails = boxDetail, |
| | | // }; |
| | | |
| | | // AgingInputDto agingInputDto = new AgingInputDto() |
| | | // { |
| | | // SerialNos = boxing.BoxingInfoDetails |
| | | // .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo }) |
| | | // .ToList(), |
| | | // TrayBarcode = task.PalletCode, |
| | | // OpFlag = 1 |
| | | // }; |
| | | // var result = await _agingInOrOutInputService.GetOCVInputAsync(agingInputDto); |
| | | // stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime; |
| | | |
| | | // LogFactory.GetLog("任务完成").InfoFormat(true, "入库任务完成", $"货位地址:{task.TargetAddress},修改后货位数据:{locationInf}"); |
| | | |
| | | // } |
| | | |
| | | // // 执行数据库事务 |
| | | // bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId); |
| | | // if (isResult) |
| | | // content.OK("入库任务完成成功"); |
| | | // else |
| | | // content.Error("入库任务完成失败"); |
| | | // } |
| | | // catch (Exception err) |
| | | // { |
| | | // Console.WriteLine(err.Message.ToString()); |
| | | // } |
| | | // return content; |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// 完成入库任务 |
| | | /// </summary> |
| | | /// <param name="task">任务数据合集</param> |
| | |
| | | .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo }) |
| | | .ToList(), |
| | | TrayBarcode = task.PalletCode, |
| | | OpFlag = 1 |
| | | OpFlag = 1, |
| | | EquipmentCode = "ECH001-B", |
| | | Software = "WMS" |
| | | }; |
| | | var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result; |
| | | stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime; |
| | | var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()); |
| | | stock.Remark = respone.LinedProcessFeedbackTime; |
| | | |
| | | // 记录日志 |
| | | LogFactory.GetLog("任务完成").InfoFormat(true, "入库任务完成", $"货位地址:{task.TargetAddress},修改后货位数据:{locationInf}"); |
| | |
| | | |
| | | try |
| | | { |
| | | |
| | | // 调用BaseDal.QueryFirstAsync方法,查询任务 |
| | | var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode); |
| | | if (task != null) |
| | | { |
| | | content = await UpdateExistingTask(input, task); |
| | | if (task.TaskState == (int)TaskInStatusEnum.InNew) |
| | | { |
| | | // 创建WMS任务 |
| | | WMSTaskDTO taskDTO = new WMSTaskDTO() |
| | | { |
| | | TaskNum = task.TaskNum.Value, |
| | | Grade = 1, |
| | | PalletCode = task.PalletCode, |
| | | RoadWay = task.Roadway, |
| | | SourceAddress = task.SourceAddress, |
| | | TargetAddress = task.Roadway, |
| | | TaskState = task.TaskState.Value, |
| | | Id = 0, |
| | | TaskType = task.TaskType, |
| | | }; |
| | | return content.OK(data: taskDTO); |
| | | } |
| | | content = await UpdateExistingTask(input, task); |
| | | return content; |
| | | } |
| | | // 创建一个TrayCellsStatusDto对象,并赋值 |
| | |
| | | { |
| | | Software = "WMS", |
| | | TrayBarcode = input.PalletCode, |
| | | EquipmentCode = "ECH001-B" |
| | | EquipmentCode = "ECH001-B" |
| | | }; |
| | | |
| | | // 调用GetTrayCellStatusAsync方法,获取整盘电芯 |
| | |
| | | // 添加组盘信息 |
| | | // 将content.Data转换为ResultTrayCellsStatus对象 |
| | | var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString()); |
| | | if (result.SerialNos.Count <= 0) |
| | | return content.Error(result.MOMMessage); |
| | | var boxing = await CreateBoxingInfo(result, input.PalletCode); |
| | | |
| | | // 调用GetProcessApplyAsync方法,获取工艺路线 |
| | |
| | | var processResponse = await GetProcessResponseAsync(process, input.Position); |
| | | |
| | | // 如果task不为null,则调用UpdateExistingTask方法,更新任务;否则调用CreateNewTask方法,创建新任务 |
| | | content = task != null ? await UpdateExistingTask(input, task) : await CreateNewTask(processResponse, input); |
| | | content = task != null ? await UpdateExistingTask(input, task) : await CreateNewTask(input, processResponse); |
| | | if (content.Status) |
| | | { |
| | | var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); |
| | |
| | | |
| | | // 返回content |
| | | return content; |
| | | } |
| | | |
| | | public async Task<WebResponseContent> RequestTrayInTaskAsync(RequestTaskDto input) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | |
| | | // 调用BaseDal.QueryFirstAsync方法,查询任务 |
| | | var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode); |
| | | if (task != null && task.TaskState == (int)TaskInStatusEnum.InNew) |
| | | { |
| | | // 创建WMS任务 |
| | | WMSTaskDTO taskDTO = new WMSTaskDTO() |
| | | { |
| | | TaskNum = task.TaskNum.Value, |
| | | Grade = 1, |
| | | PalletCode = task.PalletCode, |
| | | RoadWay = task.Roadway, |
| | | SourceAddress = task.SourceAddress, |
| | | TargetAddress = task.Roadway, |
| | | TaskState = task.TaskState.Value, |
| | | Id = 0, |
| | | TaskType = task.TaskType, |
| | | }; |
| | | return content.OK(data: task); |
| | | } |
| | | |
| | | return await CreateNewTask(input, null, 1); |
| | | } |
| | | catch (Exception) |
| | | { |
| | | |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | // 获取托盘单元格状态 |
| | |
| | | // 创建一个ProcessApplyDto对象,并赋值 |
| | | return new ProcessApplyDto() |
| | | { |
| | | EquipmentCode = "ECH001-B", |
| | | Software = "WMS", |
| | | EquipmentCode = "ECH001-B", |
| | | Software = "WMS", |
| | | //WipOrderNo = result.BindCode, |
| | | SerialNos = content.SerialNos.Select(item => new SerialNos |
| | | { |
| | |
| | | |
| | | #endregion 请求任务入库 |
| | | |
| | | #region 请求出库 |
| | | |
| | | //public async Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCdoe,List<string> roadways) |
| | | //{ |
| | | // WebResponseContent content = new WebResponseContent(); |
| | | // try |
| | | // { |
| | | // // 1==实盘 2 ==空盘 |
| | | // if (tag == 1) |
| | | // { |
| | | // // 查询库存信息 |
| | | // DtStockInfo? stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == areaCdoe && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)).OrderBy(x => x.CreateDate).FirstOrDefault(); |
| | | // // 创建新任务实例 |
| | | // var task = new Dt_Task() |
| | | // { |
| | | // Grade = 1, |
| | | // Roadway = stockInfo.LocationInfo.RoadwayNo, |
| | | // TargetAddress = position, |
| | | // Dispatchertime = DateTime.Now, |
| | | // MaterialNo = "", |
| | | // NextAddress = position, |
| | | // OrderNo = null, |
| | | // PalletCode = stockInfo.PalletCode, |
| | | // SourceAddress = stockInfo.LocationCode, |
| | | // TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | // TaskType = (int)TaskOutboundTypeEnum.Outbound, |
| | | // TaskNum = await BaseDal.GetTaskNo(), |
| | | // Creater = "Systeam" |
| | | // }; |
| | | // var taskId = await BaseDal.AddDataAsync(task); |
| | | // bool isResult = taskId > 0; |
| | | // if (isResult) |
| | | // { |
| | | // WMSTaskDTO taskDTO = new WMSTaskDTO() |
| | | // { |
| | | // TaskNum = task.TaskNum.Value, |
| | | // Grade = 1, |
| | | // PalletCode = DateTime.Now.ToString("MMddHHmmss"), |
| | | // RoadWay = task.Roadway, |
| | | // SourceAddress = stockInfo.LocationCode, |
| | | // TargetAddress = task.Roadway, |
| | | // TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | // Id = 0, |
| | | // TaskType = (int)TaskOutboundTypeEnum.OutTray |
| | | // }; |
| | | // stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable; |
| | | // _locationRepository.UpdateData(stockInfo.LocationInfo); |
| | | // content.OK(data: taskDTO); |
| | | // } |
| | | // } |
| | | // else |
| | | // { |
| | | // var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == areaCdoe && x.StockInfoDetails.Any(z => z.MaterielCode == "空托盘") && roadways.Contains(x.LocationInfo.RoadwayNo)).OrderBy(x => x.CreateDate).FirstOrDefault(); |
| | | // // 创建新任务实例 |
| | | // var task = new Dt_Task |
| | | // { |
| | | // CurrentAddress = stockInfo.LocationCode, |
| | | // Grade = 1, |
| | | // Roadway = stockInfo.LocationInfo.RoadwayNo, |
| | | // TargetAddress = position, |
| | | // Dispatchertime = DateTime.Now, |
| | | // MaterialNo = "", |
| | | // NextAddress = position, |
| | | // OrderNo = null, |
| | | // PalletCode = stockInfo.PalletCode, |
| | | // SourceAddress = stockInfo.LocationCode, |
| | | // TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | // TaskType = (int)TaskOutboundTypeEnum.OutTray, |
| | | // TaskNum = await BaseDal.GetTaskNo(), |
| | | // Creater = "Systeam" |
| | | // }; |
| | | |
| | | // var taskId = await BaseDal.AddDataAsync(task); |
| | | // bool isResult = taskId > 0; |
| | | // if (isResult) |
| | | // { |
| | | // WMSTaskDTO taskDTO = new WMSTaskDTO() |
| | | // { |
| | | // TaskNum = task.TaskNum.Value, |
| | | // Grade = 1, |
| | | // PalletCode = DateTime.Now.ToString("MMddHHmmss"), |
| | | // RoadWay = task.Roadway, |
| | | // SourceAddress = stockInfo.LocationCode, |
| | | // TargetAddress = task.Roadway, |
| | | // TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | // Id = 0, |
| | | // TaskType = (int)TaskOutboundTypeEnum.OutTray |
| | | // }; |
| | | // content.OK(data: taskDTO); |
| | | // } |
| | | // } |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // throw; |
| | | // } |
| | | // return content; |
| | | //} |
| | | #region 请求出库(实盘&空盘) |
| | | |
| | | /// <summary> |
| | | /// 请求托盘任务 |
| | |
| | | /// <param name="areaCode">区域编码</param> |
| | | /// <param name="roadways">巷道编码集合</param> |
| | | /// <returns>返回结果集</returns> |
| | | public async Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCode, List<string> roadways) |
| | | public async Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> roadways) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | // 根据托盘类型查询库存信息 |
| | | DtStockInfo stockInfo = tag == 1 |
| | | DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound |
| | | ? QueryStockInfoForRealTray(areaCode, roadways) |
| | | : QueryStockInfoForEmptyTray(areaCode, roadways); |
| | | |
| | |
| | | |
| | | // 创建任务DTO |
| | | WMSTaskDTO taskDTO = CreateTaskDTO(task); |
| | | if (tag == 1) |
| | | //if (tag == 1) |
| | | { |
| | | // 更新库存位置状态为不可用 |
| | | stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable; |
| | |
| | | { |
| | | // 记录异常信息并抛出 |
| | | LogFactory.GetLog("请求托盘任务").Error(true, ex); |
| | | throw; |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | |
| | | /// </summary> |
| | | private DtStockInfo QueryStockInfoForRealTray(string areaCode, List<string> roadways) |
| | | { |
| | | return _stockInfoRepository.QueryData(x => x.AreaCode == areaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)) |
| | | return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)) |
| | | .Includes(x => x.LocationInfo) |
| | | .Includes(x => x.StockInfoDetails) |
| | | .OrderBy(x => x.CreateDate) |
| | | .FirstOrDefault(); |
| | | .First(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | private DtStockInfo QueryStockInfoForEmptyTray(string areaCode, List<string> roadways) |
| | | { |
| | | return _stockInfoRepository.QueryData(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "空托盘") && roadways.Contains(x.LocationInfo.RoadwayNo)) |
| | | return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "空托盘") && roadways.Contains(x.LocationInfo.RoadwayNo)) |
| | | .Includes(x => x.LocationInfo) |
| | | .Includes(x => x.StockInfoDetails) |
| | | .OrderBy(x => x.CreateDate) |
| | | .FirstOrDefault(); |
| | | .First(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | OrderNo = null, |
| | | PalletCode = stockInfo.PalletCode, |
| | | SourceAddress = stockInfo.LocationCode, |
| | | CurrentAddress = stockInfo.LocationCode, |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | TaskType = tag == 1 ? (int)TaskOutboundTypeEnum.Outbound : (int)TaskOutboundTypeEnum.OutTray, |
| | | TaskType = tag == (int)TaskOutboundTypeEnum.Outbound ? (int)TaskOutboundTypeEnum.Outbound : (int)TaskOutboundTypeEnum.OutTray, |
| | | TaskNum = BaseDal.GetTaskNo().Result, |
| | | Creater = "System" // 修正拼写错误 |
| | | }; |
| | |
| | | |
| | | #endregion 请求出库 |
| | | |
| | | #region 陈化请求出库 |
| | | #region 任务状态更改 |
| | | |
| | | // 陈化请求出库 |
| | | public async Task<WebResponseContent> OutTrayByCh(string position) |
| | | public async Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | var area = _areaInfoRepository.QueryFirst(x => x.AreaName == "陈化区"); |
| | | |
| | | // 查询库存信息 |
| | | var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == area.AreaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).OrderBy(x => x.CreateDate).FirstOrDefault(); |
| | | // 创建新任务实例 |
| | | var task = new Dt_Task() |
| | | { |
| | | Grade = 1, |
| | | Roadway = stockInfo.LocationInfo.RoadwayNo, |
| | | TargetAddress = position, |
| | | Dispatchertime = DateTime.Now, |
| | | MaterialNo = "", |
| | | NextAddress = position, |
| | | OrderNo = null, |
| | | PalletCode = stockInfo.PalletCode, |
| | | SourceAddress = stockInfo.LocationCode, |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | TaskType = (int)TaskOutboundTypeEnum.OutTray, |
| | | TaskNum = await BaseDal.GetTaskNo(), |
| | | Creater = "Systeam" |
| | | }; |
| | | var taskId = await BaseDal.AddDataAsync(task); |
| | | bool isResult = taskId > 0; |
| | | if (isResult) |
| | | { |
| | | WMSTaskDTO taskDTO = new WMSTaskDTO() |
| | | { |
| | | TaskNum = task.TaskNum.Value, |
| | | Grade = 1, |
| | | PalletCode = DateTime.Now.ToString("MMddHHmmss"), |
| | | RoadWay = task.Roadway, |
| | | SourceAddress = stockInfo.LocationCode, |
| | | TargetAddress = task.Roadway, |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | Id = 0, |
| | | TaskType = (int)TaskOutboundTypeEnum.OutTray |
| | | }; |
| | | stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable; |
| | | _locationRepository.UpdateData(stockInfo.LocationInfo); |
| | | content.OK(data: taskDTO); |
| | | } |
| | | var task = await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum); |
| | | if (task == null) |
| | | return content.Error("未找到任务"); |
| | | task.TaskState = taskState; |
| | | var asb = await BaseDal.UpdateDataAsync(task); |
| | | if (asb) |
| | | content.OK(); |
| | | else |
| | | content.Error(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw; |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | #endregion 陈化请求出库 |
| | | #endregion |
| | | |
| | | #endregion 外部接口方法 |
| | | |
| | |
| | | /// <param name="areaId">区域ID</param> |
| | | /// <param name="content">响应内容</param> |
| | | /// <returns></returns> |
| | | private async Task<WebResponseContent> CreateNewTask(List<Dt_EquipmentProcess> process, RequestTaskDto input) |
| | | private async Task<WebResponseContent> CreateNewTask(RequestTaskDto input, List<Dt_EquipmentProcess> process = null, int flag = 0) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | List<string> strings = process.Select(x => x.EquipmentName).ToList(); |
| | | List<string> strings = new List<string>(); |
| | | if (process != null) |
| | | { |
| | | strings = process.Select(x => x.EquipmentName).ToList(); |
| | | } |
| | | else |
| | | { |
| | | strings = input.Position.Split(',').ToList(); |
| | | } |
| | | // 获取目标地址 |
| | | string ToAddress = await GetRoadWayAsync(strings); |
| | | |
| | |
| | | PalletCode = input.PalletCode, |
| | | SourceAddress = input.Position, |
| | | TaskState = (int)TaskInStatusEnum.InNew, |
| | | TaskType = (int)TaskTypeEnum.Inbound, |
| | | TaskType = flag == 0 ? (int)TaskInboundTypeEnum.Inbound : (int)TaskInboundTypeEnum.InTray, |
| | | TaskNum = await BaseDal.GetTaskNo(), |
| | | Creater = "Systeam" |
| | | }; |
| | |
| | | { |
| | | var minGroup = _locationRepository.QueryData(x => process.Contains(x.RoadwayNo) && x.LocationStatus == (int)LocationEnum.Free) |
| | | .GroupBy(x => x.RoadwayNo) |
| | | .OrderByDescending(g => g.Count()) // 根据每个组的元素数量排序 |
| | | .First(); // 取出数量最多的组 |
| | | |
| | | string minRoadwayNo = minGroup.Key; // 数量最多的组的Key |
| | | |
| | | return minRoadwayNo; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取巷道或站台 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public async Task<string> GetRoadWayAsync(int areaCode) |
| | | { |
| | | var minGroup = _locationRepository.QueryData(x => x.AreaId == areaCode && x.LocationStatus == (int)LocationEnum.Free) |
| | | .GroupBy(x => x.RoadwayNo) |
| | | .OrderBy(g => g.Count()) // 根据每个组的元素数量排序 |
| | | .First(); // 取出数量最少的组 |
| | | |