xiaojiao
3 小时以前 75d16a23d059439c7478f8d3f6372c29072ba84e
ÏîÄ¿´úÂë/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -15,6 +15,7 @@
using WIDESEAWCS_BasicInfoService;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.APIEnum;
using WIDESEAWCS_Common.StationEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
@@ -51,6 +52,8 @@
        private readonly ITask_HtyRepository _taskHtyRepository;
        private readonly IApiInfoRepository _apiInfoRepository;
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly IDt_MaterialInfo_HtyRepository _MaterialInfo_HtyRepository;
        private readonly IDt_MaterialInfoRepository _MaterialInfoRepository;
        private Dictionary<string, OrderByType> _taskOrderBy = new()
        {
@@ -69,7 +72,7 @@
        #endregion èŽ·å–æ‰€æœ‰ä»»åŠ¡ç±»åž‹ã€çŠ¶æ€
        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository, IApiInfoRepository apiInfoRepository,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository, IApiInfoRepository apiInfoRepository,IUnitOfWorkManage unitOfWorkManage, IDt_MaterialInfo_HtyRepository materialInfo_HtyRepository, IDt_MaterialInfoRepository materialInfoRepository) : base(BaseDal)
        {
            _routerService = routerService;
            _taskExecuteDetailService = taskExecuteDetailService;
@@ -82,6 +85,8 @@
            _taskHtyRepository = htyRepository;
            _apiInfoRepository = apiInfoRepository;
            _unitOfWorkManage = unitOfWorkManage;
            _MaterialInfo_HtyRepository = materialInfo_HtyRepository;
            _MaterialInfoRepository = materialInfoRepository;
        }
        /// <summary>
@@ -170,7 +175,7 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                var task = BaseDal.QueryFirst(x => x.TaskId == taskNum);
                if (task == null) return WebResponseContent.Instance.Error($"未找到该任务信息,任务号:【{taskNum}】");
                return UpdateTaskStatusToNext(task);
            }
@@ -192,26 +197,38 @@
            try
            {
                int oldState = task.TaskState;
                if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
                #region è‚–佼已修改
                //if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
                //{
                //    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAGVCarryStatusEnum>();
                //    task.TaskState = nextStatus;
                //    if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_COMPLETED)
                //    {
                //        BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.人工完成 : OperateTypeEnum.自动完成);
                //    }
                //}
                //else
                //{
                //    throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{task.TaskId}】,任务类型:【{task.TaskType}】");
                //}
                #endregion è‚–佼已修改
                int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAGVCarryStatusEnum>();
                task.TaskState = nextStatus;
                if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_COMPLETED)
                {
                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAGVCarryStatusEnum>();
                    task.TaskState = nextStatus;
                    if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_CarryFinish)
                    {
                        BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.人工完成 : OperateTypeEnum.自动完成);
                    }
                }
                else
                {
                    throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{task.TaskNum}】,任务类型:【{task.TaskType}】");
                    //BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.人工完成 : OperateTypeEnum.自动完成);
                    TaskCompleted(task.TaskId);
                }
                if (task.TaskState <= 0)
                {
                    return content = WebResponseContent.Instance.Error($"该任务状态不可跳转到下一步,任务号:【{task.TaskNum}】,任务状态:【{task.TaskState}】");
                    return content = WebResponseContent.Instance.Error($"该任务状态不可跳转到下一步,任务号:【{task.TaskId}】,任务状态:【{task.TaskState}】");
                }
                task.ModifyDate = DateTime.Now;
@@ -223,17 +240,17 @@
                #region æ›´æ–°ä»»åŠ¡çŠ¶æ€
                // èŽ·å–WMSip地址
                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
                var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTaskStatus)?.ConfigValue;
                if (wmsBase == null || updateTask == null)
                {
                    throw new InvalidOperationException("WMS IP æœªé…ç½®");
                }
                var wmsIpAddress = wmsBase + updateTask;
                //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
                //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTaskStatus)?.ConfigValue;
                //if (wmsBase == null || updateTask == null)
                //{
                //    throw new InvalidOperationException("WMS IP æœªé…ç½®");
                //}
                //var wmsIpAddress = wmsBase + updateTask;
                var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                //var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
                //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                #endregion æ›´æ–°ä»»åŠ¡çŠ¶æ€
@@ -297,7 +314,7 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                var task = BaseDal.QueryFirst(x => x.TaskId == taskNum);
                if (task == null) return WebResponseContent.Instance.Error($"未找到该任务信息,任务号:【{taskNum}】");
                int oldState = task.TaskState;
@@ -461,7 +478,32 @@
                    }
                    //任务完成逻辑
                    _unitOfWorkManage.BeginTran();
                    task.TaskState = (int)TaskAGVCarryStatusEnum.AGV_COMPLETED;
                    // æŠŠå½“前任务查出来 ç„¶åŽæ¯ä¸€ä¸ªå­—段赋值给历史任务 ç„¶åŽåˆ é™¤å½“前任务 æ·»åŠ ä¸€æ¡åŽ†å²ä»»åŠ¡ // ç„¶åŽæŠŠè¿™ä¸ªä»»åŠ¡çš„ç»ˆç‚¹çš„å¯¹åº”ç«™å°çš„çŠ¶æ€è®¾ç½®ä¸ºå¯ç”¨
                    Dt_Task_Hty dt_Task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                    dt_Task_Hty.TaskNum = task.TaskId;
                    Dt_StationManager dt_StationManager = _stationManagerRepository.QueryFirst(x => x.StationLocation == task.TargetAddress);// ç›®çš„位置
                    Dt_StationManager SourceAddress = _stationManagerRepository.QueryFirst(x => x.StationLocation == task.SourceAddress);// èµ·å§‹ä½ç½®
                    if(dt_StationManager == null) return content.Error($"任务{taskNum}的目的站台【{task.TargetAddress}】站台不存在");
                    if(SourceAddress == null) return content.Error($"任务{taskNum}的当前起始【{task.SourceAddress}】站台不存在");
                    dt_StationManager.StationStatus = ((int)StationEnum.Enable).ToString();
                    SourceAddress.StationStatus = ((int)StationEnum.Enable).ToString();
                    Dt_MaterialInfo dt_MaterialInfo =  _MaterialInfoRepository.QueryFirst(x => x.ContainerCode == task.PalletCode);
                    if (dt_MaterialInfo == null) return content.Error("查询不到相关数据 æˆ–者已经解绑!");
                    dt_MaterialInfo.IsBind = false;
                    Dt_MaterialInfo_Hty dt_MaterialInfo_Hty = _mapper.Map<Dt_MaterialInfo_Hty>(dt_MaterialInfo);
                    _MaterialInfo_HtyRepository.AddData(dt_MaterialInfo_Hty);
                    _MaterialInfoRepository.DeleteData(dt_MaterialInfo);
                    _taskHtyRepository.AddData(dt_Task_Hty);
                    BaseDal.DeleteData(task);
                    _stationManagerRepository.UpdateData(dt_StationManager);
                    _stationManagerRepository.UpdateData(SourceAddress);
                    _unitOfWorkManage.CommitTran();
                    content.OK("任务完成");