using CentralControl.DBDAO; using CommonFunc; using CommonFunc.Tools; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using XGL.Models.Model.OrderPrepare; using XGL.Thrift; namespace XGL.Views { /// /// LanJu_Prepare.xaml 的交互逻辑 /// public partial class LanJu_Prepare : UserControl { public LanJu_Prepare() { InitializeComponent(); } List modelWareHouse = new List(); DBService userDbWareHouse = new DBService(); WorkOrder list_modelWareHouse = new WorkOrder(); string messageOrderCode = ""; DataTable dt; /// /// /// 获取主页显示订单 /// /// /// private void GetWorkOrder() { try { List wetList = new List(); //modelWareHouse = new List(); //userDbWareHouse = new DBService(); dt = userDbWareHouse.GetWetPlanInfo(); if (dt == null) return; foreach (DataRow i in dt.Rows) { WetMaterialModel wet = new WetMaterialModel(); wet.id = i["id"].ToString(); wet.workorder_id = i["workorder_id"].ToString(); wet.workorder_code = i["workorder_code"].ToString(); wet.product_name = i["product_name"].ToString(); wet.material_code = i["material_code"].ToString(); wet.material_name = i["material_name"].ToString(); wet.plan_time = Convert.ToDateTime(i["plan_time"].ToString()); wet.bucket_code = i["bucket_code"].ToString(); wet.shift_desc = i["shift_desc"].ToString(); wet.prod_line_code = i["prod_line_code"].ToString(); wet.status = i["status"].ToString(); wet.sync_flag = i["sync_flag"].ToString(); wet.processid = i["route_code"].ToString(); wetList.Add(wet); // list_modelWareHouse.WorkOrderCode = i["WorkOrderCode"].ToString(); // list_modelWareHouse.OrderCode = i["OrderCode"].ToString(); // list_modelWareHouse.ProductName = i["ProductName"].ToString(); // list_modelWareHouse.ProductSpc = i["ProductSpc"].ToString(); // list_modelWareHouse.QuantitySplit = i["QuantitySplit"].ToString(); // list_modelWareHouse.BatchCode = i["BatchCode"].ToString(); // modelWareHouse.Add(list_modelWareHouse); } this.WorkOrder.ItemsSource = null; this.WorkOrder.ItemsSource = wetList; } catch (Exception ex) { LogHelper.instance.log.Error("获取工单准备信息时发生异常:" + ex.Message); } } private T FindParent(DependencyObject child) where T : DependencyObject { DependencyObject parent = VisualTreeHelper.GetParent(child); if (parent is T) { return (T)parent; } if (parent != null) { return FindParent(parent); } return null; } private void UserControl_Loaded(object sender, RoutedEventArgs e) { GetWorkOrder(); } private async void btnStartOrders_Click(object sender, RoutedEventArgs e) { CheckUserWin checkUserWin = new CheckUserWin(); checkUserWin.ShowDialog(); if (!checkUserWin.loginFlag) { CustomMessageBox.Show("请先校验用户!", CustomMessageBoxIcon.Warning); return; } if (WorkOrder.SelectedItems.Count == 0) { CustomMessageBox.Show("请选择要开始的工单!", CustomMessageBoxIcon.Warning); return; } string orderID = (WorkOrder.SelectedItem as WetMaterialModel).id; string workorderID = (WorkOrder.SelectedItem as WetMaterialModel).workorder_id; string material = (WorkOrder.SelectedItem as WetMaterialModel).material_code; string sync_flag = (WorkOrder.SelectedItem as WetMaterialModel).sync_flag; string status = (WorkOrder.SelectedItem as WetMaterialModel).status; if (sync_flag.Equals("Y")) { CustomMessageBox.Show("该工单已同步,请选择其他的工单!", CustomMessageBoxIcon.Warning); return; } if (!status.Equals("w1")) { if (status != "") { CustomMessageBox.Show("该工单不符合条件,请选择其他的工单!", CustomMessageBoxIcon.Warning); return; } } //获取WMS齐套率,湿料计划先不用 //var wmsState = userDbWareHouse.GetWorkOrderQitaoLv(orderID); //if (wmsState == null || wmsState.Rows[0][0].Equals("0")) //{ // CustomMessageBox.Show("该工单未准备好,请稍后再试!", CustomMessageBoxIcon.Warning); // return; //} //获取湿料计划指定的成型机 //var cxjDt = userDbWareHouse.GetCXJList(orderID); //根据工单获取成型机 var cxjDt = userDbWareHouse.GetCXJList(workorderID); if (cxjDt == null || cxjDt.Rows.Count == 0) { CustomMessageBox.Show("该工单未指定料罐、成型机,请稍后再试!", CustomMessageBoxIcon.Warning); return; } List cxjList = new List(); List bucketList = new List(); //这扯淡的设计,根据湿料计划获取各个工单对应的工序、机台信息,这样式的,[["GX01","C1"],["GX01","C5"],["GX01","C3"],["GX01","C6"],["GX01","C8"],["GX02","H2"],["GX02","H3"],["GX02","H4"],["GX02","H5"],["GX02","H6"],["GX03","X3"],["GX03","X6"]] for (int i = 0; i < cxjDt.Rows.Count; i++) { string jsonStrCXJList = cxjDt.Rows[i][0].ToString(); string bucketNo = cxjDt.Rows[i][1].ToString(); bucketList.Add(bucketNo); // 解析JSON字符串为嵌套的列表结构 List> data = JsonConvert.DeserializeObject>>(jsonStrCXJList); // 输出嵌套列表的值 foreach (var innerList in data) { if (innerList[1].Contains("C")) { //记录成型机列表 cxjList.Add(innerList[1]); } } } cxjList = cxjList.Distinct().ToList();//去重 bucketList = bucketList.Distinct().ToList(); //var jsonObject = JsonConvert.DeserializeObject(jsonStrCXJList); string apiUrl = Utils.GetAppSetting("WCSMaterialSyncAddress")=="" ? "http://192.168.202.28:9001/api/v1/ReceiveMesMsg/materialPlanSync": Utils.GetAppSetting("WCSMaterialSyncAddress"); MaterialPlanModel materialPlanModel = new MaterialPlanModel(); List listWetMaterial = Utils.ToDataList(dt); List skuInfoList = new List(); materialPlanModel.reqCode = CommonFunc.Common.GetUUID(); materialPlanModel.reqTime = DateTime.Now.ToString(); materialPlanModel.factory = Utils.GetAppSetting("SiteCode"); materialPlanModel.planNo = workorderID; foreach (var item in bucketList) { skuInfo sku = new skuInfo(); sku.sku = material; sku.loadNo = item; List unloadNoInfoList = new List(); foreach (var buckt in cxjList) { unloadNoInfo unloadNoInfo = new unloadNoInfo(); unloadNoInfo.unloadNo = buckt; unloadNoInfoList.Add(unloadNoInfo); } sku.unLoadItems = unloadNoInfoList; skuInfoList.Add(sku); } materialPlanModel.data = skuInfoList; // 将要发送的数据序列化为JSON格式 var jsonContent = JsonConvert.SerializeObject(materialPlanModel); RestHelper restClient = new RestHelper(); var response = await restClient.PostAsync(apiUrl, jsonContent); //Console.WriteLine(response); //更新湿料计划同步状态 var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID); if (!updatestatus) LogHelper.instance.log.Info("更新湿料计划同步状态失败!"); else { GetWorkOrder(); } } private void Flow_Click(object sender, RoutedEventArgs e) { int index = 0; Button flowButton = (Button)sender; DataGridRow row = FindParent(flowButton); if (row != null) { // 获取对应行的数据项对象 var rowDataItem = row.Item; // 获取行号 index = row.GetIndex(); } var selectedRow = WorkOrder.Items[index] as WetMaterialModel; var workordercode = selectedRow.workorder_code; dt = userDbWareHouse.GetFlowInfo(workordercode); FlowInfoWin flowInfoWin = new FlowInfoWin(dt); flowInfoWin.ShowDialog(); } private void SOP_Click(object sender, RoutedEventArgs e) { int index = 0; Button sopButton = (Button)sender; DataGridRow row = FindParent(sopButton); if (row != null) { // 获取对应行的数据项对象 var rowDataItem = row.Item; // 获取行号 index = row.GetIndex(); } var selectedRow = WorkOrder.Items[index] as WetMaterialModel; var processid = selectedRow.processid; dt = userDbWareHouse.GetSOPInfo(processid); SopInfoWin sopInfoWin = new SopInfoWin(dt); sopInfoWin.ShowDialog(); } private void Material_Click(object sender, RoutedEventArgs e) { int index = 0; Button sopButton = (Button)sender; DataGridRow row = FindParent(sopButton); if (row != null) { // 获取对应行的数据项对象 var rowDataItem = row.Item; // 获取行号 index = row.GetIndex(); } var selectedRow = WorkOrder.Items[index] as WetMaterialModel; var processid = selectedRow.workorder_code; dt = userDbWareHouse.GetMaterialInfo(processid); LanJu_Material sopInfoWin = new LanJu_Material(dt); sopInfoWin.ShowDialog(); } private void btnRefresh_Click(object sender, RoutedEventArgs e) { GetWorkOrder(); } /// /// 增加序号 /// /// /// private void USERLIST_LoadingRow(object sender, DataGridRowEventArgs e) { e.Row.Header = (e.Row.GetIndex() + 1).ToString(); } } }