using DBFactory; using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ControlSystem { public class CreateMonitor { static DBOperator dbo = CStaticClass.dbo; static CCommonFunction ccf = new CCommonFunction(); static int AutoManageIdx = 0; /// /// 手动任务 /// /// 起点 /// 终点 /// 类型 送出还是什么 public static void CreateMove(int startIndex,int endIndex,int type) { string dtime = DateTime.Now.ToString("u"); dtime = dtime.Substring(0, dtime.Length - 1); string qcell = string.Empty, scell = string.Empty; int hidx = 0; int hmindx = 0; int rehidx = 0; int z = startIndex, x = 0, y = 0, z1 = endIndex, x1 = 0, y1 = 0; //2 将取,3 将送,4 取货,5 送货 int devicekind = ccf.GetDeviceKindIdx(startIndex);//startIndex string useawayfork = "0"; int xx = x + 1; int xx1 = x1 + 1; int routeIDsub = GetRouteIDsub(startIndex); hidx = GetManageHandIdx(); hmindx = ccf.GetMonitorIndex(hidx, 4); string Sql = "insert into T_Monitor_Task(F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex,F_MonitorIndex," + "F_DeviceIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6,F_UseAwayFork) " + "values(" + routeIDsub + "," + hidx + ",4," + hmindx + "," + startIndex + "," + type + "," + z + "," + x + "," + y + "," + z1 + "," + x1 + "," + y1 + ",'" + useawayfork + "')";//6 DataSet ds = dbo.ExceSQL(Sql); dbo.ExceSQL("insert into T_Manage_Task(FID,F_ManageTaskKindIndex,F_RELATIVECONTORLID,FIntoStepOK,FSTARTDEVICE,FREMARK,FSTARTCELL,FENDDEVICE,FENDCELL,FBEGTIME) values(" + hidx + ",4,-1,1," + startIndex + ",'" + type + "','" + z.ToString() + "-" + x.ToString() + "-" + y.ToString() + "'," + startIndex + ",'" + z1.ToString() + "-" + x1.ToString() + "-" + y1.ToString() + "','" + dtime + "')"); if (rehidx > 0) { dbo.ExecuteSql("update T_Manage_Task set F_RELATIVECONTORLID=" + rehidx + " where F_ManageTaskKindIndex=4 and FID=" + hidx); dbo.ExecuteSql("update T_Manage_Task set F_RELATIVECONTORLID=" + hidx + " where F_ManageTaskKindIndex=4 and ID=" + rehidx); } RecordMaxHandTaskFID(hidx); } static int GetManageHandIdx() { DataSet ds = dbo.ExceSQL("SELECT F_ManageTaskKindIndex, max(FID) as mFID FROM T_Manage_Task Where F_ManageTaskKindIndex=4 group by F_ManageTaskKindIndex"); if (ds.Tables[0].DefaultView.Count > 0) { return (Convert.ToInt32(ds.Tables[0].DefaultView[0]["mFID"]) + 1); } else { DataSet dss = dbo.ExceSQL("SELECT F_ManageTaskIndex FROM T_Base_Manage_Task_Index_Hand_Task"); if (dss.Tables[0].DefaultView.Count > 0) { if ((Convert.ToInt32(dss.Tables[0].DefaultView[0]["F_ManageTaskIndex"]) + 1) >= 29998) { return 20001; } else { return (Convert.ToInt32(dss.Tables[0].DefaultView[0]["F_ManageTaskIndex"]) + 1); } } else { return 20001; } } } static void RecordMaxHandTaskFID(int fid) { DataSet ds = dbo.ExceSQL("select F_ManageTaskIndex from T_Base_Manage_Task_Index_Hand_Task"); DataView dv = ds.Tables[0].DefaultView; if (dv.Count > 0) { if (fid == 29998) { dbo.ExceSQL("UPDATE T_Base_Manage_Task_Index_Hand_Task SET F_ManageTaskIndex =20001"); return; } if (fid > Convert.ToInt32(dv[0]["F_ManageTaskIndex"])) { dbo.ExceSQL("UPDATE T_Base_Manage_Task_Index_Hand_Task SET F_ManageTaskIndex =" + fid); return; } } else { dbo.ExceSQL("INSERT INTO T_Base_Manage_Task_Index_Hand_Task (F_ManageTaskIndex)VALUES (" + fid + ")"); return; } } static int GetRouteIDsub(int device) { DataView dv = dbo.ExceSQL("SELECT F_RouteIDSub, F_DeviceIndex, F_RouteID FROM T_Base_Route_Device where F_DeviceIndex=" + device + "").Tables[0].DefaultView; if (dv.Count > 0) { return Convert.ToInt32(dv[0]["F_RouteIDSub"]); } else { return -1; } } /// /// 手动任务 -- 盘库 /// /// 堆垛机编号 /// 终点 货位号 03-01-01 /// 类型 送出还是什么 2将取 /// 管理任务的ID public static void CreateMoveInv(int startIndex, string endIndex, int type, int CONTROL_ID) { string dtime = DateTime.Now.ToString("u"); dtime = dtime.Substring(0, dtime.Length - 1); string qcell = string.Empty, scell = string.Empty; int hidx = 0; int hmindx = 0; int rehidx = 0; int z = 0, x = 0, y = 0, z1 = 0, x1 = 0, y1 = 0; char[] cc = new char[1] { '-' }; string[] sp = endIndex.Split(cc); if (type == 4) { z = Convert.ToInt32(sp[0]); x = Convert.ToInt32(sp[1]); y = Convert.ToInt32(sp[2]); } else if(type == 5) { z1 = Convert.ToInt32(sp[0]); x1 = Convert.ToInt32(sp[1]); y1 = Convert.ToInt32(sp[2]); } int taskType = type == 5 ? 1 : type == 4 ? 2 : 0; //2 将取,3 将送,4 取货,5 送货 int devicekind = ccf.GetDeviceKindIdx(startIndex);//startIndex string useawayfork = "0"; int xx = x + 1; int xx1 = x1 + 1; int routeIDsub = GetRouteIDsub(startIndex); hidx = GetManageHandIdx(); hmindx = ccf.GetMonitorIndex(hidx, 4); string Sql = "insert into T_Monitor_Task(F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex,F_MonitorIndex," + "F_DeviceIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6,F_UseAwayFork) " + "values(" + routeIDsub + "," + hidx + ",1," + hmindx + "," + startIndex + "," + type + "," + z + "," + x + "," + y + "," + z1 + "," + x1 + "," + y1 + ",'" + useawayfork + "')";//6 DataSet ds = dbo.ExceSQL(Sql); dbo.ExceSQL("insert into T_Manage_Task(FID,F_ManageTaskKindIndex,FMANAGEID,F_RELATIVECONTORLID,FCONTROLTASKTYPE,FIntoStepOK,FSTARTDEVICE,FREMARK,FSTARTCELL,FENDDEVICE,FENDCELL,FBEGTIME) values(" + hidx + ",1," + CONTROL_ID + ",-1," + taskType + ",1," + startIndex + ",'" + type + "','" + z.ToString() + "-" + x.ToString() + "-" + y.ToString() + "'," + startIndex + ",'" + z1.ToString() + "-" + x1.ToString() + "-" + y1.ToString() + "','" + dtime + "')"); if (rehidx > 0) { dbo.ExecuteSql("update T_Manage_Task set F_RELATIVECONTORLID=" + rehidx + " where F_ManageTaskKindIndex=4 and FID=" + hidx); dbo.ExecuteSql("update T_Manage_Task set F_RELATIVECONTORLID=" + hidx + " where F_ManageTaskKindIndex=4 and ID=" + rehidx); } RecordMaxHandTaskFID(hidx); } /// /// wcs 上报wms任务完成 /// public static async void WcsToManageTaskOver(int CONTROL_ID) { string apiUrl = "http://localhost:58926/api/ManageTask/WcsToManageTaskOver"; var requestData = new { CONTROL_ID = CONTROL_ID, DATA = new { } }; try { using ( HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoidGVzdHVzZXIiLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE3NDUyMjA2OTYsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTg5MjYvIiwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDo1ODkyNi9hcGkifQ.Qh08-vjkukreCtxVhRNZXEwKM77v1jK3sUzCe3nn_K4"); string json = JsonConvert.SerializeObject(requestData); var content = new StringContent(json, Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.PostAsync(apiUrl, content); string result = await response.Content.ReadAsStringAsync(); var apiResult = JsonConvert.DeserializeObject>(result); //MessageBox.Show($"状态: {apiResult.Status}, 代码: {apiResult.code}"); } } catch (Exception ex) { MessageBox.Show("请求失败: " + ex.Message); } } public class ApiResponse { public int Status { get; set; } public string msg { get; set; } public T data { get; set; } public string code { get; set; } } public static List DataSetToList(DataSet ds) where T : new() { var list = new List(); if (ds == null || ds.Tables.Count == 0) return list; DataTable dt = ds.Tables[0]; foreach (DataRow row in dt.Rows) { T obj = new T(); foreach (DataColumn col in dt.Columns) { PropertyInfo prop = typeof(T).GetProperty(col.ColumnName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); if (prop != null && row[col] != DBNull.Value) { if (Nullable.GetUnderlyingType(prop.PropertyType) != null) { prop.SetValue(obj, Convert.ChangeType(row[col], Nullable.GetUnderlyingType(prop.PropertyType))); } else { prop.SetValue(obj, Convert.ChangeType(row[col], prop.PropertyType)); } } } list.Add(obj); } return list; } public class PurchaseOrdersInv { public string CellNo { get; set; } } } }