| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | using SqlSugar;using System.Collections.Generic;using System.Data;using System.Linq;using WCS.Entity.Protocol;using WCS_Client.Extensions;using WCS_AGVTask = WCS.Entity.Protocol.WCS_AGVTask;namespace WCS_Client.Workflow{    /// <summary>    /// 任务    /// </summary>    public class TaskWorkflow    {        /// <summary>        /// 为任务数据表新增列        /// </summary>        /// <param name="dataTable">数据源</param>        /// <param name="db">数据库链接</param>        public static void DataTableAddColumn(DataTable dataTable, SqlSugarClient db)        {            //新增列            string ADDRCURRENT = "ADDRCURRENT";            string ADDRline = "ADDRline";            dataTable.addDataColumn(new List<string> { ADDRCURRENT, ADDRline });            //获取当前所有任务对应的AGV任务            List<int> agvIDs = (from d in dataTable.AsEnumerable() select d.Field<int>("AgvTask")).Where(p => p > 0).ToList();            string ids = "";            agvIDs.ForEach(p =>            {                ids += p;                if (p != agvIDs[agvIDs.Count - 1]) ids += ",";            });            var _sql = $"select * from WCS_AGVTask where ID in ({(string.IsNullOrEmpty(ids) ? "''" : ids)})";            List<WCS_AGVTask> _AGVTASKs = db.SqlQueryable<WCS_AGVTask>(_sql).ToList();            //向新增列写入数据            for (int i = 0; i < dataTable.Rows.Count; i++)            {                //写入输送线                dataTable.Rows[i][ADDRCURRENT] = eqpData.deviceDataPack.StationDatas.Datas.Where(p => p.D521.Tasknum == (int)dataTable.Rows[i][1]).FirstOrDefault()?.Code;                //不在输送线,尝试写入RGV                if (string.IsNullOrEmpty(dataTable.Rows[i][ADDRCURRENT].ToString()))                {                    dataTable.Rows[i][ADDRCURRENT] = eqpData.deviceDataPack.RGVDatas.Datas.Where(p => (p.D521.TaskID_1 == (int)dataTable.Rows[i][1] && p.D521.Status_1.HasFlag(RGVStatus.光电))                                                                                                   || (p.D521.TaskID_2 == (int)dataTable.Rows[i][1] && p.D521.Status_2.HasFlag(RGVStatus.光电))).FirstOrDefault()?.Code;                }                //不在输送线/RGV,尝试写入堆垛机                if (string.IsNullOrEmpty(dataTable.Rows[i][ADDRCURRENT].ToString()))                {                    dataTable.Rows[i][ADDRCURRENT] = eqpData.deviceDataPack.SCDatas.Datas.Where(p => p.D521.TaskID_1 == (int)dataTable.Rows[i][1] || p.D521.TaskID_2 == (int)dataTable.Rows[i][1]).FirstOrDefault()?.Code;                }                //开始写入产线                dataTable.Rows[i][ADDRline] = _AGVTASKs.Where(p => p.ID == (int)dataTable.Rows[i]["AgvTask"]).FirstOrDefault()?.Position;                dataTable.AcceptChanges();            }        }    }}
 |