duyongjia
2024-12-19 fbfbc83d25477cf191e327e034ed996f0a2239d0
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -20,18 +20,24 @@
using Quartz;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_BasicInfoService;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_TaskInfoRepository;
using WIDESEAWCS_Tasks.ConveyorLineJob;
namespace WIDESEAWCS_Tasks
@@ -40,21 +46,23 @@
    public class CommonConveyorLineJob : IJob
    {
        private readonly ITaskService _taskService;
        private readonly ITaskRepository _taskRepository;
        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
        private readonly IRouterService _routerService;
        private readonly IMapper _mapper;
        public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper)
        public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper,ITaskRepository taskRepository)
        {
            _taskService = taskService;
            _taskExecuteDetailService = taskExecuteDetailService;
            _routerService = routerService;
            _mapper = mapper;
            _taskRepository = taskRepository;
        }
        public Task Execute(IJobExecutionContext context)
        {
            try
            {
                CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams");
@@ -91,6 +99,39 @@
                                _taskExecuteDetailService.AddTaskExecuteDetail(Intask.TaskId, $"输送线入库完成");
                            }
                        }
                        else//如果根据托盘条码查不到任务,则认为是空托盘,空托盘入库不需要组盘,直接新建任务
                        {
                            if (command.ISInFinish == 1)
                            {
                                //入库确认信号
                                conveyorLine.Communicator.Write<short>("DB800.6.0", 1);
                                Dt_Task task = new Dt_Task();
                                task.TaskNum= GetTaskNo();
                                task.PalletCode = command.CL1002Barcode;
                                task.TaskType =(int)TaskInboundTypeEnum.Inbound;
                                task.TaskState = (int)TaskInStatusEnum.Line_InFinish;
                                task.Roadway = "SC01";
                                task.SourceAddress = "R01-001-023-001";
                                //向WMS申请空货位
                                task.TargetAddress= WMSApiInvoke.GetAllLocationGroups(task.PalletCode);
                                _taskService.AddData(task);
                                Dt_Router dt_Router = new Dt_Router();
                                //临时记录下托盘和库位的绑定关系
                                dt_Router.StartPosi = task.TargetAddress;
                                dt_Router.NextPosi = task.PalletCode;
                                dt_Router.InOutType = RouterInOutType.Out;
                                dt_Router.ChildPosi = "1";
                                dt_Router.ChildPosiDeviceCode = "1";
                                dt_Router.IsEnd = true;
                                _routerService.AddData(dt_Router);
                                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"输送线入库执行中");
                                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"输送线入库完成");
                            }
                        }
                        Dt_Task Outtask = _taskService.QueryConveyorLineOutTask(command.Barcode);
                        if (Outtask != null)
@@ -126,6 +167,17 @@
            return Task.CompletedTask;
        }
        /// <summary>
        /// èŽ·å–ä»»åŠ¡ç¼–å·
        /// </summary>
        /// <returns></returns>
        public int GetTaskNo()
        {
            DataTable dt = _taskRepository.QueryTable("select next value for dbo.seqTaskNum");
            return int.Parse(dt.Rows[0][0].ToString());
        }
        /// <summary>
        /// è¾“送线请求入库
        /// </summary>