后端代码:// 添加新的接口方法用于获取工单统计数据

        // 添加新的接口方法用于获取工单统计数据
        [Route("GetWorkOrderStatistics"), HttpPost]
        public async Task<WebResponseContent> GetWorkOrderStatistics(DateTime? beginDate, DateTime? endDate)
        {
            try
            {
                // 构建查询SQL
                var sql = @"SELECT 
    wo.WorkOrderNo,
    po.OrderNumber AS  OrderID,
    p.ProcessName AS ProcessID,
    wo.ResponsiblePerson,
    wo.PlanQty,
    wo.CompletedQty,
    wo.Status,
    wo.PlannedStartTime,
    wo.PlannedEndTime,
    wo.ActualStartTime,
    wo.ActualEndTime,
    l.MaterialName
FROM mes_workorder wo
LEFT JOIN MES_ProductionOrder po ON wo.OrderID = po.OrderID
LEFT JOIN MES_Process p ON wo.ProcessID = p.ProcessID
lEFT JOIN MES_Bom_Main l ON po.bom_id = 	l.BomId
ORDER BY po.OrderNumber,wo.WorkOrderNo ASC ;
";

                // 添加日期筛选条件
                var parameters = new Dictionary<string, object>();

                if (beginDate.HasValue)
                {
                    sql += " AND PlannedStartTime >= @beginDate";
                    parameters.Add("beginDate", beginDate.Value.Date); // 从当天开始
                }

                if (endDate.HasValue)
                {
                    sql += " AND PlannedEndTime <= @endDate";
                    parameters.Add("endDate", endDate.Value.Date.AddDays(1).AddSeconds(-1)); // 到当天结束
                }

                // 执行查询
                var workOrders = await DBServerProvider.GetSqlDapper().QueryListAsync<dynamic>(sql, parameters);

                // 转换为所需格式
                var result = workOrders.Select(w =>
                {
                    var workOrderDict = (IDictionary<string, object>)w;
                    return new
                    {
                        WorkOrderNo = workOrderDict.ContainsKey("WorkOrderNo") ? workOrderDict["WorkOrderNo"]?.ToString() : null,
                        OrderID = workOrderDict.ContainsKey("OrderID") ? workOrderDict["OrderID"]?.ToString() : null,
                        ProcessID = workOrderDict.ContainsKey("ProcessID") ? workOrderDict["ProcessID"]?.ToString() : null,
                        ResponsiblePerson = workOrderDict.ContainsKey("ResponsiblePerson") ? workOrderDict["ResponsiblePerson"]?.ToString() : null,
                        PlanQty = workOrderDict.ContainsKey("PlanQty") && workOrderDict["PlanQty"] != null ? Convert.ToInt32(workOrderDict["PlanQty"]) : 0,
                        CompletedQty = workOrderDict.ContainsKey("CompletedQty") && workOrderDict["CompletedQty"] != null ? Convert.ToInt32(workOrderDict["CompletedQty"]) : 0,
                        Status = workOrderDict.ContainsKey("Status") ? workOrderDict["Status"]?.ToString() : null,
                        PlannedStartTime = workOrderDict.ContainsKey("PlannedStartTime") ? workOrderDict["PlannedStartTime"]?.ToString() : null,
                        PlannedEndTime = workOrderDict.ContainsKey("PlannedEndTime") ? workOrderDict["PlannedEndTime"]?.ToString() : null,
                        ActualStartTime = workOrderDict.ContainsKey("ActualStartTime") ? workOrderDict["ActualStartTime"]?.ToString() : null,
                        ActualEndTime = workOrderDict.ContainsKey("ActualEndTime") ? workOrderDict["ActualEndTime"]?.ToString() : null,
                        MaterialName = workOrderDict.ContainsKey("MaterialName") ? workOrderDict["MaterialName"]?.ToString() : null
                    };
                }).ToList();

                return WebResponseContent.Instance.OK("获取成功", result);
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error("获取工单数据失败:" + ex.Message);
            }
        }

  

posted @ 2026-05-22 16:24  舒然  阅读(30)  评论(0)    收藏  举报