1
yangpeixing
2026-04-01 73569b329e4ed2293a63e5a739d5fb0314fc4fd8
1

1
已修改6个文件
203 ■■■■ 文件已修改
WCS/WIDESEAWCS_Client/config/buttons.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Client/src/extension/taskinfo/task.js 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WCS/WIDESEAWCS_Client/config/buttons.js
@@ -173,6 +173,15 @@
    onClick: function () {
    }
},
{
    name: "任 务 手 动 完 成",
    icon: '',
    class: '',
    type: 'success',
    value: 'TaskHandCompleted',
    onClick: function () {
    }
},
]
export default buttons
WCS/WIDESEAWCS_Client/src/extension/taskinfo/task.js
@@ -45,53 +45,53 @@
            let AgvZHTaskResendBtn = this.buttons.find(x => x.value == 'AgvZHTaskResend');
            if (AgvZHTaskResendBtn) {
                AgvZHTaskResendBtn.onClick = function () {
                this.$confirm("是否确认重发阻焊AGV出库任务","手动任务重发警告",{
                    confirmButtonText: "确定",
                    cancelButtonText: "取消",
                    type: "warning",
                    center: true,
                    this.$confirm("是否确认重发阻焊AGV出库任务", "手动任务重发警告", {
                        confirmButtonText: "确定",
                        cancelButtonText: "取消",
                        type: "warning",
                        center: true,
                    }).then(() => {
                        let rows = this.$refs.table.getSelected();
                        if (rows.length == 0) return this.$error("请选择数据!");
                        if (rows.length > 1) return this.$error("请选择一条数据!");
                        var param = rows[0].taskNum;
                        this.http
                        .post("api/ZH_AGV/AgvZHTaskResend?taskNum="+param, "数据处理中...")
                        .then((x) => {
                            if (x.status) {
                            this.$Message.success('手动任务重发成功');
                            this.refresh();
                        } else {
                            return this.$error(x.message);
                        }
                        });
                            .post("api/ZH_AGV/AgvZHTaskResend?taskNum=" + param, "数据处理中...")
                            .then((x) => {
                                if (x.status) {
                                    this.$Message.success('手动任务重发成功');
                                    this.refresh();
                                } else {
                                    return this.$error(x.message);
                                }
                            });
                    });
                }
            }
            let StackerCraneTaskResendingBtn = this.buttons.find(x => x.value == 'StackerCraneTaskResending');
            if (StackerCraneTaskResendingBtn) {
                StackerCraneTaskResendingBtn.onClick = function () {
                this.$confirm("是否确认重发堆垛机任务","手动任务重发警告",{
                    confirmButtonText: "确定",
                    cancelButtonText: "取消",
                    type: "warning",
                    center: true,
                    this.$confirm("是否确认重发堆垛机任务", "手动任务重发警告", {
                        confirmButtonText: "确定",
                        cancelButtonText: "取消",
                        type: "warning",
                        center: true,
                    }).then(() => {
                        let rows = this.$refs.table.getSelected();
                        if (rows.length == 0) return this.$error("请选择数据!");
                        if (rows.length > 1) return this.$error("请选择一条数据!");
                        var param = rows[0].taskNum;
                        this.http
                        .post("api/Task/StackerCraneTaskResending?taskNum="+param, "数据处理中...")
                        .then((x) => {
                            if (x.status) {
                            this.$Message.success('手动任务重发成功');
                            this.refresh();
                        } else {
                            return this.$error(x.message);
                        }
                        });
                            .post("api/Task/StackerCraneTaskResending?taskNum=" + param, "数据处理中...")
                            .then((x) => {
                                if (x.status) {
                                    this.$Message.success('手动任务重发成功');
                                    this.refresh();
                                } else {
                                    return this.$error(x.message);
                                }
                            });
                    });
                }
            }
@@ -99,26 +99,26 @@
            let StackerCraneTaskPriorityBtn = this.buttons.find(x => x.value == 'StackerCraneTaskPriority');
            if (StackerCraneTaskPriorityBtn) {
                StackerCraneTaskPriorityBtn.onClick = function () {
                this.$confirm("是否优先执行该堆垛机任务","手动优先任务警告",{
                    confirmButtonText: "确定",
                    cancelButtonText: "取消",
                    type: "warning",
                    center: true,
                    this.$confirm("是否优先执行该堆垛机任务", "手动优先任务警告", {
                        confirmButtonText: "确定",
                        cancelButtonText: "取消",
                        type: "warning",
                        center: true,
                    }).then(() => {
                        let rows = this.$refs.table.getSelected();
                        if (rows.length == 0) return this.$error("请选择数据!");
                        if (rows.length > 1) return this.$error("请选择一条数据!");
                        var param = rows[0].taskNum;
                        this.http
                        .post("api/Task/StackerCraneTaskPriority?taskNum="+param, "数据处理中...")
                        .then((x) => {
                            if (x.status) {
                            this.$Message.success('手动优先任务成功');
                            this.refresh();
                        } else {
                            return this.$error(x.message);
                        }
                        });
                            .post("api/Task/StackerCraneTaskPriority?taskNum=" + param, "数据处理中...")
                            .then((x) => {
                                if (x.status) {
                                    this.$Message.success('手动优先任务成功');
                                    this.refresh();
                                } else {
                                    return this.$error(x.message);
                                }
                            });
                    });
                }
            }
@@ -126,26 +126,53 @@
            let RGVTaskResendingBtn = this.buttons.find(x => x.value == 'RGVTaskResending');
            if (RGVTaskResendingBtn) {
                RGVTaskResendingBtn.onClick = function () {
                this.$confirm("是否确认重发RGV任务","手动任务重发警告",{
                    confirmButtonText: "确定",
                    cancelButtonText: "取消",
                    type: "warning",
                    center: true,
                    this.$confirm("是否确认重发RGV任务", "手动任务重发警告", {
                        confirmButtonText: "确定",
                        cancelButtonText: "取消",
                        type: "warning",
                        center: true,
                    }).then(() => {
                        let rows = this.$refs.table.getSelected();
                        if (rows.length == 0) return this.$error("请选择数据!");
                        if (rows.length > 1) return this.$error("请选择一条数据!");
                        var param = rows[0].taskNum;
                        this.http
                        .post("api/Task/RGVTaskResending?taskNum="+param, "数据处理中...")
                        .then((x) => {
                            if (x.status) {
                            this.$Message.success('任务重发完成');
                            this.refresh();
                        } else {
                            return this.$error(x.message);
                        }
                        });
                            .post("api/Task/RGVTaskResending?taskNum=" + param, "数据处理中...")
                            .then((x) => {
                                if (x.status) {
                                    this.$Message.success('任务重发完成');
                                    this.refresh();
                                } else {
                                    return this.$error(x.message);
                                }
                            });
                    });
                }
            }
            let TaskHandCompletedBtn = this.buttons.find(x => x.value == 'TaskHandCompleted');
            if (TaskHandCompletedBtn) {
                TaskHandCompletedBtn.onClick = function () {
                    this.$confirm("是否确认完成任务", "手动任务完成警告", {
                        confirmButtonText: "确定",
                        cancelButtonText: "取消",
                        type: "warning",
                        center: true,
                    }).then(() => {
                        let rows = this.$refs.table.getSelected();
                        if (rows.length == 0) return this.$error("请选择数据!");
                        if (rows.length > 1) return this.$error("请选择一条数据!");
                        var param = rows[0].taskNum;
                        this.http
                            .post("api/Task/ManualTaskCompleted?taskNum=" + param, "数据处理中...")
                            .then((x) => {
                                if (x.status) {
                                    this.$Message.success('任务手动完成');
                                    this.refresh();
                                } else {
                                    return this.$error(x.message);
                                }
                            });
                    });
                }
            }
WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -311,5 +311,13 @@
        /// <param name="palletCode"></param>
        /// <returns></returns>
        WebResponseContent LedShowTask(string StationCode, string PalletCode, int TaskType);
        /// <summary>
        /// 任务手动完成
        /// </summary>
        /// <param name="taskNum"></param>
        /// <returns></returns>
        Task<WebResponseContent> ManualTaskCompleted(int taskNum);
    }
}
WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
@@ -120,6 +120,8 @@
        //        return WebResponseContent.Instance.Error(ex.Message);
        //    }
        //}
        [HttpPost, HttpGet, Route("RecWMSTaskCompleted"), AllowAnonymous]
        public WebResponseContent RecWMSTaskCompleted(int taskNum)
        {
@@ -180,5 +182,17 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// 任务手动完成
        /// </summary>
        /// <param name="taskNum"></param>
        /// <returns></returns>
        [HttpGet, HttpPost, Route("ManualTaskCompleted"), AllowAnonymous]
        public async Task<WebResponseContent> ManualTaskCompleted(int taskNum)
        {
            return await Service.ManualTaskCompleted(taskNum);
        }
    }
}
WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -1019,5 +1019,30 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// 任务手动完成
        /// </summary>
        /// <param name="taskNum"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public async Task<WebResponseContent> ManualTaskCompleted(int taskNum)
        {
            try
            {
                string url = "http://localhost:9290";
                if (string.IsNullOrEmpty(url))
                {
                    return await Task.FromResult(WebResponseContent.Instance.Error($"未找到WCSApi地址,请检查配置文件"));
                }
                string response = HttpHelper.Post($"{url}/api/Task/TaskCompleted?taskNum=" + taskNum,taskNum.ToString());
                return await Task.FromResult(JsonConvert.DeserializeObject<WebResponseContent>(response) ?? WebResponseContent.Instance.Error("返回错误"));
            }
            catch (Exception ex)
            {
                return await Task.FromResult(WebResponseContent.Instance.Error(ex.Message));
            }
        }
    }
}
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -2592,11 +2592,11 @@
        private void DWANDYSUpdateOutboundOrderDetails(Dt_StockInfo stockInfo, Dt_OutboundOrder inboundOrder, ref List<Dt_OutboundOrderDetail> inboundOrderDetails)
        {
            List<Dt_OutboundOrderDetail> newOutboundOrderDetails = inboundOrderDetails;
            int CompeletedNum = inboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count();
            foreach (var newOutboundOrderDetail in newOutboundOrderDetails)
            {
                string BatchNo = newOutboundOrderDetail.BatchNo;
                //inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BatchNo == stockInfo.Details.FirstOrDefault()?.BatchNo&&x.LPNNo==stockInfo.PalletCode);
                foreach (var item in stockInfo.Details)
                {
                    if (newOutboundOrderDetail == null) continue;
@@ -2610,15 +2610,17 @@
                        if (newOutboundOrderDetail.OverOutQuantity == newOutboundOrderDetail.OrderQuantity)
                        {
                            newOutboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
                            CompeletedNum++;
                        }
                        else if (newOutboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
                        {
                            newOutboundOrderDetail.OrderDetailStatus = OutboundStatusEnum.出库中.ObjToInt();
                            inboundOrder.OrderStatus = OutboundStatusEnum.出库中.ObjToInt();
                        }
                    }
                }
                if (newOutboundOrderDetails.All(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()))
                if (inboundOrder.Details.Count == CompeletedNum)
                {
                    inboundOrder.OrderStatus = OutboundStatusEnum.出库完成.ObjToInt();
                }