1
wanshenmean
2025-04-10 65b5b0ced6d04f773002908cb8c0720540f34907
1
已修改13个文件
已添加1个文件
455 ■■■■ 文件已修改
代码管理/NEWCode/WIDESEAWCS_PDA/common/http.interceptor.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_PDA/pages.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_PDA/pages/SetAddress/SetAddress.vue 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_PDA/pages/home/home.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_PDA/pages/叫料/正极叫料.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_PDA/pages/叫料/负极叫料.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_DTO/TaskInfo/CZTaskDto.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskCZService.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/PDA/PDAController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskCZService.cs 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_PDA/common/http.interceptor.js
@@ -16,7 +16,18 @@
        if (config.url.includes('http://') || config.url.includes('https://')) {
            config.baseURL = '';
        } else {
            config.baseURL = baseUrl;
            uni.getStorage({
                key: 'storage_key_ipAddress',
                success: (res) => {
                    debugger;
                    console.log(res.data.WCSIP);
                    config.baseURL = res.data.WCSIP;
                },
                fail: (err) => {
                    console.log("没有找到存储的IP地址,使用默认BaseURL")
                    config.baseURL = baseUrl;
                },
            });
        }
        config.header.Token = 'xxxxxx';
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_PDA/pages.json
@@ -39,6 +39,13 @@
                "enablePullDownRefresh": false
            }
        },
        {
            "path" : "pages/SetAddress/SetAddress",
            "style" :
            {
                "navigationBarTitleText" : "设置地址"
            }
        }
    ],
    "globalStyle": {
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_PDA/pages/SetAddress/SetAddress.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
<template>
    <view class="example">
        <u-form :model="valiFormData" ref="uForm" label-width="180" label-align="right">
            <u-form-item label="WCSIP:" prop="WCSIP">
                <u-input v-model="valiFormData.WCSIP" />
            </u-form-item>
            <u-form-item label="创智正极IP:" prop="CZZJip">
                <u-input v-model="valiFormData.CZZJip" />
            </u-form-item>
            <u-form-item label="创智负极IP:" prop="CZFJiP">
                <u-input v-model="valiFormData.CZFJiP" />
            </u-form-item>
        </u-form>
        <u-button @click="submit" type="success">提交</u-button>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                // æ ¡éªŒè¡¨å•数据
                valiFormData: {},
                rules: {
                    WCSIP: [{
                        required: true,
                        message: '请输入WCSIP',
                        // å¯ä»¥å•个或者同时写两个触发验证方式
                        trigger: ['change', 'blur'],
                    }, {
                        // è‡ªå®šä¹‰URL校验函数
                        validator: (rule, value, callback) => {
                            // ç®€å•çš„URL正则表达式,可根据需求调整
                            const urlPattern = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/;
                            if (value && !urlPattern.test(value)) {
                                callback(new Error('请输入有效的URL地址'));
                            } else {
                                callback();
                            }
                        },
                        trigger: ['change', 'blur']
                    }],
                    CZZJip: [{
                        required: true,
                        message: '请输入创智正极IP',
                        // å¯ä»¥å•个或者同时写两个触发验证方式
                        trigger: ['change', 'blur'],
                    }, {
                        // è‡ªå®šä¹‰URL校验函数
                        validator: (rule, value, callback) => {
                            // ç®€å•çš„URL正则表达式,可根据需求调整
                            const urlPattern = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/;
                            if (value && !urlPattern.test(value)) {
                                callback(new Error('请输入有效的URL地址'));
                            } else {
                                callback();
                            }
                        },
                        trigger: ['change', 'blur']
                    }],
                    CZFJiP: [{
                        required: true,
                        message: '请输入创智负极IP',
                        // å¯ä»¥å•个或者同时写两个触发验证方式
                        trigger: ['change', 'blur'],
                    }, {
                        // è‡ªå®šä¹‰URL校验函数
                        validator: (rule, value, callback) => {
                            // ç®€å•çš„URL正则表达式,可根据需求调整
                            const urlPattern = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/;
                            if (value && !urlPattern.test(value)) {
                                callback(new Error('请输入有效的URL地址'));
                            } else {
                                callback();
                            }
                        },
                        trigger: ['change', 'blur']
                    }]
                }
            };
        },
        methods: {
            submit() {
                this.$refs.uForm.validate().then(res => {
                    const ipAddress = {
                        WCSIP: this.valiFormData.WCSIP,
                        CZZJip: this.valiFormData.CZZJip,
                        CZFJiP: this.valiFormData.CZFJiP,
                    }
                    uni.setStorage({
                        key: 'storage_key_ipAddress',
                        data: ipAddress,
                        success: (res) => {
                            this.$t.message.toast('保存成功');
                            uni.switchTab({
                                url: '/pages/index/index'
                            })
                        }
                    });
                }).catch(errors => {
                    console.log('校验失败', errors)
                })
            },
            setModel() {
                uni.getStorage({
                    key: 'storage_key_ipAddress',
                    success: (res) => {
                        console.log(res.data.WCSIP);
                        this.valiFormData.WCSIP = res.data.WCSIP
                        this.valiFormData.CZZJip = res.data.CZZJip
                        this.valiFormData.CZFJiP = res.data.CZFJiP
                        this.valiFormData = res.data
                    },
                    fail: (err) => {
                        console.log("没有找到存储的IP地址,请重新输入")
                    },
                });
            }
        },
        // å¿…须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
        onReady() {
            this.$refs.uForm.setRules(this.rules);
            this.setModel();
        },
    }
</script>
<style lang="scss">
    .example {
        padding: 15px;
        background-color: #fff;
    }
</style>
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_PDA/pages/home/home.vue
@@ -2,7 +2,7 @@
    <view class="mine">
        <view class="tools">
            <uni-icons type="scan" size="48rpx" color="#292C39" @click="doScan"></uni-icons>
            <uni-icons type="gear-filled" size="48rpx" color="#292C39"></uni-icons>
            <uni-icons type="gear-filled" size="48rpx" color="#292C39" @click="goSetAddress"></uni-icons>
        </view>
        <view class="header">
            <view class="header-user">
@@ -189,6 +189,12 @@
                    }
                })
            }
            //跳转到SetAddress页面
            ,
            goSetAddress() {
                this.$u.route('/pages/SetAddress/SetAddress');
            },
        },
    };
</script>
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_PDA/pages/½ÐÁÏ/Õý¼«½ÐÁÏ.vue
@@ -146,6 +146,7 @@
                    OrderNo: orderNo,
                    Number: availableQuantity > 4 ? 4 : availableQuantity,
                    InputValue: inputValue,
                    TaskType: "正极"
                    // ...其他需要传递的参数
                };
                this.$u.post('/api/PDA/AddCZTask', formDataParam).then(res => {
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_PDA/pages/½ÐÁÏ/¸º¼«½ÐÁÏ.vue
@@ -92,22 +92,34 @@
                }
            },
            submit(cb) {
                this.$t.message.loading();
                let formDataParam = {
                    current: this.current,
                    size: this.size
                };
                // ä½¿ç”¨åˆ›æ™ºå®Œæ•´æŽ¥å£
                this.$u.post('/api/PDA/AGVPage', null).then(res => {
                    console.log(res);
                    this.$t.message.closeLoading();
                    cb && cb();
                    if (cb != null) this.listData = [];
                    this.listData = [...this.listData, ...res.data];
                    console.log(this.listData);
                }).catch((err) => {
                    this.$t.message.toast(err.message);
                uni.getStorage({
                    key: 'storage_key_ipAddress',
                    success: (res) => {
                        this.$t.message.loading();
                        let formDataParam = {
                            current: this.current,
                            size: this.size
                        };
                        // ä½¿ç”¨åˆ›æ™ºå®Œæ•´æŽ¥å£
                        this.$u.post(res.data.CZFJiP, null).then(res => {
                            console.log(res);
                            this.$t.message.closeLoading();
                            cb && cb();
                            if (cb != null) this.listData = [];
                            this.listData = [...this.listData, ...res.data];
                            console.log(this.listData);
                        }).catch((err) => {
                            this.$t.message.toast(err.message);
                        });
                    },
                    fail: (err) => {
                        this.$t.message.toast('请先设置IP地址');
                        uni.navigateTo({
                            url: '/pages/SetAddress/SetAddress',
                        });
                    },
                });
            },
            clickLoadMore(e) {
                this.status = 'loading';
@@ -146,9 +158,10 @@
                    OrderNo: orderNo,
                    Number: availableQuantity > 4 ? 4 : availableQuantity,
                    InputValue: inputValue,
                    TaskType: "负极"
                    // ...其他需要传递的参数
                };
                // ä½¿ç”¨åˆ›æ™ºå®Œæ•´æŽ¥å£
                this.$u.post('/api/PDA/insertTask', formDataParam).then(res => {
                    if (res.status) {
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_DTO/TaskInfo/CZTaskDto.cs
@@ -38,4 +38,32 @@
        /// </summary>
        public string TaskType { get; set; }
    }
}
    public class CZTaskFinshDto
    {
        /// <summary>
        /// ä»»åŠ¡ID
        /// </summary>
        public string TaskId { get; set; }
        /// <summary>
        /// äº§å“åž‹å·
        /// </summary>
        public string ProductCode { get; set; }
        /// <summary>
        /// å·¥å•号
        /// </summary>
        public string OrderNo { get; set; }
        /// <summary>
        /// æ•°é‡
        /// </summary>
        public int FinishNum { get; set; }
        /// <summary>
        /// å«æ–™æœºå°
        /// </summary>
        public string Tags { get; set; }
    }
}
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskCZService.cs
@@ -34,5 +34,13 @@
    public interface ITaskCZService : IService<DtCZTask>
    {
        public Task<WebResponseContent> AddTaskCZAsync(CZTaskDto dto);
        /// <summary>
        /// å®Œæˆä»»åŠ¡
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public Task<WebResponseContent> FinishTask(CZTaskFinshDto dto);
    }
}
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -182,5 +182,11 @@
        /// <param name="taskNum">任务号</param>
        /// <returns>返回处理结果</returns>
        WebResponseContent RollbackTaskStatusToLast(int taskNum);
        /// <summary>
        /// èŽ·å–ä»»åŠ¡å·
        /// </summary>
        /// <returns></returns>
        public int GetTaskNum();
    }
}
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/PDA/PDAController.cs
@@ -39,9 +39,9 @@
        }
        [HttpPost, Route("AddCZTask"), AllowAnonymous]
        public WebResponseContent AddCZTask([FromBody] CZTaskDto czTaskDto)
        public Task<WebResponseContent> AddCZTask([FromBody] CZTaskDto czTaskDto)
        {
            return WebResponseContent.Instance.OK();
            return _taskCZService.AddTaskCZAsync(czTaskDto);
        }
    }
}
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
@@ -6,6 +6,7 @@
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_TaskInfoService;
namespace WIDESEAWCS_WCSServer.Controllers.Task
{
@@ -14,11 +15,18 @@
    public class TaskController : ApiBaseController<ITaskService, Dt_Task>
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        public TaskController(ITaskService service, IHttpContextAccessor httpContextAccessor) : base(service)
        private readonly ITaskCZService _taskInfoService;
        public TaskController(ITaskService service, IHttpContextAccessor httpContextAccessor, ITaskCZService taskInfoService) : base(service)
        {
            _httpContextAccessor = httpContextAccessor;
            _taskInfoService = taskInfoService;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="taskDTOs"></param>
        /// <returns></returns>
        [HttpPost, Route("ReceiveTask"), AllowAnonymous]
        public WebResponseContent ReceiveWMSTask([FromBody] List<WMSTaskDTO> taskDTOs)
        {
@@ -48,5 +56,10 @@
        {
            return Service.RollbackTaskStatusToLast(taskNum);
        }
        public Task<WebResponseContent> FinishTask(CZTaskFinshDto taskFinshDto)
        {
            return _taskInfoService.FinishTask(taskFinshDto);
        }
    }
}
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskCZService.cs
@@ -1,4 +1,5 @@
#region << ç‰ˆ æœ¬ æ³¨ é‡Š >>
/*----------------------------------------------------------------
 * å‘½åç©ºé—´ï¼šWIDESEAWCS_TaskInfoService
 * åˆ›å»ºè€…:胡童庆
@@ -11,13 +12,11 @@
 * ä¿®æ”¹æ—¶é—´ï¼š
 * ç‰ˆæœ¬ï¼šV1.0.1
 * ä¿®æ”¹è¯´æ˜Žï¼š
 *
 *
 *----------------------------------------------------------------*/
#endregion << ç‰ˆ æœ¬ æ³¨ é‡Š >>
using AutoMapper;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
@@ -25,8 +24,6 @@
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Service;
namespace WIDESEAWCS_TaskInfoService
{
@@ -75,5 +72,55 @@
            }
            return Task.FromResult(response);
        }
        /// <summary>
        /// å®Œæˆä»»åŠ¡
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public Task<WebResponseContent> FinishTask(CZTaskFinshDto dto)
        {
            WebResponseContent response = new WebResponseContent();
            try
            {
                var czTask = BaseDal.QueryFirst(x => x.TaskTaskID == dto.TaskId);
                if (czTask == null)
                {
                    response.Error("任务不存在!");
                    return Task.FromResult(response);
                }
                if (dto.Tags.Contains("正极"))
                {
                    czTask.TaskZJFinishNumber += 1;
                }
                else
                {
                    czTask.TaskFJFinishNumber += 1;
                }
                if (czTask.TaskZJFinishNumber == czTask.TaskNumber || czTask.TaskFJFinishNumber == czTask.TaskNumber)
                {
                    czTask.TaskStatus = TaskInStatusEnum.InFinish.ToString();
                    czTask.TaskEndDate = DateTime.Now;
                }
                else
                {
                    czTask.TaskStatus = TaskInStatusEnum.Line_InExecuting.ToString();
                }
                var isTrue = BaseDal.UpdateData(czTask);
                if (isTrue)
                {
                    response.OK("任务完成成功!");
                }
                else
                {
                    response.Error("任务完成失败!");
                }
            }
            catch (Exception ex)
            {
                response.Error(ex.Message);
            }
            return Task.FromResult(response);
        }
    }
}
}
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -585,5 +585,20 @@
            }
            return content;
        }
        private readonly object _lockObj = new object();
        /// <summary>
        /// èŽ·å–ä»»åŠ¡å·
        /// </summary>
        /// <returns></returns>
        public int GetTaskNum()
        {
            int taskNum = 0;
            lock (_lockObj)
            {
                taskNum = Db.Ado.SqlQuerySingle<int>("select next value for dbo.GetTaskNum");
            }
            return taskNum;
        }
    }
}
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -24,8 +24,10 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
@@ -39,74 +41,105 @@
    public class CommonConveyorLineJob : JobBase, IJob, IDisposable
    {
        private readonly ITaskService _taskService;
        private readonly ITaskRepository _taskRepository;
        private readonly ITaskCZRepository _taskCZRepository;
        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, ITaskCZRepository taskCZRepository)
        {
            _taskService = taskService;
            _taskExecuteDetailService = taskExecuteDetailService;
            _routerService = routerService;
            _mapper = mapper;
            _taskRepository = taskRepository;
            _taskCZRepository = taskCZRepository;
        }
        public Task Execute(IJobExecutionContext context)
        {
            //Console.Out.WriteLine(DateTime.Now);
            try
            {
                // ä»Žä¸Šä¸‹æ–‡ä¸­èŽ·å– JobParams å¹¶è½¬æ¢ä¸º CommonConveyorLine ç±»åž‹
                CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams");
                if (conveyorLine != null)
                if (conveyorLine == null)
                {
                    short[] values = conveyorLine.Communicator.Read<short>("DB2.0", 20);
                    //bool result = conveyorLine.Communicator.Write("DB1.0", "AAABBB");
                    //string testVal = conveyorLine.Communicator.Read<string>("DB1.0");
                    List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode);
                    List<Task> tasks = new List<Task>();
                    foreach (string childDeviceCode in childDeviceCodes)
                    {
                        //Task task = Task.Run(() =>
                        //{
                        ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode);
                        if (command != null)
                        {
                            DeviceProtocolDetailDTO? deviceProtocolDetail = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.ProtocalDetailValue == command.InteractiveSignal.ToString() && x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal));
                            if (deviceProtocolDetail != null)
                            {
                                MethodInfo? method = GetType().GetMethod(deviceProtocolDetail.ProtocolDetailType);
                                if (method != null)
                                {
                                    method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode });
                                }
                                else
                                {
                                    //todo æœªæ‰¾åˆ°æ–¹æ³•æ—¶
                                }
                            }
                        }
                        //});
                        //tasks.Add(task);
                    }
                    Task.WaitAll(tasks.ToArray());
                    throw new Exception("JobParams ä¸åŒ…含 CommonConveyorLine ç±»åž‹å‚æ•°");
                }
                // å®šä¹‰çº¿ä½“实盘入库请求的地址和任务类型
                var requests = new Dictionary<string, string>
                {
                    { "DB1002.293.0", "ZJXL-WLX002" },
                    { "DB1002.1493.0", "FJXL-WLX002" }
                };
                foreach (var request in requests)
                {
                    var isDownRequest = conveyorLine.Communicator.Read<bool>(request.Key);
                    if (!isDownRequest)
                    {
                        continue;
                    }
                    string fromAdd = request.Value;
                    string taskType = request.Value.Contains("ZJXL") ? "正极" : "负极";
                    // æŸ¥è¯¢æ˜¯å¦å­˜åœ¨å·²ç”Ÿæˆçš„æ–°ä»»åŠ¡
                    var task = _taskRepository.QueryFirst(x => x.SourceAddress == fromAdd && x.TaskState == (int)TaskInStatusEnum.InNew);
                    if (task != null)
                    {
                        ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}下线请求入库,任务已生成存在,稍后重试......");
                        continue;
                    }
                    // æŸ¥è¯¢ä»»åŠ¡ç±»åž‹å¯¹åº”çš„czTask
                    DtCZTask czTask = _taskCZRepository.QueryFirst(x => x.TaskType == taskType);
                    if (czTask == null)
                    {
                        ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}下线请求入库,{taskType}任务不存在,稍后重试......");
                        continue;
                    }
                    // åˆ›å»ºæ–°çš„任务并添加到任务仓库
                    task = new Dt_Task()
                    {
                        TaskNum = _taskService.GetTaskNum(),
                        CreateDate = DateTime.Now,
                        Creater = "system",
                        CurrentAddress = fromAdd,
                        SourceAddress = fromAdd,
                        TaskState = (int)TaskInStatusEnum.InNew,
                        TaskType = (int)TaskInboundTypeEnum.Inbound,
                        Grade = 1,
                        PalletCode = czTask.TaskProductCode,
                        TargetAddress = czTask.TaskEndAddress,
                        Roadway = $"{taskType}AGV",
                        WMSId = czTask.Id,
                        Remark = czTask.TaskOrderNo
                    };
                    _taskRepository.AddData(task);
                    ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}下线请求入库,任务已生成,等待执行......");
                }
            }
            catch (Exception ex)
            {
                //Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
                // è®°å½•异常信息
                // Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
                ConsoleHelper.WriteErrorLine($"{nameof(CommonConveyorLineJob)}: å‘生异常 - {ex.Message}");
            }
            finally
            {
                // å†™è°ƒè¯•信息
                WriteDebug("CommonConveyorLineJob", "test");
                //Console.Out.WriteLine(DateTime.Now);
                // Console.Out.WriteLine(DateTime.Now);
            }
            return Task.CompletedTask;
        }
        /// <summary>
        /// è¾“送线请求入库
        /// </summary>