wangxinhui
2026-02-02 f501e1d11653b2500e032a0d3c255f62aac4b054
清理杂项文件
已重命名1个文件
已删除50个文件
已修改11个文件
5890 ■■■■■ 文件已修改
代码管理/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Common/WareHouseEnum/WarehouseEnum.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AGVBoxApplyPassDTO.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvCTUCancelDTO.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvCallbackBoxNoDTO.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvFinishDTO.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvFinishResponse.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvHoisterApplyDTO.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvPodBerthAndMatDTO.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvResponse.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvScheduleTaskDTO.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureApplyDTO.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureReplyDTO.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskDTO.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/MESResponse.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/RequestAGVArriveDTO.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_DTO/StackerCarneTaskDTO.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs 792 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Server/HostedService/WarehouseHostedService.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Server/Program.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_CLineCPHDBName.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_RgvCPDBName.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_CLineCPHDBName.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/GroundStationDBName.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/HoisterDBName.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/R_MDDBName.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/RetractDBName.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/TrussDBName.cs 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/W_MDDBName.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/ApartPlate.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/StackPlate.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/StackPlateDBName.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/StackPlateTaskCommand.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/伸缩货叉/RetractYSJob.cs 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/ConveyorLineJob_YL1ndFloor.cs 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC2.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC3.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/AGV_CPExtend.cs 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/AGV_CPJob.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPA.cs 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPB.cs 250 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPC.cs 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPD.cs 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPH.cs 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/RGVJob_CP.cs 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/StackerCraneJob_CP.cs 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/接驳台/CoveryorJobYL.cs 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/桁架/TrussCartonJob.cs 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WCSServices/WIDESEAWCS_Tasks/码垛/MDJob_CP.cs 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/项目整体计划/凤铝项目WMS和WCS软件 宽海进度表-20260130.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
@@ -16,148 +16,10 @@
        Outbound = 100,
        /// <summary>
        /// ç›˜ç‚¹å‡ºåº“
        /// </summary>
        [Description("盘点出库")]
        OutInventory = 110,
        /// <summary>
        /// åˆ†æ‹£å‡ºåº“
        /// </summary>
        [Description("分拣出库")]
        OutPick = 120,
        /// <summary>
        /// æˆå“ç©ºæ‰˜å‡ºåº“
        /// </summary>
        [Description("成品空托出库")]
        OutEmpty = 130,
        /// <summary>
        /// æˆå“å‡ºåº“
        /// </summary>
        [Description("成品出库")]
        OutProduct = 230,
        /// <summary>
        /// åŽŸæ–™è€åŽ‚å‡ºåº“
        /// </summary>
        [Description("原料老厂出库")]
        OldYLOutbound = 300,
        /// <summary>
        /// åŽŸæ–™å°åˆ·å‡ºåº“
        /// </summary>
        [Description("原料印刷出库")]
        PrintYLOutbound = 310,
        /// <summary>
        /// åŽŸæ–™çº¸è¢‹åˆ¶è¢‹ä¾›æ–™
        /// </summary>
        [Description("原料纸袋制袋供料")]
        PaperYLOutZDGL = 330,
        /// <summary>
        /// è¾…料无纺布出库
        /// </summary>
        [Description("辅料无纺布出库")]
        OutWFB = 350,
        /// <summary>
        /// äºŒæ¥¼çº¸ç®±ä¾›æ–™
        /// </summary>
        [Description("二楼纸箱供料")]
        OutCarton = 360,
        /// <summary>
        /// æ— çººå¸ƒæ·‹è†œå‡ºåº“
        /// </summary>
        [Description("无纺布淋膜出库")]
        OutWFBLM = 370,
        /// <summary>
        /// çº¸å¼ æ·‹è†œå‡ºåº“
        /// </summary>
        [Description("纸张淋膜出库")]
        OutPaperLM = 380,
        /// <summary>
        /// å†²åˆ‡åŒºå‡ºåº“
        /// </summary>
        [Description("冲切区出库")]
        OutChongQie = 390,
        /// <summary>
        /// æ¨¡åˆ‡åŒºå‡ºåº“
        /// </summary>
        [Description("模切区出库")]
        OutMoQie = 400,
        /// <summary>
        /// åˆ†åˆ‡åŒºå‡ºåº“
        /// </summary>
        [Description("分切区出库")]
        OutFenQie = 410,
        /// <summary>
        /// æ— çººå¸ƒåˆ¶è¢‹ä¾›æ–™
        /// </summary>
        [Description("无纺袋制袋供料")]
        OutWFBGL = 420,
        /// <summary>
        /// é‡‡è´­å…¥åº“
        /// </summary>
        [Description("采购入库")]
        Inbound = 510,
        /// <summary>
        /// ç›˜ç‚¹å…¥åº“
        /// </summary>
        [Description("盘点入库")]
        InInventory = 520,
        /// <summary>
        /// åˆ†æ‹£å…¥åº“
        /// </summary>
        [Description("分拣入库")]
        InPick = 530,
        /// <summary>
        /// æˆå“å…¥åº“
        /// </summary>
        [Description("成品入库")]
        InProduct = 610,
        /// <summary>
        /// æˆå“ç©ºæ‰˜å›žåº“
        /// </summary>
        [Description("成品空托回库")]
        EmptyProductBack = 630,
        /// <summary>
        /// åŽŸæ–™å°åˆ·åŠæˆå“å…¥åº“
        /// </summary>
        [Description("原料印刷半成品入库")]
        PrintYLInbound = 710,
        /// <summary>
        /// åŽŸæ–™å°åˆ·ä½™æ–™é€€åº“
        /// </summary>
        [Description("原料印刷余料退库")]
        PrintYLBackInbound = 720,
        /// <summary>
        /// åŽŸæ–™å°åˆ·ä½™æ–™é€€åº“
        /// </summary>
        [Description("原料纸袋余料退库")]
        PaperYLBackInbound = 730,
        /// <summary>
        /// åŽŸæ–™è€åŽ‚é€€åº“
        /// </summary>
        [Description("原料老厂退库")]
        PaperOldYLBackInbound = 740,
        /// <summary>
        /// å··é“内移库
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Common/WareHouseEnum/WarehouseEnum.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AGVBoxApplyPassDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvCTUCancelDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvCallbackBoxNoDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvFinishDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvFinishResponse.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvHoisterApplyDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvPodBerthAndMatDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvResponse.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvScheduleTaskDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureApplyDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureReplyDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/MESResponse.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/RequestAGVArriveDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_DTO/StackerCarneTaskDTO.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -29,7 +29,6 @@
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.Agv;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_Model.Models;
@@ -99,11 +98,6 @@
        //上传条码
        WebResponseContent MESBoxCodeNotice(string boxCode);
        /// <summary>
        /// åˆ¤æ–­å…è®¸æ”¾è´§
        /// </summary>
        /// <returns></returns>
        string MESAvgArriveNotice(RequestAGVArriveDTO requestAGVArriveDTO);
        /// <summary>
        /// å ç›˜æœºç”³è¯·ç©ºæ‰˜å…¥æˆå“åº“
@@ -205,31 +199,6 @@
        WebResponseContent RollbackTaskStatusToLast(int taskNum);
        /// <summary>
        /// å‘送AGV任务
        /// </summary>
        /// <param name="taskModel"></param>
        /// <returns></returns>
        WebResponseContent AgvSendTask(AgvTaskSendDTO taskModel, APIEnum SendTask = APIEnum.AgvSendTask);
        /// <summary>
        /// AGV确认完成接口(取放)
        /// </summary>
        /// <param name="agvFinishDTO"></param>
        /// <returns></returns>
        WebResponseContent AGVFinish(AgvFinishDTO agvFinishDTO);
        /// <summary>
        /// å®‰å…¨ä¿¡å·å›žå¤ WCS-AGV
        /// </summary>
        /// <param name="secureModel"></param>
        /// <returns></returns>
        WebResponseContent AgvSecureReply(AgvSecureReplyDTO secureReplyModel, APIEnum SecureReply = APIEnum.Agv_CSJSecureReply);
        /// <summary>
        /// AGV任务状态刷新
        /// </summary>
        /// <param name="agvUpdateModel"></param>
        /// <returns></returns>
        AgvResponseContent AgvUpdateTask(AgvUpdateDTO agvUpdateModel);
        /// <summary>
        /// æ›´æ–°ä»»åŠ¡ä¿¡æ¯åŠæ·»åŠ ä»»åŠ¡æ˜Žç»†è®°å½•
        /// </summary>
        /// <param name="task">任务原对象实例(未修改的数据对象)</param>
@@ -242,29 +211,9 @@
        void UpdateTask(Dt_Task task, TaskStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "", string roadwayNo = "", int heightType = 0);
        /// <summary>
        ///
        /// </summary>
        /// <param name="agvPodModel"></param>
        /// <param name="PodBerthAndMat"></param>
        /// <returns></returns>
        WebResponseContent AgvPodBerthAndMat(AgvPodBerthAndMatDTO agvPodModel, APIEnum PodBerthAndMat = APIEnum.Agv_CSJPodBerthAndMat);
        /// <summary>
        /// //判断移库货位任务是否已存在,如存在先执行
        /// </summary>
        Dt_Task QueryStackerExistTask(string PalletCode,string locationCode);
        /// <summary>
        /// AGV成品取放货通知
        /// </summary>
        WebResponseContent AgvBoxApplyPass(AGVBoxApplyPassDTO applyPassDTO, APIEnum SecureReply = APIEnum.AGV_CPBoxApplyPass);
        /// <summary>
        /// CTU取消任务
        /// </summary>
        /// <returns></returns>
        WebResponseContent AgvBoxApplyPass(AgvCTUCancelDTO applyPassDTO, APIEnum SecureReply = APIEnum.AGV_CTUCancelTask);
        /// <summary>
        /// é¢„调度指令
        /// </summary>
        WebResponseContent AgvPreScheduleTask(AgvScheduleTaskDTO scheduleTaskDTO, APIEnum ScheduleTask = APIEnum.AGV_CTUScheduleTaskTask);
        /// <summary>
        /// æŽ¥å—WMS手动完成任务
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
@@ -14,7 +14,6 @@
using WIDESEAWCS_Tasks;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using WIDESEAWCS_Tasks.DBNames;
using WIDESEAWCS_Tasks.StackPlateJob;
namespace WIDESEAWCS_WCSServer.Controllers.Task
{
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Server/HostedService/WarehouseHostedService.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Server/Program.cs
@@ -50,7 +50,6 @@
builder.Services.AddDbSetup();//Db å¯åŠ¨æœåŠ¡
builder.Services.AddScoped<QuartzJobCreateDataTabel>();
builder.Services.AddHostedService<WarehouseHostedService>();
builder.Services.AddHostedService<QuartzJobDataTableHostedService>();
builder.Services.AddWebSocketSetup();
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json
@@ -14,12 +14,7 @@
  //连接字符串
  //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
  //"ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=192.168.35.3;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=Sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=TESTWCSCP_WCS;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  "WMSConnectionStrings": "Data Source=.;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"WMSConnectionStrings": "Data Source=.;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"WMSConnectionStrings": "Data Source=10.30.4.92;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  "ConnectionString": "Data Source=.;Initial Catalog=WCS_FL;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //跨域
  "Cors": {
    "PolicyName": "CorsIpAccess", //策略名称
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs
@@ -124,58 +124,6 @@
                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
                if (task != null)
                {
                    //if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result))
                    //{
                    //    steps = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().Where(x => x <= (int)TaskOutStatusEnum.OutFinish).ToList();
                    //    foreach (var item in steps)
                    //    {
                    //        object obj;
                    //        FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString());
                    //        DescriptionAttribute? descriptionAttribute = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                    //        if (descriptionAttribute != null)
                    //        {
                    //            obj = new { title = item, description = descriptionAttribute.Description };
                    //        }
                    //        else
                    //        {
                    //            obj = new { title = item, description = ((TaskOutStatusEnum)item).ToString() };
                    //        }
                    //        list.Add(obj);
                    //    }
                    //}
                    //else if (!int.TryParse(Enum.Parse<TaskTypeEnum>(task.TaskType.ToString()).ToString(), out result))
                    //{
                    //    steps = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().Where(x => x <= (int)TaskInStatusEnum.InFinish).ToList();
                    //    foreach (var item in steps)
                    //    {
                    //        object obj;
                    //        FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString());
                    //        DescriptionAttribute? descriptionAttribute = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                    //        if (descriptionAttribute != null)
                    //        {
                    //            obj = new { title = item, description = descriptionAttribute.Description };
                    //        }
                    //        else
                    //        {
                    //            obj = new { title = item, description = ((TaskInStatusEnum)item).ToString() };
                    //        }
                    //        list.Add(obj);
                    //    }
                    //}
                    //else if (!int.TryParse(Enum.Parse<TaskRelocationTypeEnum>(task.TaskType.ToString()).ToString(), out result))
                    //{
                    //    //todo è°ƒç”¨WMS移库完成
                    //}
                    //else if (!int.TryParse(Enum.Parse<TaskOtherTypeEnum>(task.TaskType.ToString()).ToString(), out result))
                    //{
                    //}
                    //else
                    //{
                    //    throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{taskNum}】,任务类型:【{task.TaskType}】");
                    //}
                    active = steps.IndexOf(task.TaskState) + 1;
                }
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -485,18 +485,6 @@
            }
            return content;
        }
        /// <summary>
        /// åˆ¤æ–­å…è®¸æ”¾è´§
        /// </summary>
        /// <returns></returns>
        public string MESAvgArriveNotice(RequestAGVArriveDTO requestAGVArriveDTO)
        {
            Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.MESAvgArriveNotice.ToString());
            string response = Post(apiInfo.ApiAddress, JsonConvert.SerializeObject(requestAGVArriveDTO));
            return response;
        }
        public static string Post(string serviceAddress, string requestJson = "", string contentType = "application/json", Dictionary<string, string>? headers = null)
        {
            string result = string.Empty;
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs
@@ -71,208 +71,6 @@
            set { _barcode = value.Replace("\0", "").Replace("\\0", ""); }
        }
    }
    public class R_ConveyorLineCPInfo : DeviceCommand
    {
        /// <summary>
        /// å¿ƒè·³
        /// </summary>
        public short Heart { get; set; }
        /// <summary>
        /// é¢„ç•™
        /// </summary>
        public short Reserve { get; set; }
        /// <summary>
        /// çŠ¶æ€
        /// </summary>
        public short StatusPV { get; set; }
        /// <summary>
        /// å‘½ä»¤
        /// 0:无命令
        ///1:非就绪(不执行下发命令)
        ///2:取货站台工位就绪(有料)
        ///3:放货站台工位就绪(无料)
        ///4:放货站台工位就绪(有料)
        ///5:扫码工位就绪(已扫码,等待上位机下发任务及命令)
        ///6:任务工位就绪(上位机通过任务号读取托盘信息并下发任务)
        ///7:申请料框
        ///8:料框到位
        ///9:执行命令中
        ///10:空盘准备
        ///11:满盘准备
        /// </summary>
        public short Command { get; set; }
        /// <summary>
        /// ä»»åŠ¡å·
        /// </summary>
        public int TaskNo { get; set; }
        private string _barcode;
        /// <summary>
        /// æ‰˜ç›˜å·
        /// </summary>
        /// <summary>
        [DataLength(10)]
        public string PalletCode
        {
            get { return _barcode; }
            set { _barcode = value.Replace("\0", "").Replace("\\0", ""); }
        }
    }
    public class R_CLineCPHInfo : DeviceCommand
    {
        /// <summary>
        /// å·¥ä½å·
        /// </summary>
        public short R_ReadID { get; set; }
        /// <summary>
        /// å·¥ä½çŠ¶æ€
        /// 0:脱机<br/>
        /// 1:手动<br/>
        /// 2:自动<br/>
        /// 3:自动运行<br/>
        /// 4:故障<br/>
        /// </summary>
        public short R_State { get; set; }
        /// <summary>
        /// ä»»åŠ¡å·
        /// </summary>
        public int R_TaskNo { get; set; }
        /// <summary>
        /// ç›®çš„地址
        /// </summary>
        public short R_TargetAddress { get; set; }
        /// <summary>
        /// è¯·æ±‚信号
        /// 0:无<br/>
        /// 1:任务请求<br/>
        /// 2:请求结束<br/>
        /// 3:任务清除<br/>
        /// 4:清除结束<br/>
        /// </summary>
        public short R_Request { get; set; }
        private string _barcode;
        /// <summary>
        /// ç®±ç 
        /// </summary>
        [DataLength(30)]
        public string R_BoxCode
        {
            get { return _barcode; }
            set { _barcode = value.Replace("\0", "").Replace("\\0", ""); }
        }
    }
    public class R_RGVCPInfo : DeviceCommand
    {
        /// <summary>
        /// æ¨¡å¼<br/>
        /// 1手动<br/>
        /// 2ç»´ä¿®<br/>
        /// 3半自动<br/>
        /// 4自动<br/>
        /// 5联机自动<br/>
        /// </summary>
        public short Mode { get; set; }
        /// <summary>
        /// çŠ¶æ€<br/>
        /// 0空闲<br/>
        /// 1有任务<br/>
        /// </summary>
        public short State { get; set; }
        /// <summary>
        /// RGV接收任务号<br/>
        /// </summary>
        public int RgvTask { get; set; }
        /// <summary>
        /// RGV结束任务号<br/>
        /// </summary>
        public int RgvEndTask { get; set; }
        /// <summary>
        /// RGV上次任务号<br/>
        /// </summary>
        public int RgvLastTask { get; set; }
        /// <summary>
        /// ä»»åŠ¡çŠ¶æ€åé¦ˆ<br/>
        /// </summary>
        public short TaskDone { get; set; }
        /// <summary>
        /// å¿ƒè·³<br/>
        /// </summary>
        public short HeartBeat { get; set; }
    }
    /// <summary>
    /// æå‡æœºå†™å…¥
    /// </summary>
    public class W_HoisterInfo : DeviceCommand
    {
        /// <summary>
        /// æå‡æœºä»»åŠ¡å·
        /// </summary>
        public int W_HoisterTask { get; set; }
        /// <summary>
        /// æå‡æœºç›®çš„层
        /// </summary>
        public short W_HoisterTarget { get; set; }
        /// <summary>
        /// æå‡æœºæŽ¥é€è½¦
        /// </summary>
        public short W_HoisterType { get; set; }
        /// <summary>
        /// æå‡æœºå¼€å…³é—¨<br/>
        /// 1开门<br/>
        /// 2关门<br/>
        /// </summary>
        public short W_HoisterDoorStatus { get; set; }
    }
    /// <summary>
    /// æå‡æœºè¯»å–
    /// </summary>
    public class R_HoisterInfo : DeviceCommand
    {
        /// <summary>
        /// ç³»ç»ŸçŠ¶æ€<br/>
        /// 1半自动<br/>
        /// 2手动<br/>
        /// 3自动<br/>
        /// </summary>
        public short R_HoisterSysStatus { get; set; }
        /// <summary>
        /// è¿è¡ŒçŠ¶æ€<br/>
        /// 1无货待命<br/>
        /// 2移动中<br/>
        /// 3有货待命<br/>
        /// </summary>
        public short R_HoisterRunStatus { get; set; }
        /// <summary>
        /// å†™å…¥çŠ¶æ€<br/>
        /// 1可写<br/>
        /// 2写入成功<br/>
        /// 3写入非法<br/>
        /// </summary>
        public short R_HoisterRecStatus { get; set; }
        /// <summary>
        /// ä»»åŠ¡å·
        /// </summary>
        public int R_HoisterTask { get; set; }
        /// <summary>
        /// ç›®çš„层
        /// </summary>
        public short R_HoisterTarget { get; set; }
        /// <summary>
        /// å½“前层
        /// </summary>
        public short R_HoisterCurrent { get; set; }
        /// <summary>
        /// å½“前层门状态<br/>
        /// 1开门到位<br/>
        /// 2关门到位<br/>
        /// </summary>
        public short R_HoisterDoorStatus { get; set; }
        /// <summary>
        /// æœ‰æ— è½¦çŠ¶æ€<br/>
        /// 1有车<br/>
        /// 2无车<br/>
        /// </summary>
        public short R_HoisterLoadStatus { get; set; }
    }
    public class R_ConveyorLineYLInfo : DeviceCommand
    {
        /// <summary>
@@ -319,141 +117,6 @@
            set { _barcode = value.Replace("\0", "").Replace("\\0", ""); }
        }
    }
    public class W_RGVCPInfo : DeviceCommand
    {
        /// <summary>
        /// ä»»åŠ¡å·1<br/>
        /// </summary>
        public int WcsTask1 { get; set; }
        /// <summary>
        /// ä»»åŠ¡å·2<br/>
        /// </summary>
        public int WcsTask2 { get; set; }
        /// <summary>
        /// ä»»åŠ¡å·3<br/>
        /// </summary>
        public int WcsTask3 { get; set; }
        /// <summary>
        /// ä»»åŠ¡ç±»åž‹<br/>
        /// 1定位<br/>
        /// 2取货<br/>
        /// 3放货<br/>
        /// 4取放货<br/>
        /// </summary>
        public short TaskType { get; set; }
        /// <summary>
        /// æ‰§è¡Œå·¥ä½<br/>
        /// 1:1工位<br/>
        /// 2:2工位<br/>
        /// 3:3工位<br/>
        /// 4:12工位<br/>
        /// 5:13工位<br/>
        /// 6:23工位<br/>
        /// 7:123工位<br/>
        /// </summary>
        public short WorkStation { get; set; }
        /// <summary>
        /// å–货地址1<br/>
        /// </summary>
        public short Qu1 { get; set; }
        /// <summary>
        /// å–货地址2<br/>
        /// </summary>
        public short Qu2 { get; set; }
        /// <summary>
        /// å–货地址3<br/>
        /// </summary>
        public short Qu3 { get; set; }
        /// <summary>
        /// æ”¾è´§åœ°å€1<br/>
        /// </summary>
        public short Fang1 { get; set; }
        /// <summary>
        /// æ”¾è´§åœ°å€2<br/>
        /// </summary>
        public short Fang2 { get; set; }
        /// <summary>
        /// æ”¾è´§åœ°å€3<br/>
        /// </summary>
        public short Fang3 { get; set; }
        /// <summary>
        /// å¿ƒè·³<br/>
        /// </summary>
        public short HearBeat { get; set; }
        /// <summary>
        /// ä¸‹å‘/完成任务标识<br/>
        /// 1确认任务下发<br/>
        /// 2确认任务完成<br/>
        /// </summary>
        public short TaskReceivedDone { get; set; }
    }
    /// <summary>
    /// æŽ¥é©³å°æœ‰æ— è´§
    /// </summary>
    public class C_RequestTakeStatus
    {
        /// <summary>
        /// æœªç”³è¯·å–æ–™
        /// </summary>
        [BoolIndex(0)]
        public bool NoTakeRequest { get; set; }
        /// <summary>
        /// å·²ç”³è¯·å–æ–™
        /// </summary>
        [BoolIndex(1)]
        public bool OkTakeRequest { get; set; }
    }
    public class CoveryorInfo : DeviceCommand
    {
        /// <summary>
        /// æœ‰æ— è´§çŠ¶æ€
        /// </summary>
        public byte C_GoodsStatus { get; set; }
        /// <summary>
        /// æ•…障状态
        /// </summary>
        public short C_Error { get; set; }
        /// <summary>
        /// å…¥åº“申请放货
        /// </summary>
        public byte C_RequestPut { get; set; }
        /// <summary>
        /// å…¥åº“放货完成
        /// </summary>
        public byte C_PutFinish { get; set; }
        /// <summary>
        /// å…¥åº“允许放货
        /// </summary>
        public byte C_AllowFinish { get; set; }
        /// <summary>
        /// å‡ºåº“申请取货
        /// </summary>
        public byte C_RequestTake { get; set; }
        /// <summary>
        /// å‡ºåº“允许取货
        /// </summary>
        public byte C_AllowTake { get; set; }
        /// <summary>
        /// å‡ºåº“任务号
        /// </summary>
        public int C_OutTaskNum { get; set; }
        /// <summary>
        /// å‡ºåº“申请回应
        /// </summary>
        public byte C_OutResponse { get; set; }
        /// <summary>
        /// å‡ºåº“取料完成
        /// </summary>
        public byte C_TakeFinish { get; set; }
        /// <summary>
        /// å…¥åº“任务号
        /// </summary>
        public int C_InTaskNum { get; set; }
    }
    public class ConveyorLineTaskCommandWrite : DeviceCommand
    {
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_CLineCPHDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_RgvCPDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_CLineCPHDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/GroundStationDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/HoisterDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/R_MDDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/RetractDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/TrussDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/W_MDDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/ApartPlate.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/StackPlate.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/StackPlateDBName.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/StackPlateJob/StackPlateTaskCommand.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/ÉìËõ»õ²æ/RetractYSJob.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/Ô­ÁÏ¿â/ConveyorLineJob_YL1ndFloor.cs
@@ -70,158 +70,6 @@
                //获取所有协议的输送线站台
                List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList();
                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
                foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
                {
                    DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(WR_CLineYLDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
                    if (deviceProRead != null)
                    {
                        R_ConveyorLineYLInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineYLInfo>(deviceProRead.DeviceProAddress);
                        if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 86 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID)) //一楼来料称重站台允许入库申请
                        {
                            WebResponseContent content = _taskService.YLPurchaseBoxing(conveyorLineInfoRead.WR_TMID, weight: conveyorLineInfoRead.WR_Weight, thickness: conveyorLineInfoRead.WR_Height, wide: conveyorLineInfoRead.WR_Width);
                            if (content.Status)
                            {
                                device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode);
                                WriteInfo(item.StationCode, $"请求入库条码:{conveyorLineInfoRead.WR_TMID}");
                            }
                            else
                            {
                                WriteError(item.StationCode, $"请求入库失败:{content.Message}");
                            }
                        }
                        else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 86 && conveyorLineInfoRead.WR_Task <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID)) //一楼分配站台入库分配目标点(平台)
                        {
                            Dt_Task task = _taskRepository.QueryFirst(x => x.RfidCode == conveyorLineInfoRead.WR_TMID && x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.New.ObjToInt() && x.DeviceCode == device.DeviceCode);
                            if (task == null)
                            {
                                WebResponseContent content = _taskService.RequestYLWMSTaskSimple(conveyorLineInfoRead.WR_TMID, item.StationCode);
                                if (!content.Status)
                                {
                                    WriteError(item.StationCode, $"请求入库失败:{content.Message}");
                                }
                            }
                            else //发送任务
                            {
                                device.SetValue(WR_CLineYLDB.WR_Task, task.TaskNum, item.StationCode);
                                device.SetValue(WR_CLineYLDB.WR_ToHode, task.NextAddress, item.StationCode);
                                device.SetValue(WR_CLineYLDB.WR_Width, task.TaskLength, item.StationCode);
                                device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode);
                                _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
                                WriteInfo(item.StationCode, $"{conveyorLineInfoRead.Serialize()}");
                            }
                        }
                        else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 86 && conveyorLineInfoRead.WR_Task > 0) //一楼分配站台入库分配目标点(库内)
                        {
                            Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.WR_Task && x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.AGV_Finish.ObjToInt() && x.DeviceCode == device.DeviceCode);
                            //发送任务
                            if (task != null)
                            {
                                if (string.IsNullOrEmpty(task.Roadway) && string.IsNullOrEmpty(task.NextAddress))
                                {
                                    WebResponseContent content = _taskService.AssignYLRoadwayNo(task.PalletCode);
                                    if (!content.Status)
                                    {
                                        WriteError(item.StationCode, $"请求入库失败:{content.Message}");
                                    }
                                    string roadWay = content.Data.ToString();
                                    //获取路由配置
                                    List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.CurrentAddress == x.StartPosi && x.ChildPosiDeviceCode== roadWay);
                                    Dt_Router router = routers.FirstOrDefault();
                                    if (router == null)
                                    {
                                        WriteError(item.StationName, $"任务号:{task.TaskNum}未找到路由配置信息");
                                        return Task.CompletedTask;
                                    }
                                    task.Roadway = roadWay;
                                    task.NextAddress = router.NextPosi;
                                    _taskService.UpdateTask(task,TaskStatusEnum.AGV_Finish);
                                }
                                else
                                {
                                    device.SetValue(WR_CLineYLDB.WR_Task, task.TaskNum, item.StationCode);
                                    device.SetValue(WR_CLineYLDB.WR_ToHode, task.NextAddress, item.StationCode);
                                    device.SetValue(WR_CLineYLDB.WR_Width, task.TaskLength, item.StationCode);
                                    device.SetValue(WR_CLineYLDB.WR_TMID, task.PalletCode, item.StationCode);
                                    device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode);
                                    _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
                                    WriteInfo(item.StationCode, $"请求入库成功:{conveyorLineInfoRead.Serialize()}");
                                }
                            }
                        }
                        else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode > 0 && conveyorLineInfoRead.WR_Request == 86 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID) && conveyorLineInfoRead.WR_Task>0) //入库站台申请
                        {
                            Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.WR_Task && x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
                            if (task != null)
                            {
                                //分配货位
                                string? local = _taskService.RequestAssignLocation(task.TaskNum, task.Roadway);
                                if (!string.IsNullOrEmpty(local))
                                {
                                    device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode);
                                    task.CurrentAddress = item.StackerCraneStationCode;
                                    task.TargetAddress = local;
                                    task.NextAddress = local;
                                    task.DeviceCode = item.StackerCraneCode;
                                    _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute);
                                    WriteInfo(item.StationName, $"任务号:{task.TaskNum}进行堆垛机入库");
                                }
                                else
                                {
                                    WriteError(item.StationCode, $"请求入库货位失败");
                                }
                            }
                        }
                        else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 99 && conveyorLineInfoRead.WR_Task > 0) //出站台分配目标点
                        {
                            Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && x.TaskNum == conveyorLineInfoRead.WR_Task && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode);
                            if (task != null)
                            {
                                //发送目标点
                                device.SetValue(WR_CLineYLDB.WR_Task, task.TaskNum, item.StationCode);
                                device.SetValue(WR_CLineYLDB.WR_Width, task.TaskLength, item.StationCode);
                                device.SetValue(WR_CLineYLDB.WR_TMID, task.PalletCode, item.StationCode);
                                device.SetValue(WR_CLineYLDB.WR_ToHode, task.NextAddress, item.StationCode);
                                device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode);
                                if (task.TaskType==TaskTypeEnum.OutPick.ObjToInt())
                                {
                                    task.Roadway = task.TargetAddress;
                                    task.TargetAddress = "";
                                    task.TaskType=TaskTypeEnum.InPick.ObjToInt();
                                }
                                _taskService.UpdateTask(task,TaskStatusEnum.Line_Executing);
                                WriteInfo(item.StationCode, $"任务号:{task.TaskNum}出库至{task.NextAddress}");
                            }
                        }
                        else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_Task > 0 && conveyorLineInfoRead.WR_Request == 98) //一楼老厂出库口完成
                        {
                            Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.WR_Task &&  _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
                            if (task != null)
                            {
                                //任务回复
                                device.SetValue(WR_CLineYLDB.WR_Reresult, 98, item.StationCode);
                                _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing, deviceCode: "CL3_YL");
                                WriteInfo(item.StationCode, $"任务号:{task.TaskNum},RIFD{task.RfidCode}一楼出库至老厂房完成");
                            }
                        }
                        else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_Task <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID) && conveyorLineInfoRead.WR_Request == 98) //一楼老厂出库口完成
                        {
                            Dt_Task task = _taskRepository.QueryFirst(x => (x.RfidCode == conveyorLineInfoRead.WR_TMID || x.PalletCode== conveyorLineInfoRead.WR_TMID) && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
                            if (task != null)
                            {
                                //任务回复
                                device.SetValue(WR_CLineYLDB.WR_Reresult, 98, item.StationCode);
                                _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing, deviceCode: "CL3_YL");
                                WriteInfo(item.StationCode, $"任务号:{task.TaskNum},RIFD{task.RfidCode}一楼出库至老厂房完成");
                            }
                        }
                    }
                    else
                    {
                        WriteError(item.StationName, $"未找到设备子编号{item.StationCode}的协议信息");
                    }
                }
            }
            return Task.CompletedTask;
        }
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/Ô­ÁÏ¿â/StackerCraneJob_YLSC2.cs
@@ -96,7 +96,7 @@
            }
            catch (Exception ex)
            {
                WriteError(nameof(StackerCraneJob_CP), ex.Message, ex);
                WriteError(nameof(StackerCraneJob_YLSC2), ex.Message, ex);
            }
            return Task.CompletedTask;
        }
@@ -136,12 +136,7 @@
                            _taskService.UpdateTaskExceptionMessage(taskNum, $"输送线出库站点未配置,{task.NextAddress}");
                            return WebResponseContent.Instance.Error($"输送线出库站点未配置,{task.NextAddress}");
                        }
                        bool depth = false;
                        if (task.Grade>0 && task.TaskType==TaskTypeEnum.PrintYLOutbound.ObjToInt())
                        {
                            depth = true;
                        }
                        Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode && x.ChildPosi == stationManger.StationDeviceCode && (depth ? x.Depth == 2 :  true));
                        Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode && x.ChildPosi == stationManger.StationDeviceCode);
                        if (router == null)
                        {
                            _taskService.UpdateTaskExceptionMessage(taskNum, $"未找到路由信息,{task.NextAddress}");
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/Ô­ÁÏ¿â/StackerCraneJob_YLSC3.cs
@@ -120,7 +120,7 @@
            }
            catch (Exception ex)
            {
                WriteError(nameof(StackerCraneJob_CP), ex.Message, ex);
                WriteError(nameof(StackerCraneJob_YLSC3), ex.Message, ex);
            }
            return Task.CompletedTask;
        }
@@ -160,12 +160,7 @@
                            _taskService.UpdateTaskExceptionMessage(taskNum, $"输送线出库站点未配置,{task.NextAddress}");
                            return WebResponseContent.Instance.Error($"输送线出库站点未配置,{task.NextAddress}");
                        }
                        bool depth = false;
                        if (task.Grade > 0 && task.TaskType == TaskTypeEnum.PrintYLOutbound.ObjToInt())
                        {
                            depth = true;
                        }
                        Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode && x.ChildPosi == stationManger.StationDeviceCode && (depth ? x.Depth == 2 : true));
                        Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode && x.ChildPosi == stationManger.StationDeviceCode);
                        if (router == null)
                        {
                            _taskService.UpdateTaskExceptionMessage(taskNum, $"未找到路由信息,{task.NextAddress}");
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/AGV_CPExtend.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/AGV_CPJob.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPA.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPB.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPC.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPD.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPH.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/RGVJob_CP.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/StackerCraneJob_CP.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/½Ó²µÌ¨/CoveryorJobYL.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/èì¼Ü/TrussCartonJob.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WCSServices/WIDESEAWCS_Tasks/Âë¶â/MDJob_CP.cs
ÎļþÒÑɾ³ý
ÏîÄ¿×ÊÁÏ/ÏîÄ¿ÕûÌ弯»®/·ïÂÁÏîÄ¿WMSºÍWCSÈí¼þ ¿íº£½ø¶È±í-20260130.xlsx
Binary files differ