From 223dae62a21bd877436839faf1f5ba3a0d92e668 Mon Sep 17 00:00:00 2001 From: zhaojian Date: Wed, 26 Jun 2024 16:03:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A6=96=E6=A3=80=E8=AE=B0?= =?UTF-8?q?=E5=BD=95,=E4=BF=AE=E6=94=B9=E6=89=93=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shangjian/.vs/BL/v17/HierarchyCache.v1.txt | Bin 156595 -> 141684 bytes .../FinishProdDBService.cs | 19 +- shangjian/XGL.Model/Model/sys_user.cs | 4 + shangjian/XGL/App.config | 2 +- shangjian/XGL/Views/LanJu_Prepare.xaml | 4 +- shangjian/XGL/Views/LanJu_Prepare.xaml.cs | 250 +++++++++--------- shangjian/XGL/config/ConnectionConfig.Config | 11 +- .../obj/x86/Debug/Views/LanJu_Prepare.g.cs | 19 +- .../obj/x86/Debug/Views/LanJu_Prepare.g.i.cs | 19 +- shangjian/XGLFinishPro/Tools/ShiftConvert.cs | 48 ++++ .../Views/ExecReportWorkWin.xaml.cs | 20 +- .../XGLFinishPro/Views/LanJu_Operator.xaml | 20 +- .../XGLFinishPro/Views/LanJu_Operator.xaml.cs | 60 ++--- shangjian/XGLFinishPro/Views/LanJu_User.xaml | 4 +- .../XGLFinishPro/Views/LanJu_User.xaml.cs | 24 +- .../XGLFinishPro/Views/LanJu_UserRecord.xaml | 5 +- .../XGLFinishPro/Views/PieceSalaryCalWin.xaml | 1 + .../Views/PieceSalaryCalWin.xaml.cs | 23 +- .../XGLFinishPro/Views/firstInspection.xaml | 78 ++++++ .../Views/firstInspection.xaml.cs | 57 ++++ shangjian/XGLFinishPro/XGLFinishPro.csproj | 8 + 21 files changed, 475 insertions(+), 201 deletions(-) create mode 100644 shangjian/XGLFinishPro/Tools/ShiftConvert.cs create mode 100644 shangjian/XGLFinishPro/Views/firstInspection.xaml create mode 100644 shangjian/XGLFinishPro/Views/firstInspection.xaml.cs diff --git a/shangjian/.vs/BL/v17/HierarchyCache.v1.txt b/shangjian/.vs/BL/v17/HierarchyCache.v1.txt index 9541633e49aac8020f4929ef3852030f08bb940d..5509f6a81157184500ea0ce1338cd9fe623c93c2 100644 GIT binary patch literal 141684 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'{v} 00:00:00' AND bat.update_time< '{v} 23:59:59') AND ordee.workorder_name='{work}' AND ordee.product_date='{v}' ORDER BY bat.update_time "; + DataSet dtset = Utils.netClientDBHelper.getDataSet(sql); + if (dtset != null && dtset.Tables.Count > 0 && dtset.Tables[0].Rows.Count > 0) + { + return dtset.Tables[0]; + } + return null; + } + public DataTable GetCompleteHistoryList(string deviceCode) { string sql = $@"select @@ -604,12 +615,12 @@ select a.TrayCode,a.ProductBarNo,a.carcode,a.createtime,a.lineno,b.HadNumber { string sql = $@"select workorder.factory_code,workorder.product_date as plan_time, workorder.workorder_id,workorder.workorder_code, product_code,product_name, product_spc,shifts.shift_desc,prod_line_code,workorder.status,route_code,quantity_split, -unit,workorder.shift_id ,batch.batch_code,batch.batch_quantity,sort_no, workorder.parent_order,batch.qc_status,isnull(batch.qc_result,'') qc_result,batch.status as batchStatus,workorder_code_sap,salary_flag,qty.batchQty,batch.batch_quantity - qty.batchQty as diffQty, chack.create_time, +workorder.unit,workorder.shift_id ,batch.batch_code,batch.batch_quantity,sort_no, workorder.parent_order,batch.qc_status,isnull(batch.qc_result,'') qc_result,batch.status as batchStatus,workorder_code_sap,salary_flag,qty.batchQty,batch.batch_quantity - qty.batchQty as diffQty, chack.create_time, chack.check_status from pro_order_workorder workorder WITH (NOLOCK) left JOIN base_shifts_t shifts WITH (NOLOCK) on workorder.shift_id = shifts.shift_id -LEFT JOIN (SELECT create_time,check_status,order_no FROM qc_check_task WHERE check_type='checkTypeCP' ) chack ON workorder.workorder_code = chack.order_no left JOIN pro_order_workorder_batch batch WITH (NOLOCK) on workorder.workorder_id = batch.workorder_id +LEFT JOIN ( SELECT * FROM qc_check_task WHERE check_type='checkTypeCPPC' ) chack ON batch.batch_code = chack.income_batch_no left join (SELECT sum(quantity_feedback) as batchQty,workorder_code,batch FROM [dbo].[mes_report_work] where del_flag = 0 GROUP BY workorder_code,batch) qty on qty.workorder_code = workorder.workorder_code and batch.batch_code = qty.batch where 1=1 and batch.del_flag = 0 and workorder.del_flag = 0 and workorder.parent_order ='0' and CONVERT(VARCHAR(10), workorder.product_date , 120)= CONVERT(VARCHAR(10), '{date}' , 120) and workorder.prod_line_code like '%{deviceCode}%' order by sort_no,batch_code"; @@ -720,7 +731,7 @@ where line_code = '{deviceCode}' and CONVERT(VARCHAR(10), Create_time , 120) = C /// /// /// - public string GetCreateUnitPriceInfo(sys_user item,string workorderCode, string sapWorkorderCode,string productCode,string productName,string childProcessCode,string childProcessName,string deviceCode,string number,string credata) + public string GetCreateUnitPriceInfo(sys_user item,string workorderCode, string sapWorkorderCode,string productCode,string productName,string childProcessCode,string childProcessName,string deviceCode,string number,string credata,string attr2) { string sql = $@"INSERT INTO [dbo].[mes_unitprice_report] ( [id],[workorder_code], [workorder_code_sap], [product_name], [product_code], @@ -732,7 +743,7 @@ where line_code = '{deviceCode}' and CONVERT(VARCHAR(10), Create_time , 120) = C ( '{Common.GetUUID()}', '{workorderCode}','{sapWorkorderCode}', '{productName}', '{productCode}', N'{item.user_name}', N'{item.nick_name}', N'{childProcessCode}', N'{childProcessName}',' {number}', - NULL, NULL, '{LoginUser.UserName}', '{credata} 00:00:00', NULL, + {attr2}, NULL, '{LoginUser.UserName}', '{credata} 00:00:00', NULL, NULL, NULL,'{deviceCode}' );"; return sql; diff --git a/shangjian/XGL.Model/Model/sys_user.cs b/shangjian/XGL.Model/Model/sys_user.cs index a7bbbdc..958283e 100644 --- a/shangjian/XGL.Model/Model/sys_user.cs +++ b/shangjian/XGL.Model/Model/sys_user.cs @@ -11,6 +11,10 @@ namespace XGL.Models.Model /// public class sys_user { + /// + /// 工时 + /// + public string attr2 { get; set; } /// /// 报工数量 /// diff --git a/shangjian/XGL/App.config b/shangjian/XGL/App.config index d49924b..c5eaaa5 100644 --- a/shangjian/XGL/App.config +++ b/shangjian/XGL/App.config @@ -12,7 +12,7 @@ - + diff --git a/shangjian/XGL/Views/LanJu_Prepare.xaml b/shangjian/XGL/Views/LanJu_Prepare.xaml index 0761e93..eee3556 100644 --- a/shangjian/XGL/Views/LanJu_Prepare.xaml +++ b/shangjian/XGL/Views/LanJu_Prepare.xaml @@ -287,7 +287,7 @@ - + --> - + public partial class LanJu_Prepare : UserControl { - Timer timerDeciveState = new Timer(); + System.Timers. Timer timerDeciveState = new System.Timers.Timer(); public LanJu_Prepare() { @@ -243,147 +244,158 @@ namespace XGL.Views private async void btnStartOrders_Click(object sender, RoutedEventArgs e) { - //陈恒杰在2024-01-07日与榄菊的苏振华确认,不需要用户验证 - //CheckUserWin checkUserWin = new CheckUserWin(); - //checkUserWin.ShowDialog(); - //if (!checkUserWin.loginFlag) - //{ - // CustomMessageBox.Show("请先校验用户!",CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning); - // return; - //} - if (WorkOrder.SelectedItems.Count == 0) + try { - CustomMessageBox.Show("请选择要开始的工单!", CustomMessageBoxButton.OK, 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("该工单已同步,请选择其他的工单!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning); - return; - } + // Check user verification (commented out as per your requirement) + // CheckUserWin checkUserWin = new CheckUserWin(); + // checkUserWin.ShowDialog(); + // if (!checkUserWin.loginFlag) + // { + // CustomMessageBox.Show("请先校验用户!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning); + // return; + // } - if (!status.Equals("w1")) - { - if (status != "") + if (WorkOrder.SelectedItems.Count == 0) { - CustomMessageBox.Show("该工单不符合条件,请选择其他的工单!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning); + CustomMessageBox.Show("请选择要开始的工单!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning); return; - } - } + } - //获取WMS齐套率,湿料计划先不用 - //var wmsState = userDbWareHouse.GetWorkOrderQitaoLv(orderID); - //if (wmsState == null || wmsState.Rows[0][0].Equals("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; - //获取湿料计划指定的成型机 - //var cxjDt = userDbWareHouse.GetCXJList(orderID); - DataTable cxjDt = null; - //根据工单获取成型机 - - cxjDt = userDbWareHouse.GetCXJList(workorderID);// 在此处执行数据库查询 - - if (cxjDt == null || cxjDt.Rows.Count == 0) - { - CustomMessageBox.Show("该工单未指定料罐、成型机,请稍后再试!", CustomMessageBoxButton.OK, 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 (sync_flag.Equals("Y")) { - - if (innerList[1].Contains("C")) + CustomMessageBox.Show("该工单已同步,请选择其他的工单!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning); + return; + } + + if (!status.Equals("w1")) + { + if (status != "") + { + CustomMessageBox.Show("该工单不符合条件,请选择其他的工单!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning); + return; + } + } + + // Show loading indicator + Dispatcher.Invoke(() => + { + jindu.Visibility = Visibility.Visible; + }); + + // Simulate some work + await Task.Run(async () => + { + // 获取湿料计划指定的成型机 + DataTable cxjDt = userDbWareHouse.GetCXJList(workorderID); + + if (cxjDt == null || cxjDt.Rows.Count == 0) + { + throw new Exception("该工单未指定料罐、成型机,请稍后再试!"); + } + + List cxjList = new List(); + List bucketList = new List(); + + 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); + + List> data = JsonConvert.DeserializeObject>>(jsonStrCXJList); + + foreach (var innerList in data) { - //记录成型机列表 - cxjList.Add(innerList[1]); + 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"); + cxjList = cxjList.Distinct().ToList(); + bucketList = bucketList.Distinct().ToList(); + 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 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; + 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 = material, + loadNo = item, + unLoadItems = new List() + }; - foreach (var item in bucketList) - { - skuInfo sku = new skuInfo(); - sku.sku = material; - sku.loadNo = item; - - List unloadNoInfoList = new List(); - foreach (var buckt in cxjList) + foreach (var buckt in cxjList) + { + unloadNoInfo unloadNoInfo = new unloadNoInfo + { + unloadNo = buckt + }; + sku.unLoadItems.Add(unloadNoInfo); + } + skuInfoList.Add(sku); + } + + materialPlanModel.data = skuInfoList; + + var jsonContent = JsonConvert.SerializeObject(materialPlanModel); + LogHelper.instance.log.Info("给WCS同步计划>>" + jsonContent); + RestHelper restClient = new RestHelper(); + var response =await restClient.PostAsync(apiUrl, jsonContent); + + WcsSyncResult result = Utils.DeJson(response); + + if (result.message.ToLower().Equals("ok")) { - unloadNoInfo unloadNoInfo = new unloadNoInfo(); - unloadNoInfo.unloadNo = buckt; - unloadNoInfoList.Add(unloadNoInfo); - } - sku.unLoadItems = unloadNoInfoList; - skuInfoList.Add(sku); + var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID); + if (!updatestatus) + { + LogHelper.instance.log.Info("更新湿料计划同步状态失败!"); + throw new Exception("推送至WCS计划失败!"); + } + } + else + { + throw new Exception("开始工单失败!"); + } + + // Simulate delay + Thread.Sleep(2000); + }); } - - materialPlanModel.data = skuInfoList; - - // 将要发送的数据序列化为JSON格式 - var jsonContent = JsonConvert.SerializeObject(materialPlanModel); - LogHelper.instance.log.Info("给WCS同步计划>>"+ jsonContent); - RestHelper restClient = new RestHelper(); - var response = await restClient.PostAsync(apiUrl, jsonContent); - - WcsSyncResult result = Utils.DeJson(response); - //Console.WriteLine(response); - if (result.message.ToLower().Equals("ok")) + catch (Exception ex) { - //更新湿料计划同步状态 - var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID); - if (!updatestatus) - LogHelper.instance.log.Info("更新湿料计划同步状态失败!"); - else + CustomMessageBox.Show("同步湿料计划失败!>>>>" + ex.Message, CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning, 2000); + } + finally + { + Dispatcher.Invoke(() => { + // Hide loading indicator + jindu.Visibility = Visibility.Collapsed; GetWorkOrder(); - } + }); } - else - { - CustomMessageBox.Show("开始工单失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning); - } - } + private void InitShiftInfo() { DataTable dt = formingMachineService.GetShiftList(); diff --git a/shangjian/XGL/config/ConnectionConfig.Config b/shangjian/XGL/config/ConnectionConfig.Config index c1b3110..66aee6d 100644 --- a/shangjian/XGL/config/ConnectionConfig.Config +++ b/shangjian/XGL/config/ConnectionConfig.Config @@ -2,13 +2,16 @@ 强烈建议:对数据库以及本软件的参数更改,不要在此页进行.可以通过系统配置页进行更新. + vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlF0tM4FO8qPh090fSbocpFrq1jWXNjwNnL+PpPtMzMa3twenC59knc+hzG9+/BpVUziKe0re5+K7EarPL+O+z1yYkea4KSxvd0pYaBws8NBUfRakxq8PBtNc1SFWCuPGjfGL/ZHZr/yKO3oLzGk4KHKBgHdnI182Gw68ADwmuC5BzxvlYPefyby8TkSEmemNvt81w7QBmU5M= + + --> + vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlF0tM4FO8qPh090fSbocpFrq1jWXNjwNnXgKYRJ9zN5oAHgVngDpmr/dw8Hc1dHuNE73NlxQdTq/+57SfWg+Ya5uD7N8RaXKNRAP0mCGTNtIXcAyKOR1JdH+n1t3euTba vadMWi9D6ZBkwIr78LoLmGwiSCvVnpY3nMB7IyQlxFiV2OD5s5WUgOabwGwWK3THofFvPL2rHpOvJVIvtz0oZU/NFQyT8KQlbk0rHjUXoU7wgRdUumDJ1RrSFmIjPm8S - vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlHbduXNDkc8suJwqe10me6ktk8XD3QU91w41/fcxqaq/+4SEgJrXDqR11H6yLI6j0e+twOEf+dgxO2izAFRQ8gHi3LlPP+MhoPB53b/3a/Jd77lDX8gemUvFsAcxEIF0V/c/nkoIAT6M+WIrSSS1icw6HuVSEjGl1zPqinhBhfvehu5cxP02aD/dmOZJEXtBdPUgLuwVFLRI= + - vadMWi9D6ZC3usVUY51rbTRH8TjL6CxlHbduXNDkc8suJwqe10me6ktk8XD3QU91ML11cYCqHcHmTXJFsNQamIbW3UEpkjgNPUcBwRfgP6AWftvk9YFyv7y7/6nzX/c+6z6xMDIdcjYVvfteU+7YtOQhJXTfF5ScosAA0GliBfD8dWAunW+ZCos5LemAj2xb2wvvCxlbnrof8IunWslCaBEAGrdC/KhE0qEfNbxydwc= + \ No newline at end of file diff --git a/shangjian/XGL/obj/x86/Debug/Views/LanJu_Prepare.g.cs b/shangjian/XGL/obj/x86/Debug/Views/LanJu_Prepare.g.cs index 9b2a40d..72c76ec 100644 --- a/shangjian/XGL/obj/x86/Debug/Views/LanJu_Prepare.g.cs +++ b/shangjian/XGL/obj/x86/Debug/Views/LanJu_Prepare.g.cs @@ -1,4 +1,4 @@ -#pragma checksum "..\..\..\..\Views\LanJu_Prepare.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "2215B60EFC3C101766D87000765EE4605230CBAFD6FAE8E2E0A67863E548589E" +#pragma checksum "..\..\..\..\Views\LanJu_Prepare.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "929CF6E091A5BFA67338C66C86D79EF5760134602FAA54C40B7D749E60225FD7" //------------------------------------------------------------------------------ // // 此代码由工具生成。 @@ -87,6 +87,14 @@ namespace XGL.Views { #line hidden + #line 406 "..\..\..\..\Views\LanJu_Prepare.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ProgressBar jindu; + + #line default + #line hidden + + #line 409 "..\..\..\..\Views\LanJu_Prepare.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.DataGrid WorkOrder; @@ -178,6 +186,9 @@ namespace XGL.Views { #line hidden return; case 7: + this.jindu = ((System.Windows.Controls.ProgressBar)(target)); + return; + case 8: this.WorkOrder = ((System.Windows.Controls.DataGrid)(target)); #line 422 "..\..\..\..\Views\LanJu_Prepare.xaml" @@ -205,7 +216,7 @@ namespace XGL.Views { void System.Windows.Markup.IStyleConnector.Connect(int connectionId, object target) { switch (connectionId) { - case 8: + case 9: #line 542 "..\..\..\..\Views\LanJu_Prepare.xaml" ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Flow_Click); @@ -213,7 +224,7 @@ namespace XGL.Views { #line default #line hidden break; - case 9: + case 10: #line 549 "..\..\..\..\Views\LanJu_Prepare.xaml" ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SOP_Click); @@ -221,7 +232,7 @@ namespace XGL.Views { #line default #line hidden break; - case 10: + case 11: #line 556 "..\..\..\..\Views\LanJu_Prepare.xaml" ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Material_Click); diff --git a/shangjian/XGL/obj/x86/Debug/Views/LanJu_Prepare.g.i.cs b/shangjian/XGL/obj/x86/Debug/Views/LanJu_Prepare.g.i.cs index 9b2a40d..72c76ec 100644 --- a/shangjian/XGL/obj/x86/Debug/Views/LanJu_Prepare.g.i.cs +++ b/shangjian/XGL/obj/x86/Debug/Views/LanJu_Prepare.g.i.cs @@ -1,4 +1,4 @@ -#pragma checksum "..\..\..\..\Views\LanJu_Prepare.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "2215B60EFC3C101766D87000765EE4605230CBAFD6FAE8E2E0A67863E548589E" +#pragma checksum "..\..\..\..\Views\LanJu_Prepare.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "929CF6E091A5BFA67338C66C86D79EF5760134602FAA54C40B7D749E60225FD7" //------------------------------------------------------------------------------ // // 此代码由工具生成。 @@ -87,6 +87,14 @@ namespace XGL.Views { #line hidden + #line 406 "..\..\..\..\Views\LanJu_Prepare.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ProgressBar jindu; + + #line default + #line hidden + + #line 409 "..\..\..\..\Views\LanJu_Prepare.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.DataGrid WorkOrder; @@ -178,6 +186,9 @@ namespace XGL.Views { #line hidden return; case 7: + this.jindu = ((System.Windows.Controls.ProgressBar)(target)); + return; + case 8: this.WorkOrder = ((System.Windows.Controls.DataGrid)(target)); #line 422 "..\..\..\..\Views\LanJu_Prepare.xaml" @@ -205,7 +216,7 @@ namespace XGL.Views { void System.Windows.Markup.IStyleConnector.Connect(int connectionId, object target) { switch (connectionId) { - case 8: + case 9: #line 542 "..\..\..\..\Views\LanJu_Prepare.xaml" ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Flow_Click); @@ -213,7 +224,7 @@ namespace XGL.Views { #line default #line hidden break; - case 9: + case 10: #line 549 "..\..\..\..\Views\LanJu_Prepare.xaml" ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SOP_Click); @@ -221,7 +232,7 @@ namespace XGL.Views { #line default #line hidden break; - case 10: + case 11: #line 556 "..\..\..\..\Views\LanJu_Prepare.xaml" ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Material_Click); diff --git a/shangjian/XGLFinishPro/Tools/ShiftConvert.cs b/shangjian/XGLFinishPro/Tools/ShiftConvert.cs new file mode 100644 index 0000000..221f66f --- /dev/null +++ b/shangjian/XGLFinishPro/Tools/ShiftConvert.cs @@ -0,0 +1,48 @@ +using HandyControl.Tools.Extension; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; + +namespace XGLFinishPro.Tools +{ + public class ShiftConvert : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value.ToString().IsNullOrEmpty()) + { + return "未发起检测"; + } + else if (value.Equals("0")) + { + return "待检测"; + } + else if (value.Equals("1")) + { + return "监测中"; + } + else if (value.Equals("2")) + { + return "检测完成"; + } + else if(value.Equals("5")) + { + return "白班"; + } + else + { + return "夜班"; + } + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + // 如果需要双向绑定,也需要实现 ConvertBack 方法 + throw new NotImplementedException(); + } + } +} diff --git a/shangjian/XGLFinishPro/Views/ExecReportWorkWin.xaml.cs b/shangjian/XGLFinishPro/Views/ExecReportWorkWin.xaml.cs index 1ab767f..ffd715d 100644 --- a/shangjian/XGLFinishPro/Views/ExecReportWorkWin.xaml.cs +++ b/shangjian/XGLFinishPro/Views/ExecReportWorkWin.xaml.cs @@ -89,7 +89,8 @@ namespace XGLFinishPro.Views selectedRow = _selectedRow; _deviceCode = deviceCode; this._workOrdercode = selectedRow["workorder_code"].ToString(); - this.lbCurrOrderNo.Content = selectedRow["workorder_code"].ToString(); + string orderNumber = selectedRow["workorder_code_sap"].ToString(); + this.lbCurrOrderNo.Content = orderNumber.TrimStart('0'); this._workOrderId = selectedRow["workorder_id"].ToString(); object obi = selectedRow["batch_quantity"]; @@ -386,7 +387,7 @@ namespace XGLFinishPro.Views { try { - var getorder = formingMachineService.Getorderworkorder(lbCurrOrderNo.Content.ToString()); + var getorder = formingMachineService.Getorderworkorder(selectedRow["workorder_code"].ToString()); var eqment = formingMachineService.GetWorkShop(Utils.GetAppSetting("DeviceCode")); createCheckProductTask createCheckProductTask = new createCheckProductTask(); createCheckProductTask.factoryCode = Utils.GetAppSetting("SiteCode");//工厂编码 @@ -405,7 +406,7 @@ namespace XGLFinishPro.Views if (eqment != null && eqment.Rows.Count > 0) { createCheckProductTask.carName = eqment.Rows[0]["workshop_name"].ToString();//车间名称 - createCheckProductTask.carName = eqment.Rows[0]["workshop_code"].ToString();//车间编码 + createCheckProductTask.carCode = eqment.Rows[0]["workshop_code"].ToString();//车间编码 } createCheckProductTask.produceDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//生产时间格式yyyy-MM-dd HH:mm:ss createCheckProductTask.checkLoc = Utils.GetAppSetting("DeviceCode");//检测地点 @@ -413,6 +414,7 @@ namespace XGLFinishPro.Views string apiUrl = formingMachineService.InterfaceUrl("BatcInspection"); // 将请求参数序列化为 JSON 格式 string requestBodyJson = Newtonsoft.Json.JsonConvert.SerializeObject(createCheckProductTask); + LogHelper.instance.log.Info("requestBodyJson批次检验任务日志"+ requestBodyJson); // 发送 HTTP POST 请求 using (var httpClient = new HttpClient()) { @@ -424,6 +426,7 @@ namespace XGLFinishPro.Views { // 获取响应内容 string responseBody = response.Content.ReadAsStringAsync().Result; // 或者 .Wait(); + CustomMessageBox.Show("批次成品检验任务创建成功!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning, 2000); } else { @@ -536,7 +539,10 @@ namespace XGLFinishPro.Views private void GetFatherOrderUserCount() { - string workOrder = this.lbCurrOrderNo.Content.ToString(); + //2024-06-17处理报工界面工单号问题 + //string workOrder = this.lbCurrOrderNo.Content.ToString(); + + //DataTable dt = formingMachineService.GetSubOrderCount(workOrder); //if (dt == null) //{ @@ -548,7 +554,7 @@ namespace XGLFinishPro.Views // this.txtFOUserCount.Text = "4"; // this.txtFOUserCount.IsEnabled = false; //} - GetSubOrder(workOrder); + GetSubOrder(this._workOrdercode); //string workOrder = this.lbCurrOrderNo.Content.ToString(); //DataTable dt = formingMachineService.GetFatherOrderUserCount(workOrder); //if (dt == null) @@ -933,8 +939,8 @@ namespace XGLFinishPro.Views } double rate = 0; - string workOrder = this.lbCurrOrderNo.Content.ToString(); - DataTable dt = formingMachineService.GetOrderReportSumQty(workOrder); + //string workOrder = this.lbCurrOrderNo.Content.ToString(); + DataTable dt = formingMachineService.GetOrderReportSumQty(this._workOrdercode); //如果没报过工,按照只有一个批次处理 if (dt == null || dt.Rows.Count == 0) { diff --git a/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml b/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml index 04ac24a..fec8ff7 100644 --- a/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml +++ b/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml @@ -17,7 +17,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/shangjian/XGLFinishPro/Views/firstInspection.xaml.cs b/shangjian/XGLFinishPro/Views/firstInspection.xaml.cs new file mode 100644 index 0000000..14ece81 --- /dev/null +++ b/shangjian/XGLFinishPro/Views/firstInspection.xaml.cs @@ -0,0 +1,57 @@ +using CommonFunc.Tools; +using CommonFunc; +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.Dats.DBServiceFinishProd; + +namespace XGLFinishPro.Views +{ + /// + /// firstInspection.xaml 的交互逻辑 + /// + public partial class firstInspection : UserControl + { + FinishProdDBService userDbWareHouse = new FinishProdDBService(); + public firstInspection() + { + InitializeComponent(); + } + + private void UserControl_Loaded(object sender, RoutedEventArgs e) + { + GetInfo(); + } + private void GetInfo() + { + try + { + DataTable dt = userDbWareHouse.GetOperationShouJian(LoginUser.WorkDate, Utils.GetAppSetting("DeviceCode")); + if (dt == null) return; + + this.datagrid1.ItemsSource = dt.DefaultView; + } + catch (Exception ex) + { + LogHelper.instance.log.Error("获取完成记录信息时发生异常:" + ex.Message); + } + } + + private void datagrid1_LoadingRow(object sender, DataGridRowEventArgs e) + { + e.Row.Header = (e.Row.GetIndex() + 1).ToString(); + } + } +} diff --git a/shangjian/XGLFinishPro/XGLFinishPro.csproj b/shangjian/XGLFinishPro/XGLFinishPro.csproj index 340f0d0..c848b3c 100644 --- a/shangjian/XGLFinishPro/XGLFinishPro.csproj +++ b/shangjian/XGLFinishPro/XGLFinishPro.csproj @@ -326,6 +326,7 @@ + @@ -414,6 +415,9 @@ DryingRoomUC.xaml + + firstInspection.xaml + HBLogWin.xaml @@ -668,6 +672,10 @@ Designer MSBuild:Compile + + MSBuild:Compile + Designer + MSBuild:Compile Designer