Example #1
0
        /// <summary>
        /// 同步任务
        /// </summary>
        public static void SynTask()
        {
            ErrorBll.LogInfo("开始同步生成Task任务", $"任务同步完成!");
            // 执行存储过程进行排班
            string sql = $@"P_Task_SYN";

            DAL.ProcedureParameter[] para = new DAL.ProcedureParameter[] {
                new DAL.ProcedureParameter("@Status", 0, SqlDbType.Int, 8, ParameterDirection.Output),
                new DAL.ProcedureParameter("@Msg", "", SqlDbType.VarChar, 50, ParameterDirection.Output)
            };

            para[0].Direction = ParameterDirection.Output;
            para[1].Direction = ParameterDirection.Output;

            try
            {
                sqlser.Execute(sql, para, true);

                var result = para[0].Value == null ? -1 : para[0].Value.GetInt();
                if (result == 0)
                {
                    ErrorBll.LogInfo("同步Task任务", $"任务同步完成!");
                }
                else
                {
                    ErrorBll.LogInfo("同步Task任务", $"任务同步失败!");
                }
            }
            catch (Exception ex)
            {
                ErrorBll.LogError($"同步Task任务异常", ex);
            }
        }
Example #2
0
        /// <summary>
        /// 插入buildplan数据
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public static bool InsertBulidPlanData(BuildPlanInfo item)
        {
            string sql = $@" INSERT INTO [dbo].[EKS_T_BulidPlanData]
                               ([ID],[BuildPlanID] ,[Workcell],[Bay],[Station],[Model]
                               ,[BuildPlan],[Shift],[ShiftDate],[StartTime] ,[EndTime],[UPH])
                         VALUES
                               (@ID,@BuildPlanID,@Workcell,@Bay,@Station,@Model,
                                @BuildPlan,@Shift,@ShiftDate,@StartTime,@EndTime,@UPH)";

            DAL.ProcedureParameter[] para = new DAL.ProcedureParameter[] {
                new DAL.ProcedureParameter("@ID", item.ID),
                new DAL.ProcedureParameter("@BuildPlanID", item.BuildPlanID),
                new DAL.ProcedureParameter("@Workcell", item.Workcell),
                new DAL.ProcedureParameter("@Bay", item.Bay),
                new DAL.ProcedureParameter("@Station", item.Station),
                new DAL.ProcedureParameter("@Model", item.Model),
                new DAL.ProcedureParameter("@BuildPlan", item.BuildPlan),
                new DAL.ProcedureParameter("@Shift", item.Shift),
                new DAL.ProcedureParameter("@ShiftDate", item.ShiftDate),
                new DAL.ProcedureParameter("@StartTime", item.StartTime),
                new DAL.ProcedureParameter("@EndTime", item.EndTime),
                new DAL.ProcedureParameter("@UPH", item.UPH),
            };

            try
            {
                return(sqlser.Execute(sql, para) > 0);
            }
            catch (Exception ex)
            {
                ErrorBll.LogError("同步buildplan数据时,插入buildplan数据异常!", ex);
                return(false);
            }
        }
Example #3
0
        /// <summary>
        /// bulidplan 数据转换为task
        /// </summary>
        public static void ExecuteBuildPlanData2Task()
        {
            object locko = new object();

            lock (locko)
            {
                ErrorBll.LogInfo("开始同步BuildPlan数据", "开始同步BuildPlan数据");
                //抓取数据
                List <BuildPlanInfo> list = GetSynBulidPlanData(DateTime.Now.AddDays(-3).Date, DateTime.Now.AddDays(1).Date);
                if (list.Count == 0)
                {
                    return;
                }

                //
                ClearBulidPlanData();

                int allCount     = list.Count;
                int successCount = 0;
                foreach (var it in list)
                {
                    if (InsertBulidPlanData(it))
                    {
                        successCount++;
                    }
                }

                ErrorBll.LogInfo("插入BulidPlan数据到本地数据库", $"总记录数:[{allCount}],成功数:[{successCount}]");
                //先计算CostTime
                UpdateBuildPlanCostTime();

                //先计算时间,分别计算出
                var dates = GetDistinctBulidPlanDate();
                foreach (var date in dates)
                {
                    var types = GetDistinctBulidPlanShiftType(date);
                    foreach (var type in types)
                    {
                        var workcells = GetDistinctBulidPlanWorkcell(date, type);
                        foreach (var wc in workcells)
                        {
                            var bays = GetDistinctBulidPlanBays(date, type, wc);
                            foreach (var bay in bays)
                            {
                                // 执行存储过程进行排班
                                string sql = $@"P_BuildPlanShiftType2Task";

                                DAL.ProcedureParameter[] para = new DAL.ProcedureParameter[] {
                                    new DAL.ProcedureParameter("@shiftdate", date),
                                    new DAL.ProcedureParameter("@shift", type),
                                    new DAL.ProcedureParameter("@workcell", wc),
                                    new DAL.ProcedureParameter("@bay", bay),
                                    new DAL.ProcedureParameter("@Status", -1, SqlDbType.Int, 8, ParameterDirection.Output),
                                    new DAL.ProcedureParameter("@Msg", "", SqlDbType.VarChar, 50, ParameterDirection.Output)
                                };

                                para[4].Direction = ParameterDirection.Output;
                                para[5].Direction = ParameterDirection.Output;

                                try
                                {
                                    sqlser.Execute(sql, para, true);

                                    var result = para[4].Value == null ? -1 : para[4].Value.GetInt();
                                    if (result == 0)
                                    {
                                        ErrorBll.LogInfo("计算单个生产计划的开始生产时间", $"[{date.ToString("yyyy-MM-dd")}] 班次:[{type}] workcell:[{wc}] bay:[{bay}] 当前班次的所有生产计划的具体生产时间成功!");
                                    }
                                    else
                                    {
                                        ErrorBll.LogInfo("计算单个生产计划的开始生产时间", $"[{date.ToString("yyyy-MM-dd")}] 班次:[{type}] workcell:[{wc}] bay:[{bay}] 当前班次的所有生产计划的具体生产时间失败,[{para[5].Value}]");
                                    }
                                }
                                catch (Exception ex)
                                {
                                    ErrorBll.LogError($"计算单个生产计划的开始生产时间 [{date.ToString("yyyy-MM-dd")}] 班次:[{type}] workcell:[{wc}] bay:[{bay}] 当前班次的所有生产计划的具体生产时间失败,[{para[5].Value}]", ex);
                                }
                            }
                        }
                    }
                }

                //正式创建Task
                SynTask();
            }
        }