#region << 版 本 注 释 >> /*---------------------------------------------------------------- * 命名空间:WIDESEA_TaskInfoService * 创建者:胡童庆 * 创建时间:2024/8/2 16:13:36 * 版本:V1.0.0 * 描述: * * ---------------------------------------------------------------- * 修改人: * 修改时间: * 版本:V1.0.1 * 修改说明: * *----------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using Autofac.Core; using AutoMapper; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; using WIDESEA_Common.LocationEnum; using WIDESEA_Common.StockEnum; using WIDESEA_Common.TaskEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_DTO.Task; using WIDESEA_IBasicService; using WIDESEA_IInboundService; using WIDESEA_IOutboundService; using WIDESEA_IRecordService; using WIDESEA_IStockService; using WIDESEA_ITaskInfoService; using WIDESEA_Model.Models; namespace WIDESEA_TaskInfoService { public partial class TaskService : ServiceBase>, ITaskService { private readonly IMapper _mapper; private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly IRepository _stockRepository; private readonly IRepository _warehouseRepository; private readonly IRepository _locationInfoRepository; private readonly IRepository _roadwayInforepository; private readonly IBasicService _basicService; public IRepository Repository => BaseDal; private Dictionary _taskOrderBy = new() { {nameof(Dt_Task.Grade),OrderByType.Desc }, {nameof(Dt_Task.CreateDate),OrderByType.Asc}, }; public List TaskTypes => typeof(TaskTypeEnum).GetEnumIndexList(); public List TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList(); public TaskService(IRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository stockRepository, IBasicService basicService, IRepository warehouseRepository, IRepository locationInfoRepository, IRepository roadwayInforepository) : base(BaseDal) { _mapper = mapper; _unitOfWorkManage = unitOfWorkManage; _stockRepository = stockRepository; _basicService = basicService; _warehouseRepository = warehouseRepository; _locationInfoRepository = locationInfoRepository; _roadwayInforepository = roadwayInforepository; } /// /// 任务信息推送至WCS /// /// public WebResponseContent PushTasksToWCS(List tasks, string agvDescription = "") { try { List taskDTOs = _mapper.Map>(tasks); taskDTOs.ForEach(x => { x.AGVArea = agvDescription; }); string url = AppSettings.Get("WCSApiAddress"); if (string.IsNullOrEmpty(url)) { return WebResponseContent.Instance.Error($"未找到WCSApi地址,请检查配置文件"); } string response = HttpHelper.Post($"{url}/api/Task/ReceiveTask", taskDTOs.Serialize()); return JsonConvert.DeserializeObject(response) ?? WebResponseContent.Instance.Error("返回错误"); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } /// /// 入库任务完成 /// /// /// public WebResponseContent InboundTaskCompleted(int taskNum) { try { Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); if (task == null) { return WebResponseContent.Instance.Error($"未找到该任务信息"); } Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId); Dt_StockInfo stockInfo = _stockRepository.Db.Queryable().Where(x => x.PalletCode == task.PalletCode && x.WarehouseId == task.WarehouseId).Includes(x => x.Details).First(); if (stockInfo == null) { return WebResponseContent.Instance.Error($"未找到托盘对应的组盘信息"); } //if (!string.IsNullOrEmpty(stockInfo.LocationCode)) //{ // return WebResponseContent.Instance.Error($"该托盘已绑定货位"); //} Dt_LocationInfo dt_LocationInfo = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress); if (dt_LocationInfo == null) { return WebResponseContent.Instance.Error("未找到库位"); } dt_LocationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt(); stockInfo.StockStatus = StockStatusEmun.入库完成.ObjToInt(); _unitOfWorkManage.BeginTran(); //修改货位状态为有货 _locationInfoRepository.UpdateData(dt_LocationInfo); //修改库存状态 _stockRepository.UpdateData(stockInfo); //删除任务添加历史 BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.人工完成 : OperateTypeEnum.自动完成); _unitOfWorkManage.CommitTran(); } catch (Exception) { _unitOfWorkManage.RollbackTran(); throw; } return WebResponseContent.Instance.OK(); } } }