diff --git a/shangjian/CentralControl/obj/Debug/CentralControl.csproj.AssemblyReference.cache b/shangjian/CentralControl/obj/Debug/CentralControl.csproj.AssemblyReference.cache
index 8e1beca..9c06096 100644
Binary files a/shangjian/CentralControl/obj/Debug/CentralControl.csproj.AssemblyReference.cache and b/shangjian/CentralControl/obj/Debug/CentralControl.csproj.AssemblyReference.cache differ
diff --git a/shangjian/XGL.Data/DBService/FormingMachineService.cs b/shangjian/XGL.Data/DBService/FormingMachineService.cs
index 1501949..9e85001 100644
--- a/shangjian/XGL.Data/DBService/FormingMachineService.cs
+++ b/shangjian/XGL.Data/DBService/FormingMachineService.cs
@@ -962,22 +962,65 @@ VALUES
return ret > 0 ? true : false;
}
- public string GetInsertConsumeInfoSql(DataRowView selectedConsumeRow, string newReportCode, string siteCode)
+ //public string GetInsertConsumeInfoSql(DataRowView selectedConsumeRow, string newReportCode, string siteCode)
+ //{
+ // string sql = $@" INSERT INTO [dbo].[mes_report_work_consume]
+ // ([record_id], [workorder_code], [material_code], [material_name], [material_spc],
+ // [quantity], [unit], [remark], [attr1], [attr2],
+ // [attr3], [attr4], [create_by], [create_time], [update_by],
+ // [update_time], [factory_code], [report_code], [del_flag],[parent_order],[recoil],[IP],[version],[rspos],[wastage])
+ // VALUES
+ // ('{Common.GetUUID()}', '{selectedConsumeRow["workorder_code"]}', '{selectedConsumeRow["material_code"]}', '{selectedConsumeRow["material_name"]}', '{selectedConsumeRow["material_spc"]}',
+ // '{selectedConsumeRow["qty"]}','{selectedConsumeRow["unit"]}', '{selectedConsumeRow["remark"]}', NULL, NULL,
+ // NULL, NULL, '{LoginUser.UserName}', GetDate(), '{LoginUser.UserName}',
+ // GetDate(), '{siteCode}', '{newReportCode}', '0','{selectedConsumeRow["parent_work_order"]}','{selectedConsumeRow["recoil"]}','{LoginUser.CurrDeviceIP}','{LoginUser.Version}','{selectedConsumeRow["attr1"]}', '{selectedConsumeRow["wastage"]}'); ";
+ // //int ret = Utils.netClientDBHelper.executeUpdate(sql);
+ // return sql;
+ //}
+
+ public string GetMergeConsumeInfoSql(DataRowView selectedConsumeRow, string newReportCode, string siteCode)
{
- string sql = $@" INSERT INTO [dbo].[mes_report_work_consume]
- ([record_id], [workorder_code], [material_code], [material_name], [material_spc],
- [quantity], [unit], [remark], [attr1], [attr2],
- [attr3], [attr4], [create_by], [create_time], [update_by],
- [update_time], [factory_code], [report_code], [del_flag],[parent_order],[recoil],[IP],[version],[rspos])
- VALUES
- ('{Common.GetUUID()}', '{selectedConsumeRow["workorder_code"]}', '{selectedConsumeRow["material_code"]}', '{selectedConsumeRow["material_name"]}', '{selectedConsumeRow["material_spc"]}',
- '{selectedConsumeRow["qty"]}','{selectedConsumeRow["unit"]}', '{selectedConsumeRow["remark"]}', NULL, NULL,
- NULL, NULL, '{LoginUser.UserName}', GetDate(), '{LoginUser.UserName}',
- GetDate(), '{siteCode}', '{newReportCode}', '0','{selectedConsumeRow["parent_work_order"]}','{selectedConsumeRow["recoil"]}','{LoginUser.CurrDeviceIP}','{LoginUser.Version}','{selectedConsumeRow["attr1"]}'); ";
- //int ret = Utils.netClientDBHelper.executeUpdate(sql);
+ string sql = $@"
+ MERGE [dbo].[mes_report_work_consume] AS target
+ USING (SELECT
+ '{selectedConsumeRow["workorder_code"]}' AS workorder_code,
+ '{selectedConsumeRow["material_code"]}' AS material_code
+ ) AS source
+ ON target.workorder_code = source.workorder_code
+ AND target.material_code = source.material_code
+ WHEN MATCHED THEN
+ UPDATE SET
+ material_name = '{selectedConsumeRow["material_name"]}',
+ material_spc = '{selectedConsumeRow["material_spc"]}',
+ quantity = '{selectedConsumeRow["qty"]}',
+ unit = '{selectedConsumeRow["unit"]}',
+ remark = '{selectedConsumeRow["remark"]}',
+ update_by = '{LoginUser.UserName}',
+ update_time = GETDATE(),
+ factory_code = '{siteCode}',
+ report_code = '{newReportCode}',
+ del_flag = '0',
+ parent_order = '{selectedConsumeRow["parent_work_order"]}',
+ recoil = '{selectedConsumeRow["recoil"]}',
+ IP = '{LoginUser.CurrDeviceIP}',
+ version = '{LoginUser.Version}',
+ rspos = '{selectedConsumeRow["attr1"]}',
+ wastage = '{selectedConsumeRow["wastage"]}'
+ WHEN NOT MATCHED THEN
+ INSERT ([record_id], [workorder_code], [material_code], [material_name], [material_spc],
+ [quantity], [unit], [remark], [attr1], [attr2],
+ [attr3], [attr4], [create_by], [create_time], [update_by],
+ [update_time], [factory_code], [report_code], [del_flag], [parent_order], [recoil], [IP], [version], [rspos], [wastage])
+ VALUES ('{Common.GetUUID()}', '{selectedConsumeRow["workorder_code"]}', '{selectedConsumeRow["material_code"]}', '{selectedConsumeRow["material_name"]}', '{selectedConsumeRow["material_spc"]}',
+ '{selectedConsumeRow["qty"]}', '{selectedConsumeRow["unit"]}', '{selectedConsumeRow["remark"]}', NULL, NULL,
+ NULL, NULL, '{LoginUser.UserName}', GETDATE(), '{LoginUser.UserName}',
+ GETDATE(), '{siteCode}', '{newReportCode}', '0', '{selectedConsumeRow["parent_work_order"]}', '{selectedConsumeRow["recoil"]}', '{LoginUser.CurrDeviceIP}', '{LoginUser.Version}', '{selectedConsumeRow["attr1"]}', '{selectedConsumeRow["wastage"]}');
+ ";
+
return sql;
}
+
///
/// 获取母单的包工人数
///
@@ -1701,9 +1744,23 @@ where machine_code = 'X1' and bind_status = '0' order by update_time DESC";
public bool UpdateProWorkBatchInWork(string lineCode, string batchCode, string workorderCode, string productCode, string productName, string productdescen, string boxType, string packType, string umrez, string status, string productDate)
{
string sql = $@"update pro_workbatch_inwork set workorder_code='{workorderCode}',batch='{batchCode}',product_code='{productCode}',status='{status}',product_name='{productName}',product_name_en='{productdescen}',box_type='{boxType}',pack_type='{packType}',umrez='{umrez}',product_date='{productDate}' where line_code='{lineCode}' ";
+ LogHelper.instance.log.Info($"sql:" + sql);
return Utils.netClientDBHelper.executeUpdate(sql) > 0;
}
+ /////
+ ///// 恢复生产时再次写入装数
+ /////
+ /////
+ /////
+ /////
+ //public bool SecondUpdateProWorkBatchInWork(string umrez, string lineCode)
+ //{
+ // string sql = $@"update pro_workbatch_inwork set workorder_code='{workorderCode}',product_code='{productCode}',status='{status}',product_name='{productName}',product_name_en='{productdescen}',pack_type='{packType}',umrez='{umrez}',product_date='{productDate}' where line_code='{lineCode}' ";
+ // LogHelper.instance.log.Info($"sql:" + sql);
+ // return Utils.netClientDBHelper.executeUpdate(sql) > 0;
+ //}
+
public DataTable GetProductSize(string productCode)
{
string sql = $"SELECT length,width,height from base_product where product_code='{productCode}'";
@@ -1732,9 +1789,9 @@ where machine_code = 'X1' and bind_status = '0' order by update_time DESC";
return null;
}
- public bool UpdateProWorkBatchInWorkStatus(string lineCode, string status)
+ public bool UpdateProWorkBatchInWorkStatus(string lineCode, string status,string packType)
{
- string sql = $@"update pro_workbatch_inwork set status='{status}' where line_code='{lineCode}' ";
+ string sql = $@"update pro_workbatch_inwork set status='{status}',pack_type='{packType}' where line_code='{lineCode}' ";
return Utils.netClientDBHelper.executeUpdate(sql) > 0;
}
diff --git a/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs b/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs
index 98a4b4a..04337ef 100644
--- a/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs
+++ b/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs
@@ -297,7 +297,7 @@ where CONVERT(VARCHAR(10), create_time , 120)= CONVERT(VARCHAR(10), '{LoginUser.
public DataTable GetCosumeData(string workorder)
{
- string sql = $@"select DISTINCT '0' as qty,'' as remark, pre.workorder_code, SUBSTRING(material_code, 8, LEN(material_code)) as material_code1,material_code,material_name,detail.prod_type,material_spc,detail.unit,quantity,
+ string sql = $@"select DISTINCT '0' as qty,'0' as wastage,'' as remark, pre.workorder_code, SUBSTRING(material_code, 8, LEN(material_code)) as material_code1,material_code,material_name,detail.prod_type,material_spc,detail.unit,quantity,
detail.create_by,detail.create_time,detail.update_by,detail.update_time,locator,need_date,
recoil,fund_quanlity,detail.del_flag,parent_work_order,detail.attr1,orders.workorder_code_sap
from mes_prepare_detail detail
@@ -700,7 +700,9 @@ select a.TrayCode,a.ProductBarNo,a.carcode,a.createtime,a.lineno,b.HadNumber
// 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";
////string sql = $"WITH LatestCheck AS (\r\n SELECT \r\n *,\r\n ROW_NUMBER() OVER (PARTITION BY order_no, income_batch_no ORDER BY create_time DESC) AS rn\r\n FROM \r\n qc_check_task\r\n WHERE \r\n check_type = 'checkTypeCPPC' \r\n AND del_flag = 0\r\n)\r\nSELECT \r\n workorder.factory_code,\r\n workorder.product_date AS plan_time,\r\n workorder.workorder_id,\r\n workorder.workorder_code,\r\n product_code,\r\n product_name,\r\n product_spc,\r\n shifts.shift_desc,\r\n prod_line_code,\r\n workorder.status,\r\n route_code,\r\n quantity_split,\r\n workorder.unit,\r\n workorder.shift_id,\r\n batch.batch_code,\r\n batch.batch_quantity,\r\n sort_no,\r\n workorder.parent_order,\r\n batch.qc_status,\r\n ISNULL(batch.qc_result, '') AS qc_result,\r\n batch.status AS batchStatus,\r\n workorder_code_sap,\r\n salary_flag,\r\n qty.batchQty,\r\n batch.batch_quantity - qty.batchQty AS diffQty,\r\n chack.create_time,\r\n chack.check_status\r\nFROM \r\n pro_order_workorder workorder WITH (NOLOCK)\r\nLEFT JOIN \r\n base_shifts_t shifts WITH (NOLOCK) ON workorder.shift_id = shifts.shift_id\r\nLEFT JOIN \r\n pro_order_workorder_batch batch WITH (NOLOCK) ON workorder.workorder_id = batch.workorder_id\r\nOUTER APPLY \r\n (SELECT TOP 1 * \r\n FROM LatestCheck \r\n WHERE rn = 1 \r\n AND workorder.workorder_code = LatestCheck.order_no \r\n AND batch.batch_code = LatestCheck.income_batch_no) chack\r\nLEFT JOIN \r\n (SELECT sum(quantity_feedback) AS batchQty, workorder_code, batch \r\n FROM [dbo].[mes_report_work] \r\n WHERE del_flag = 0 \r\n GROUP BY workorder_code, batch) qty \r\n ON qty.workorder_code = workorder.workorder_code AND batch.batch_code = qty.batch\r\nWHERE \r\n 1 = 1 \r\n AND batch.del_flag = 0 \r\n AND workorder.del_flag = 0 \r\n AND workorder.parent_order = '0' \r\n AND CONVERT(VARCHAR(10), workorder.product_date, 120) = CONVERT(VARCHAR(10), '{date}', 120) \r\n AND workorder.prod_line_code LIKE '%{deviceCode}%'\r\nORDER BY \r\n sort_no, batch_code;\r\n";
- string sql = $"WITH LatestCheck AS (\r\n SELECT \r\n *,\r\n ROW_NUMBER() OVER (PARTITION BY order_no, income_batch_no ORDER BY create_time DESC) AS rn\r\n FROM \r\n qc_check_task\r\n WHERE \r\n check_type = 'checkTypeCPPC' \r\n AND del_flag = 0\r\n)\r\nSELECT \r\n workorder.factory_code,\r\n workorder.product_date AS plan_time,\r\n workorder.workorder_id,\r\n workorder.workorder_code,\r\n product_code,\r\n product_name,\r\n product_spc,\r\n shifts.shift_desc,\r\n prod_line_code,\r\n workorder.status,\r\n route_code,\r\n quantity_split,\r\n workorder.unit,\r\n workorder.shift_id,\r\n batch.batch_code,\r\n batch.batch_quantity,\r\n sort_no,\r\n workorder.parent_order,\r\n batch.qc_status,\r\n ISNULL(batch.qc_result, '') AS qc_result,\r\n batch.status AS batchStatus,\r\n workorder_code_sap,\r\n salary_flag,\r\n qty.batchQty,\r\n batch.batch_quantity - qty.batchQty AS diffQty,\r\n chack.create_time,\r\n chack.check_status,CASE\r\n WHEN batch.attr1 = '1' THEN 'false'\r\n ELSE 'true'\r\n END AS IsEnabled,\r\n CASE\r\n WHEN batch.attr1 = '1' THEN '结束'\r\n ELSE '开始'\r\n END AS BtnTest ,\r\n batch.batch_id AS batchId \r\nFROM \r\n pro_order_workorder workorder WITH (NOLOCK)\r\nLEFT JOIN \r\n base_shifts_t shifts WITH (NOLOCK) ON workorder.shift_id = shifts.shift_id\r\nLEFT JOIN \r\n pro_order_workorder_batch batch WITH (NOLOCK) ON workorder.workorder_id = batch.workorder_id\r\nOUTER APPLY \r\n (SELECT TOP 1 * \r\n FROM LatestCheck \r\n WHERE rn = 1 \r\n AND workorder.workorder_code = LatestCheck.order_no \r\n AND batch.batch_code = LatestCheck.income_batch_no) chack\r\nLEFT JOIN \r\n (SELECT sum(quantity_feedback) AS batchQty, workorder_code, batch \r\n FROM [dbo].[mes_report_work] \r\n WHERE del_flag = 0 \r\n GROUP BY workorder_code, batch) qty \r\n ON qty.workorder_code = workorder.workorder_code AND batch.batch_code = qty.batch\r\nWHERE \r\n 1 = 1 \r\n AND batch.del_flag = 0 \r\n AND workorder.del_flag = 0 \r\n AND workorder.parent_order = '0' \r\n AND CONVERT(VARCHAR(10), workorder.product_date, 120) = CONVERT(VARCHAR(10), '{date}', 120) \r\n AND workorder.prod_line_code LIKE '%{deviceCode}%'\r\nORDER BY \r\n sort_no, batch_code;\r\n";
+ //string sql = $"WITH LatestCheck AS (\r\n SELECT \r\n *,\r\n ROW_NUMBER() OVER (PARTITION BY order_no, income_batch_no ORDER BY create_time DESC) AS rn\r\n FROM \r\n qc_check_task\r\n WHERE \r\n check_type = 'checkTypeCPPC' \r\n AND del_flag = 0\r\n)\r\nSELECT \r\n workorder.factory_code,\r\n workorder.product_date AS plan_time,\r\n workorder.workorder_id,\r\n workorder.workorder_code,\r\n product_code,\r\n product_name,\r\n product_spc,\r\n shifts.shift_desc,\r\n prod_line_code,\r\n workorder.status,\r\n route_code,\r\n quantity_split,\r\n workorder.unit,\r\n workorder.shift_id,\r\n batch.batch_code,\r\n batch.batch_quantity,\r\n sort_no,\r\n workorder.parent_order,\r\n batch.qc_status,\r\n ISNULL(batch.qc_result, '') AS qc_result,\r\n batch.status AS batchStatus,\r\n workorder_code_sap,\r\n salary_flag,\r\n qty.batchQty,\r\n batch.batch_quantity - qty.batchQty AS diffQty,\r\n chack.create_time,\r\n chack.check_status,CASE\r\n WHEN batch.attr1 = '1' THEN 'false'\r\n ELSE 'true'\r\n END AS IsEnabled,\r\n CASE\r\n WHEN batch.attr1 = '1' THEN '结束'\r\n ELSE '开始'\r\n END AS BtnTest ,\r\n batch.batch_id AS batchId \r\nFROM \r\n pro_order_workorder workorder WITH (NOLOCK)\r\nLEFT JOIN \r\n base_shifts_t shifts WITH (NOLOCK) ON workorder.shift_id = shifts.shift_id\r\nLEFT JOIN \r\n pro_order_workorder_batch batch WITH (NOLOCK) ON workorder.workorder_id = batch.workorder_id\r\nOUTER APPLY \r\n (SELECT TOP 1 * \r\n FROM LatestCheck \r\n WHERE rn = 1 \r\n AND workorder.workorder_code = LatestCheck.order_no \r\n AND batch.batch_code = LatestCheck.income_batch_no) chack\r\nLEFT JOIN \r\n (SELECT sum(quantity_feedback) AS batchQty, workorder_code, batch \r\n FROM [dbo].[mes_report_work] \r\n WHERE del_flag = 0 \r\n GROUP BY workorder_code, batch) qty \r\n ON qty.workorder_code = workorder.workorder_code AND batch.batch_code = qty.batch\r\nWHERE \r\n 1 = 1 \r\n AND batch.del_flag = 0 \r\n AND workorder.del_flag = 0 \r\n AND workorder.parent_order = '0' \r\n AND CONVERT(VARCHAR(10), workorder.product_date, 120) = CONVERT(VARCHAR(10), '{date}', 120) \r\n AND workorder.prod_line_code LIKE '%{deviceCode}%'\r\nORDER BY \r\n sort_no, batch_code;\r\n";
+ //string sql = $"WITH LatestCheck AS (\r\n SELECT\r\n *,\r\n ROW_NUMBER() OVER (PARTITION BY order_no, income_batch_no ORDER BY create_time DESC) AS rn\r\n FROM\r\n qc_check_task\r\n WHERE\r\n check_type = 'checkTypeCPPC'\r\n AND del_flag = 0\r\n)\r\nSELECT\r\n workorder.factory_code,\r\n workorder.product_date AS plan_time,\r\n workorder.workorder_id,\r\n workorder.workorder_code,\r\n workorder.product_code,\r\n product_name,\r\n product_spc,\r\n shifts.shift_desc,\r\n prod_line_code,\r\n workorder.status,\r\n route_code,\r\n quantity_split,\r\n workorder.unit,\r\n workorder.shift_id,\r\n batch.batch_code,\r\n batch.batch_quantity,\r\n sort_no,\r\n workorder.parent_order,\r\n batch.qc_status,\r\n ISNULL(batch.qc_result, '') AS qc_result,\r\n batch.status AS batchStatus,\r\n workorder_code_sap,\r\n salary_flag,\r\n qty.batchQty,\r\n batch.batch_quantity - qty.batchQty AS diffQty,\r\n chack.create_time,\r\n chack.check_status,\r\n CASE\r\n WHEN batch.attr1 = '1' THEN 'false'\r\n ELSE 'true'\r\n END AS IsEnabled,\r\n CASE\r\n WHEN batch.attr1 = '1' THEN '结束'\r\n ELSE '开始'\r\n END AS BtnTest,\r\n batch.batch_id AS batchId,\r\n bpa.man_standar\r\nFROM\r\n pro_order_workorder workorder WITH (NOLOCK)\r\nLEFT JOIN\r\n base_shifts_t shifts WITH (NOLOCK) ON workorder.shift_id = shifts.shift_id\r\nLEFT JOIN\r\n pro_order_workorder_batch batch WITH (NOLOCK) ON workorder.workorder_id = batch.workorder_id\r\nOUTER APPLY\r\n (SELECT TOP 1 *\r\n FROM LatestCheck\r\n WHERE rn = 1\r\n AND workorder.workorder_code = LatestCheck.order_no\r\n AND batch.batch_code = LatestCheck.income_batch_no) chack\r\nLEFT JOIN\r\n (SELECT sum(quantity_feedback) AS batchQty, workorder_code, batch\r\n FROM [dbo].[mes_report_work]\r\n WHERE del_flag = 0\r\n GROUP BY workorder_code, batch) qty\r\n ON qty.workorder_code = workorder.workorder_code AND batch.batch_code = qty.batch\r\nLEFT JOIN base_product_attached bpa\r\n ON bpa.product_code =\r\n STUFF(workorder.product_code, 1, PATINDEX('%[^0]%', workorder.product_code)-1, '')\r\nWHERE\r\n 1 = 1\r\n AND batch.del_flag = 0\r\n AND workorder.del_flag = 0\r\n AND workorder.parent_order = '0'\r\n AND CONVERT(VARCHAR(10), workorder.product_date, 120) = CONVERT(VARCHAR(10), '{date}', 120)\r\n AND workorder.prod_line_code LIKE '%{deviceCode}%'\r\nORDER BY\r\n sort_no, batch_code;";
+ string sql = $"WITH LatestCheck AS (SELECT *,\r\n ROW_NUMBER() OVER (PARTITION BY order_no, income_batch_no ORDER BY create_time DESC) AS rn\r\n FROM qc_check_task\r\n WHERE check_type = 'checkTypeCPPC'\r\n AND del_flag = 0)\r\nSELECT workorder.factory_code,\r\n workorder.product_date AS plan_time,\r\n workorder.workorder_id,\r\n workorder.workorder_code,\r\n workorder.product_code,\r\n workorder.product_name,\r\n product_spc,\r\n shifts.shift_desc,\r\n prod_line_code,\r\n workorder.status,\r\n route_code,\r\n quantity_split,\r\n workorder.unit,\r\n workorder.shift_id,\r\n batch.batch_code,\r\n batch.batch_quantity,\r\n sort_no,\r\n workorder.parent_order,\r\n batch.qc_status,\r\n ISNULL(batch.qc_result, '') AS qc_result,\r\n batch.status AS batchStatus,\r\n workorder_code_sap,\r\n salary_flag,\r\n qty.batchQty,\r\n batch.batch_quantity - qty.batchQty AS diffQty,\r\n chack.create_time,\r\n chack.check_status,\r\n CASE WHEN batch.attr1 = '1' THEN 'false' ELSE 'true' END AS IsEnabled,\r\n CASE WHEN batch.attr1 = '1' THEN '结束' ELSE '开始' END AS BtnTest,\r\n batch.batch_id AS batchId,\r\n mlp.use_man\r\nFROM pro_order_workorder workorder WITH (NOLOCK)\r\n LEFT JOIN base_shifts_t shifts WITH (NOLOCK) ON workorder.shift_id = shifts.shift_id\r\n LEFT JOIN pro_order_workorder_batch batch WITH (NOLOCK) ON workorder.workorder_id = batch.workorder_id\r\n OUTER APPLY (SELECT TOP 1 *\r\n FROM LatestCheck\r\n WHERE rn = 1\r\n AND workorder.workorder_code = LatestCheck.order_no\r\n AND batch.batch_code = LatestCheck.income_batch_no) chack\r\n LEFT JOIN (SELECT sum(quantity_feedback) AS batchQty, workorder_code, batch\r\n FROM [dbo].[mes_report_work]\r\n WHERE del_flag = 0\r\n GROUP BY workorder_code, batch) qty\r\n ON qty.workorder_code = workorder.workorder_code AND batch.batch_code = qty.batch\r\n LEFT JOIN mes_line_product mlp ON mlp.product_code = workorder.product_code AND mlp.del_flag = '0' AND mlp.line_code LIKE '%{deviceCode}%'\r\nWHERE 1 = 1\r\n AND batch.del_flag = 0\r\n AND workorder.del_flag = 0\r\n AND workorder.parent_order = '0'\r\n AND CONVERT(VARCHAR(10), workorder.product_date, 120) = CONVERT(VARCHAR(10), '{date}', 120)\r\n AND workorder.prod_line_code LIKE '%{deviceCode}%'\r\nORDER BY sort_no, batch_code;";
DataSet dtset = Utils.netClientDBHelper.getDataSet(sql);
if (dtset != null && dtset.Tables.Count > 0 && dtset.Tables[0].Rows.Count > 0)
{
diff --git a/shangjian/XGL.Thrift/AreaPlc.cs b/shangjian/XGL.Thrift/AreaPlc.cs
index cd8507b..7074482 100644
--- a/shangjian/XGL.Thrift/AreaPlc.cs
+++ b/shangjian/XGL.Thrift/AreaPlc.cs
@@ -195,6 +195,5 @@ public partial class AreaPlc : TBase
sb.Append(")");
return sb.ToString();
}
-
}
diff --git a/shangjian/XGL/obj/x86/Debug/CSS/DataGridClass.baml b/shangjian/XGL/obj/x86/Debug/CSS/DataGridClass.baml
index 8b935bd..5312b30 100644
Binary files a/shangjian/XGL/obj/x86/Debug/CSS/DataGridClass.baml and b/shangjian/XGL/obj/x86/Debug/CSS/DataGridClass.baml differ
diff --git a/shangjian/XGL/obj/x86/Debug/CSS/NormalSmlBtnClass.baml b/shangjian/XGL/obj/x86/Debug/CSS/NormalSmlBtnClass.baml
index 998b2b1..80c8075 100644
Binary files a/shangjian/XGL/obj/x86/Debug/CSS/NormalSmlBtnClass.baml and b/shangjian/XGL/obj/x86/Debug/CSS/NormalSmlBtnClass.baml differ
diff --git a/shangjian/XGL/obj/x86/Debug/CSS/SearchBtnClass.baml b/shangjian/XGL/obj/x86/Debug/CSS/SearchBtnClass.baml
index b26248d..8f18895 100644
Binary files a/shangjian/XGL/obj/x86/Debug/CSS/SearchBtnClass.baml and b/shangjian/XGL/obj/x86/Debug/CSS/SearchBtnClass.baml differ
diff --git a/shangjian/XGL/obj/x86/Debug/CSS/SearchTextClass.baml b/shangjian/XGL/obj/x86/Debug/CSS/SearchTextClass.baml
index 2126d3f..b4cc212 100644
Binary files a/shangjian/XGL/obj/x86/Debug/CSS/SearchTextClass.baml and b/shangjian/XGL/obj/x86/Debug/CSS/SearchTextClass.baml differ
diff --git a/shangjian/XGL/obj/x86/Debug/CSS/Style.baml b/shangjian/XGL/obj/x86/Debug/CSS/Style.baml
index 3d8ee4c..4f97f18 100644
Binary files a/shangjian/XGL/obj/x86/Debug/CSS/Style.baml and b/shangjian/XGL/obj/x86/Debug/CSS/Style.baml differ
diff --git a/shangjian/XGL/obj/x86/Debug/CSS/TabControl.baml b/shangjian/XGL/obj/x86/Debug/CSS/TabControl.baml
index 42a8e5a..26851e0 100644
Binary files a/shangjian/XGL/obj/x86/Debug/CSS/TabControl.baml and b/shangjian/XGL/obj/x86/Debug/CSS/TabControl.baml differ
diff --git a/shangjian/XGL/obj/x86/Debug/MainWindow.baml b/shangjian/XGL/obj/x86/Debug/MainWindow.baml
index 2d7a4b1..7d41e55 100644
Binary files a/shangjian/XGL/obj/x86/Debug/MainWindow.baml and b/shangjian/XGL/obj/x86/Debug/MainWindow.baml differ
diff --git a/shangjian/XGLFinishPro/App.config b/shangjian/XGLFinishPro/App.config
index 657dcc1..b2a72c2 100644
--- a/shangjian/XGLFinishPro/App.config
+++ b/shangjian/XGLFinishPro/App.config
@@ -10,7 +10,7 @@
-
+
diff --git a/shangjian/XGLFinishPro/Views/ExecReportWorkWin.xaml b/shangjian/XGLFinishPro/Views/ExecReportWorkWin.xaml
index f712e44..fe280d9 100644
--- a/shangjian/XGLFinishPro/Views/ExecReportWorkWin.xaml
+++ b/shangjian/XGLFinishPro/Views/ExecReportWorkWin.xaml
@@ -574,6 +574,11 @@
Binding="{Binding qty}"
Header="实际用量"
IsReadOnly="False" />
+
+
+
+
+
+
+
+
+
+
diff --git a/shangjian/XGLFinishPro/Views/InputNumberDialog.xaml.cs b/shangjian/XGLFinishPro/Views/InputNumberDialog.xaml.cs
new file mode 100644
index 0000000..57591f6
--- /dev/null
+++ b/shangjian/XGLFinishPro/Views/InputNumberDialog.xaml.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+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.Shapes;
+
+namespace XGLFinishPro.Views
+{
+ ///
+ /// InputNumberDialog.xaml 的交互逻辑
+ ///
+ public partial class InputNumberDialog : Window
+ {
+ public string InputValue { get; private set; }
+
+ public InputNumberDialog()
+ {
+ InitializeComponent();
+ }
+
+ private void BtnOk_Click(object sender, RoutedEventArgs e)
+ {
+ InputValue = txtNumber.Text;
+ DialogResult = true;
+ }
+
+ private void BtnCancel_Click(object sender, RoutedEventArgs e)
+ {
+ DialogResult = false;
+ }
+
+ private void txtNumber_PreviewTextInput(object sender, TextCompositionEventArgs e)
+ {
+ // 只允许输入数字
+ e.Handled = !Regex.IsMatch(e.Text, "^[0-9]+$");
+ }
+ }
+}
diff --git a/shangjian/XGLFinishPro/Views/LanJu_Check_Report.xaml b/shangjian/XGLFinishPro/Views/LanJu_Check_Report.xaml
index 5d3b0ad..d47be07 100644
--- a/shangjian/XGLFinishPro/Views/LanJu_Check_Report.xaml
+++ b/shangjian/XGLFinishPro/Views/LanJu_Check_Report.xaml
@@ -178,7 +178,7 @@
Margin="10"
Background="#2B7EE6"
Click="Submit_Click"
- Content="提交"
+ Content="保存"
FontSize="20"
Foreground="White" />
-
+
diff --git a/shangjian/XGLFinishPro/Views/LanJu_First_Inspection_Reprot.xaml b/shangjian/XGLFinishPro/Views/LanJu_First_Inspection_Reprot.xaml
index 658248a..2ce72f8 100644
--- a/shangjian/XGLFinishPro/Views/LanJu_First_Inspection_Reprot.xaml
+++ b/shangjian/XGLFinishPro/Views/LanJu_First_Inspection_Reprot.xaml
@@ -135,7 +135,7 @@
-
+
diff --git a/shangjian/XGLFinishPro/Views/LanJu_First_Inspection_Reprot.xaml.cs b/shangjian/XGLFinishPro/Views/LanJu_First_Inspection_Reprot.xaml.cs
index a7626c0..a45d540 100644
--- a/shangjian/XGLFinishPro/Views/LanJu_First_Inspection_Reprot.xaml.cs
+++ b/shangjian/XGLFinishPro/Views/LanJu_First_Inspection_Reprot.xaml.cs
@@ -93,172 +93,214 @@ namespace XGLFinishPro.Views
private void LoadData(bool addLine = false)
{
- isUpdate = true;
- list.Clear();
- DataTable dataTable = dbService.GetProOrderWorkorder(workId);
- if (dataTable != null && dataTable.Rows.Count > 0)
+ try
{
- //LProductName = dataTable.Rows[0]["product_name"].ToString();
- //this.RightProductName.Text = dataTable.Rows[0]["product_name"].ToString();
- product_code = dataTable.Rows[0]["product_code"].ToString();
- }
- var leftHearList = dbService.GetSelfCheckInfo("first_inspection_left").OrderBy(t => t.dict_sort).ToList();
- var leftMainList = dbService.GetSelfCheckInfo("first_inspection_left_info").OrderBy(t => t.dict_sort).ToList();
- var rightHearList = dbService.GetSelfCheckInfo("first_inspection_right").OrderBy(t => t.dict_sort).ToList();
- var rightMainList = dbService.GetSelfCheckInfo("first_inspection_right_info").OrderBy(t => t.dict_sort).ToList();
+ isUpdate = true;
+ list.Clear();
+ DataTable dataTable = dbService.GetProOrderWorkorder(workId);
+ if (dataTable == null || dataTable.Rows.Count == 0)
+ {
+ Console.WriteLine("[Error] 未获取到工单信息,workId: " + workId);
+ LogHelper.instance.log.Error("[Error] 未获取到工单信息,workId: " + workId);
+ }
+ else
+ {
+ if (dataTable.Rows.Count > 0)
+ {
+ product_code = dataTable.Rows[0]["product_code"].ToString();
+ }
+ }
+ var leftHearList = dbService.GetSelfCheckInfo("first_inspection_left").OrderBy(t => t.dict_sort).ToList();
+ if (leftHearList == null || !leftHearList.Any())
+ {
+ Console.WriteLine("[Error] 未获取到左侧检查信息。");
+ LogHelper.instance.log.Error("[Error] 未获取到左侧检查信息。");
+ }
+ var leftMainList = dbService.GetSelfCheckInfo("first_inspection_left_info").OrderBy(t => t.dict_sort).ToList();
+ if (leftMainList == null || !leftMainList.Any())
+ {
+ Console.WriteLine("[Error] 未获取到左侧主检查信息。");
+ LogHelper.instance.log.Error("[Error] 未获取到左侧主检查信息。");
+ }
+ var rightHearList = dbService.GetSelfCheckInfo("first_inspection_right").OrderBy(t => t.dict_sort).ToList();
+ if (rightHearList == null || !rightHearList.Any())
+ {
+ Console.WriteLine("[Error] 未获取到右侧检查信息。");
+ LogHelper.instance.log.Error("[Error] 未获取到右侧检查信息。");
+ }
+ var rightMainList = dbService.GetSelfCheckInfo("first_inspection_right_info").OrderBy(t => t.dict_sort).ToList();
+ if (rightMainList == null || !rightMainList.Any())
+ {
+ Console.WriteLine("[Error] 未获取到右侧主检查信息。");
+ LogHelper.instance.log.Error("[Error] 未获取到右侧主检查信息。");
+ }
- GetMesTableSeft();
- leftData = dbService.GetMesTableSelfDetial(leftbelong_to, 6);
- rightData = dbService.GetMesTableSelfDetial(rightbelong_to, 6);
- if (addLine)
- {
- int leftLine = leftData.Max(t => t.table_line) + 1;
- leftData.ForEach(t => { t.index++; });
- leftData.Insert(0, new MesTableSelfDetialModel() { index = 0 });
- leftData.RemoveAll(t => t.index == 6);
+ GetMesTableSeft();
+ leftData = dbService.GetMesTableSelfDetial(leftbelong_to, 6);
+ if (leftData == null || !leftData.Any())
+ {
+ Console.WriteLine("[Error] 未获取到左侧详细检查数据。");
+ LogHelper.instance.log.Error("[Error] 未获取到左侧详细检查数据。");
+ }
+ rightData = dbService.GetMesTableSelfDetial(rightbelong_to, 6);
+ if (rightData == null || !rightData.Any())
+ {
+ Console.WriteLine("[Error] 未获取到右侧详细检查数据。");
+ LogHelper.instance.log.Error("[Error] 未获取到右侧详细检查数据。");
+ }
- int rightLine = rightData.Max(t => t.table_line) + 1;
- rightData.ForEach(t => { t.index++; });
- rightData.Insert(0, new MesTableSelfDetialModel() { index = 0 });
- rightData.RemoveAll(t => t.index == 6);
- }
+ if (addLine)
+ {
+ int leftLine = leftData.Max(t => t.table_line) + 1;
+ leftData.ForEach(t => { t.index++; });
+ leftData.Insert(0, new MesTableSelfDetialModel() { index = 0 });
+ leftData.RemoveAll(t => t.index == 6);
+ int rightLine = rightData.Max(t => t.table_line) + 1;
+ rightData.ForEach(t => { t.index++; });
+ rightData.Insert(0, new MesTableSelfDetialModel() { index = 0 });
+ rightData.RemoveAll(t => t.index == 6);
+ }
+ for (var i = 0; i < 7; i++)
+ {
+ foreach (var item in leftHearList)
+ {
+ bool hasData = leftData.Where(t => t.index == i && t.info_name == item.dict_label).Any();
+ if (!hasData)
+ {
+ int tableLine = 0;
+ MesTableSelfDetialModel mesTableSelfDetialModel = leftData.Where(t => t.index == i).Where(t => t.table_line != 0).FirstOrDefault();
+ if (mesTableSelfDetialModel != null)
+ {
+ tableLine = mesTableSelfDetialModel.table_line;
+ }
+ else
+ {
+ try
+ {
+ tableLine = leftData.Max(t => t.table_line) + 1;
+ }
+ catch
+ {
- for (var i = 0; i < 7; i++)
- {
+ }
+ }
+ leftData.Add(new MesTableSelfDetialModel()
+ {
+ index = i,
+ table_line = tableLine,
+ info_name = item.dict_label,
+ info_code = leftHearList.FirstOrDefault(t => t.dict_label == item.dict_label)?.dict_code,
+ });
+ list.Add(new ConveterData()
+ {
+ label = item.dict_label,
+ value = MD5Provider.Hash(item.dict_label),
+ });
+ }
+ }
+
+ foreach (var item in rightHearList)
+ {
+ bool hasData = rightData.Where(t => t.index == i && t.info_name == item.dict_label).Any();
+ if (!hasData)
+ {
+ int tableLine = 0;
+ MesTableSelfDetialModel mesTableSelfDetialModel = rightData.Where(t => t.index == i).Where(t => t.table_line != 0).FirstOrDefault();
+ if (mesTableSelfDetialModel != null)
+ {
+ tableLine = mesTableSelfDetialModel.table_line;
+ }
+ else
+ {
+ try
+ {
+ tableLine = rightData.Max(t => t.table_line) + 1;
+ }
+ catch
+ {
+
+ }
+ }
+ rightData.Add(new MesTableSelfDetialModel()
+ {
+ index = i,
+ table_line = tableLine,
+ info_name = item.dict_label,
+ info_code = rightHearList.FirstOrDefault(t => t.dict_label == item.dict_label)?.dict_code,
+ });
+ list.Add(new ConveterData()
+ {
+ label = item.dict_label,
+ value = MD5Provider.Hash(item.dict_label),
+ });
+ }
+ }
+ }
+ var leftDic = new Dictionary>();
+ foreach (var item in leftData)
+ {
+ if (item.info_name == null || leftDic.Keys.Contains(item.info_name))
+ {
+ continue;
+ }
+ var mesTableSelfDetialModels = leftData.Where(t => t.info_name == item.info_name).ToList();
+ var dictionary = mesTableSelfDetialModels.ToDictionary(t => t.index);
+ leftDic.Add(item.info_name, dictionary);
+ }
+
+ var rightDic = new Dictionary>();
+ foreach (var item in rightData)
+ {
+ if (item.info_name == null || rightDic.Keys.Contains(item.info_name))
+ {
+ continue;
+ }
+ var mesTableSelfDetialModels = rightData.Where(t => t.info_name == item.info_name).ToList();
+ var dictionary = mesTableSelfDetialModels.ToDictionary(t => t.index);
+ rightDic.Add(item.info_name, dictionary);
+ }
+ list.ForEach(t => t.value.Remove(9, 11));
+ list.ForEach(t => t.value = t.value.Insert(0, "A"));
+ MakeHeaderData(this.Left);
+ //MakeHeaderData(this.Right);
+
+ var leftTypeDic = new Dictionary>();
foreach (var item in leftHearList)
{
- bool hasData = leftData.Where(t => t.index == i && t.info_name == item.dict_label).Any();
- if (!hasData)
+ var defaultDic = leftMainList.Where(t => string.IsNullOrEmpty(t.remark)).Select(t => t.dict_value).ToList();
+ var typeDic = leftMainList.Where(t => t.remark == item.dict_label).Select(t => t.dict_value).ToList();
+ defaultDic.AddRange(typeDic);
+ if (!leftTypeDic.ContainsKey(item.dict_label))
{
- int tableLine = 0;
- MesTableSelfDetialModel mesTableSelfDetialModel = leftData.Where(t => t.index == i).Where(t => t.table_line != 0).FirstOrDefault();
- if (mesTableSelfDetialModel != null)
- {
- tableLine = mesTableSelfDetialModel.table_line;
- }
- else
- {
- try
- {
- tableLine = leftData.Max(t => t.table_line) + 1;
- }
- catch
- {
-
- }
- }
- leftData.Add(new MesTableSelfDetialModel()
- {
- index = i,
- table_line = tableLine,
- info_name = item.dict_label,
- info_code = leftHearList.FirstOrDefault(t => t.dict_label == item.dict_label)?.dict_code,
- });
- list.Add(new ConveterData()
- {
- label = item.dict_label,
- value = MD5Provider.Hash(item.dict_label),
- });
+ leftTypeDic.Add(item.dict_label, defaultDic);
}
}
+ var rightTypeDic = new Dictionary>();
foreach (var item in rightHearList)
{
- bool hasData = rightData.Where(t => t.index == i && t.info_name == item.dict_label).Any();
- if (!hasData)
+ var defaultDic = rightMainList.Where(t => string.IsNullOrEmpty(t.remark)).Select(t => t.dict_value).ToList();
+ var typeDic = rightMainList.Where(t => t.remark == item.dict_label).Select(t => t.dict_value).ToList();
+ defaultDic.AddRange(typeDic);
+ if (!rightTypeDic.ContainsKey(item.dict_label))
{
- int tableLine = 0;
- MesTableSelfDetialModel mesTableSelfDetialModel = rightData.Where(t => t.index == i).Where(t => t.table_line != 0).FirstOrDefault();
- if (mesTableSelfDetialModel != null)
- {
- tableLine = mesTableSelfDetialModel.table_line;
- }
- else
- {
- try
- {
- tableLine = rightData.Max(t => t.table_line) + 1;
- }
- catch
- {
-
- }
- }
- rightData.Add(new MesTableSelfDetialModel()
- {
- index = i,
- table_line = tableLine,
- info_name = item.dict_label,
- info_code = rightHearList.FirstOrDefault(t => t.dict_label == item.dict_label)?.dict_code,
- });
- list.Add(new ConveterData()
- {
- label = item.dict_label,
- value = MD5Provider.Hash(item.dict_label),
- });
+ rightTypeDic.Add(item.dict_label, defaultDic);
}
}
+
+ MainValueData(this.Left, leftHearList, leftDic, leftTypeDic);
+ //MainValueData(this.Right, rightHearList, rightDic, rightTypeDic);
+
+ UpdateUi(this.Left);
+ //UpdateUi(this.Right);
+ isUpdate = false;
}
- var leftDic = new Dictionary>();
- foreach (var item in leftData)
+ catch (Exception ex)
{
- if (item.info_name == null || leftDic.Keys.Contains(item.info_name))
- {
- continue;
- }
- var mesTableSelfDetialModels = leftData.Where(t => t.info_name == item.info_name).ToList();
- var dictionary = mesTableSelfDetialModels.ToDictionary(t => t.index);
- leftDic.Add(item.info_name, dictionary);
+ LogHelper.instance.log.Error("[Error] 加载数据异常!" + ex.Message);
}
-
- var rightDic = new Dictionary>();
- foreach (var item in rightData)
- {
- if (item.info_name == null || rightDic.Keys.Contains(item.info_name))
- {
- continue;
- }
- var mesTableSelfDetialModels = rightData.Where(t => t.info_name == item.info_name).ToList();
- var dictionary = mesTableSelfDetialModels.ToDictionary(t => t.index);
- rightDic.Add(item.info_name, dictionary);
- }
- list.ForEach(t => t.value.Remove(9, 11));
- list.ForEach(t => t.value = t.value.Insert(0, "A"));
- MakeHeaderData(this.Left);
- //MakeHeaderData(this.Right);
-
- var leftTypeDic = new Dictionary>();
- foreach (var item in leftHearList)
- {
- var defaultDic = leftMainList.Where(t => string.IsNullOrEmpty(t.remark)).Select(t => t.dict_value).ToList();
- var typeDic = leftMainList.Where(t => t.remark == item.dict_label).Select(t => t.dict_value).ToList();
- defaultDic.AddRange(typeDic);
- if (!leftTypeDic.ContainsKey(item.dict_label))
- {
- leftTypeDic.Add(item.dict_label, defaultDic);
- }
- }
-
- var rightTypeDic = new Dictionary>();
- foreach (var item in rightHearList)
- {
- var defaultDic = rightMainList.Where(t => string.IsNullOrEmpty(t.remark)).Select(t => t.dict_value).ToList();
- var typeDic = rightMainList.Where(t => t.remark == item.dict_label).Select(t => t.dict_value).ToList();
- defaultDic.AddRange(typeDic);
- if (!rightTypeDic.ContainsKey(item.dict_label))
- {
- rightTypeDic.Add(item.dict_label, defaultDic);
- }
- }
-
- MainValueData(this.Left, leftHearList, leftDic, leftTypeDic);
- //MainValueData(this.Right, rightHearList, rightDic, rightTypeDic);
-
- UpdateUi(this.Left);
- //UpdateUi(this.Right);
- isUpdate = false;
}
private MesTableSelf leftmesTableSelf;
private void GetMesTableSeft()
@@ -871,6 +913,7 @@ namespace XGLFinishPro.Views
private void Submit_Click(object sender, RoutedEventArgs e)
{
+ bool isSuccess = false;
string isFinal = "0";
if (sender is Button button)
{
@@ -897,6 +940,7 @@ namespace XGLFinishPro.Views
});
foreach (var item in leftData)
{
+ int resultLeft = 0;
if (item.table_line == 0)
{
item.table_line = 1;
@@ -908,15 +952,21 @@ namespace XGLFinishPro.Views
var mesTableSelfDetialModel = tempLeftData.FirstOrDefault(t => t.id == item.id);
if (mesTableSelfDetialModel == null)
{
- dbService.InsertMesTableSelfDetial(item);
+ resultLeft = dbService.InsertMesTableSelfDetial(item);
+
}
else
{
- dbService.UpdateMesTableSelfDetial(item);
+ resultLeft = dbService.UpdateMesTableSelfDetial(item);
+ }
+ if (resultLeft > 0)
+ {
+ isSuccess = true;
}
}
foreach (var item in rightData)
{
+ int resultRight = 0;
if (item.table_line == 0)
{
item.table_line = 1;
@@ -928,16 +978,29 @@ namespace XGLFinishPro.Views
var mesTableSelfDetialModel = tempRightData.FirstOrDefault(t => t.id == item.id);
if (mesTableSelfDetialModel == null)
{
- dbService.InsertMesTableSelfDetial(item);
+ resultRight = dbService.InsertMesTableSelfDetial(item);
}
else
{
- dbService.UpdateMesTableSelfDetial(item);
+ resultRight = dbService.UpdateMesTableSelfDetial(item);
+ }
+ if (resultRight > 0)
+ {
+ isSuccess = true;
}
}
dbService.UpdateMesTableSelf(leftbelong_to, "", LoginUser.UserName, isFinal);
//dbService.UpdateMesTableSelf(rightbelong_to, "", LoginUser.UserName);
- MessageBox.Show("提交成功!");
+ if (isSuccess)
+ {
+ MessageBox.Show("保存成功!");
+ }
+ else
+ {
+ MessageBox.Show("保存失败!");
+ LogHelper.instance.log.Error("[Error] 保存失败!");
+ }
+
LoadData();
}
@@ -958,33 +1021,41 @@ namespace XGLFinishPro.Views
private void LeftCheckDate_SelectedDateChanged_1(object sender, SelectionChangedEventArgs e)
{
- this.date = this.LeftCheckDate.SelectedDate.Value.ToString("yyyy-MM-dd");
- DataTable dataTable = dbService.GetProOrderWorkorder(deviceCode, date);
- List orderWorks = new List();
- if (dataTable == null || dataTable.Rows.Count == 0)
+ try
{
- MessageBox.Show("没有查询到工单信息!");
- }
- else
- {
- foreach (DataRow row in dataTable.Rows)
+ this.date = this.LeftCheckDate.SelectedDate.Value.ToString("yyyy-MM-dd");
+ DataTable dataTable = dbService.GetProOrderWorkorder(deviceCode, date);
+ List orderWorks = new List();
+ if (dataTable == null || dataTable.Rows.Count == 0)
{
- if (orderWorks.Where(t => t.WorkName == row["product_name"].ToString()).Any())
- {
- continue;
- }
- orderWorks.Add(new OrderWork()
- {
- WorkId = row["workorder_id"].ToString(),
- WorkName = row["product_name"].ToString(),
- });
+ LogHelper.instance.log.Error("没有查询到工单信息!");
+ MessageBox.Show("没有查询到工单信息!");
}
+ else
+ {
+ foreach (DataRow row in dataTable.Rows)
+ {
+ if (orderWorks.Where(t => t.WorkName == row["product_name"].ToString()).Any())
+ {
+ continue;
+ }
+ orderWorks.Add(new OrderWork()
+ {
+ WorkId = row["workorder_id"].ToString(),
+ WorkName = row["product_name"].ToString(),
+ });
+ }
+ }
+ this.LeftProductName.ItemsSource = orderWorks.Distinct();
+ this.LeftProductName.Items.Refresh();
+ this.workId = string.Empty;
+ this.LProductName = string.Empty;
+ LoadData();
+ }
+ catch (Exception ex)
+ {
+ LogHelper.instance.log.Error("首检记录获取工单出现异常!" + ex.Message);
}
- this.LeftProductName.ItemsSource = orderWorks.Distinct();
- this.LeftProductName.Items.Refresh();
- this.workId = string.Empty;
- this.LProductName = string.Empty;
- LoadData();
}
private void LeftProductName_SelectionChanged(object sender, SelectionChangedEventArgs e)
diff --git a/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml b/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml
index d7c586b..f458539 100644
--- a/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml
+++ b/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml
@@ -527,6 +527,22 @@
Style="{StaticResource btnKey}"
Visibility="Collapsed" />
+
+
+
@@ -579,7 +595,7 @@
-
+
@@ -600,16 +616,16 @@
@@ -640,6 +656,10 @@
Width="100"
Binding="{Binding diffQty}"
Header="剩余数量" />
+
+
+
+
+
+ Height="300" />
diff --git a/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml.cs b/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml.cs
index e2e7db7..dfeea30 100644
--- a/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml.cs
+++ b/shangjian/XGLFinishPro/Views/LanJu_Operator.xaml.cs
@@ -15,6 +15,7 @@ using System.Threading.Tasks;
using System.Timers;
using System.Windows;
using System.Windows.Controls;
+using NLog;
using Xceed.Wpf.Toolkit.Primitives;
using XGL.Data;
using XGL.Data.DBService;
@@ -42,6 +43,12 @@ namespace XGLFinishPro.Views
public static LanJu_Operator lanJu_Operator;
Frame frame = new Frame() { Content = new Views.LanJu_InOut() };
string deviceCode = Utils.GetAppSetting("DeviceCode");
+ private List lineList = new List //用于过滤产线来写入PLC箱型尺寸
+ {
+ "XL01", "XL02", "XL03", "XL04", "XL05",
+ "XL06", "XL07", "XL08", "XL09", "XL10", "XL11"
+ };
+
Timer timerDeciveState = new Timer();
string _workOrderCode = "";
userDB usdb = new userDB();
@@ -434,8 +441,11 @@ namespace XGLFinishPro.Views
if (pauseOrderWin.ShowDialog() == true)
{
PauseRecoverOrderS(workordercode, "w2", pauseOrderWin);
- ProWorkBatchInWork("w2", dgWorkOrderInfo.SelectedItem as DataRowView, 2);
- //formingMachineService.UpdateWorkOrder(workordercode, "w2", pauseOrderWin.remark, pauseOrderWin.type, deviceCode);
+ ProWorkBatchInWork("w2", dgWorkOrderInfo.SelectedItem as DataRowView, 0);
+ // 添加写入PLC尺寸信息的逻辑
+ string materialCode = selectedRow["product_code"].ToString();
+ WritePlcBoxMessage(materialCode);
+
GetWorkOrderInfo();
}
@@ -667,6 +677,13 @@ namespace XGLFinishPro.Views
// CustomMessageBox.Show("请先校验用户!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
// return;
//}
+ bool connectResult = plc.Connection(PlcIp);
+ if (!connectResult)
+ {
+ LogHelper.instance.log.Info("PLC连接失败");
+ CustomMessageBox.Show("PLC连接失败无法开始工单!");
+ return;
+ }
if (dgWorkOrderInfo.SelectedItems.Count == 0)
{
CustomMessageBox.Show("请选择要开始的工单!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
@@ -734,7 +751,12 @@ namespace XGLFinishPro.Views
string materialDesc = (dgWorkOrderInfo.SelectedItem as DataRowView)["product_name"].ToString();
userDbWareHouse.InsertOperationLog(workorderID, "w2", "", "开始工单", deviceCode, materialCode, materialDesc);
ProWorkBatchInWork("w2", dgWorkOrderInfo.SelectedItem as DataRowView, 0);
- WritePlcBoxMessage(materialCode);
+ LogHelper.instance.log.Info("问题跟踪:设备编号是否为空:"+ deviceCode);
+ if (!string.IsNullOrEmpty(deviceCode) && lineList.Contains(deviceCode))
+ {
+ LogHelper.instance.log.Info("问题跟踪:尝试将箱型信息写给PLC"+ materialCode );
+ WritePlcBoxMessage(materialCode);
+ }
// await CallCheckApi("checkTypeSCXJ");20240403赵啸林因为切线方案调整,要求取消上位机生成巡检任务的功能;
GetWorkOrderInfo();
}
@@ -784,9 +806,11 @@ namespace XGLFinishPro.Views
if (type == 0)
{
batchCode = "";
+ LogHelper.instance.log.Info($"开始工单:" + lineCode + "," + batchCode + "," + workorderCode + "," + productCode + "," + productName + "," + productdescen + "," + boxType + "," + packType + "," + umrez + "," + status + "," + LoginUser.WorkDate);
if (!formingMachineService.UpdateProWorkBatchInWork(lineCode, batchCode, workorderCode, productCode, productName, productdescen, boxType, packType, umrez, status, LoginUser.WorkDate))
{
CustomMessageBox.Show("更新打印机表状态失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
+ LogHelper.instance.log.Info($"更新打印机表状态失败:" + CustomMessageBoxButton.OK +";"+ CustomMessageBoxIcon.Warning);
return false;
}
}
@@ -795,14 +819,16 @@ namespace XGLFinishPro.Views
if (!formingMachineService.UpdateProWorkBatchInWorkBatchCode(lineCode, batchCode, status, productCode, productName))
{
CustomMessageBox.Show("更新打印机表状态失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
+ LogHelper.instance.log.Info($"更新打印机表状态失败:" + CustomMessageBoxButton.OK + ";" + CustomMessageBoxIcon.Warning);
return false;
}
}
else if (type == 2)
{
- if (!formingMachineService.UpdateProWorkBatchInWorkStatus(lineCode, status))
+ if (!formingMachineService.UpdateProWorkBatchInWorkStatus(lineCode, status, packType))
{
CustomMessageBox.Show("更新打印机表状态失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
+ LogHelper.instance.log.Info($"更新打印机表状态失败:" + CustomMessageBoxButton.OK + ";" + CustomMessageBoxIcon.Warning);
return false;
}
}
@@ -967,6 +993,7 @@ namespace XGLFinishPro.Views
string quality = (dgWorkOrderInfo.SelectedItem as DataRowView)["quantity_split"].ToString();
string unit = (dgWorkOrderInfo.SelectedItem as DataRowView)["unit"].ToString();
string plan_time = (dgWorkOrderInfo.SelectedItem as DataRowView)["plan_time"].ToString();
+ plan_time = plan_time.Replace("/", "-");
//调用首件检验接口
string apiUrl = formingMachineService.GetInterfaceUrl("createCheckProduceTask");
FirstCheckModel firstCheck = new FirstCheckModel();
@@ -1150,7 +1177,12 @@ namespace XGLFinishPro.Views
// WritePlcBoxMessage(row["product_code"].ToString());
// }
//}
- ProWorkBatchInWork("w2", dgWorkOrderInfo.SelectedItem as DataRowView, 1);
+ if (ProWorkBatchInWork("w2", dgWorkOrderInfo.SelectedItem as DataRowView, 1))
+ {
+ DataRowView temp = dgWorkOrderInfo.SelectedItem as DataRowView;
+ var batchCode = temp["batch_code"].ToString();
+ LogHelper.instance.log.Info(DateTime.Now + $"已开始批次:" + batchCode);
+ }
}
else if (content == "结束")
{
@@ -1192,10 +1224,12 @@ namespace XGLFinishPro.Views
DataTable pointsDt = formingMachineService.GetWcsPlcPoint(plcPointNo, "ProductSize");
if (pointsDt == null || pointsDt.Rows.Count == 0)
{
+ LogHelper.instance.log.Info("问题跟踪:pointsDt为空或者数量为零");
return;
}
if (dt != null && dt.Rows.Count > 0)
{
+ LogHelper.instance.log.Info("问题跟踪:dt不为空" );
string heigh = dt.Rows[0]["height"].ToString();
string width = dt.Rows[0]["width"].ToString();
string length = dt.Rows[0]["length"].ToString();
@@ -1207,7 +1241,16 @@ namespace XGLFinishPro.Views
try
{
count++;
- plc.Connection(PlcIp);
+ //bool connectResult = plc.Connection(PlcIp);
+ //if (!connectResult)
+ //{
+ // LogHelper.instance.log.Info("问题跟踪:PLC连接失败");
+ //}
+ //else
+ //{
+
+ //}
+
if (pointsDt != null && pointsDt.Rows.Count > 0)
{
bool writeResult = false;
@@ -1240,11 +1283,19 @@ namespace XGLFinishPro.Views
if (writeResult)
{
- LogHelper.instance.log.Info($"写入PLC尺寸信息成功新高度{h},新宽度{w},新长度{l}");
+ LogHelper.instance.log.Info($"写入PLC尺寸信息成功,新高度{h},新宽度{w},新长度{l}");
+ Dispatcher.Invoke(() =>
+ {
+ CustomMessageBox.Show($"写入PLC尺寸信息成功,新高度{h},新宽度{w},新长度{l}");
+ });
}
else
{
LogHelper.instance.log.Info($"写入PLC尺寸信息失败!");
+ Dispatcher.Invoke(() =>
+ {
+ CustomMessageBox.Show($"写入PLC尺寸信息失败!");
+ });
}
}
isSuccess = writeResult;
@@ -1254,7 +1305,7 @@ namespace XGLFinishPro.Views
catch (Exception ex)
{
isSuccess = false;
- LogHelper.instance.log.Info($"写入PLC尺寸信息失败,第{count}次重试{ex}");
+ LogHelper.instance.log.Error($"写入PLC尺寸信息失败,第{count}次重试,异常信息:{ex.Message}", ex);
plc = new PlcHelper();
}
}
@@ -1267,9 +1318,9 @@ namespace XGLFinishPro.Views
}
}
}
- catch
+ catch(Exception ex)
{
-
+ LogHelper.instance.log.Info("问题跟踪异常:" + ex);
}
});
}
@@ -1283,6 +1334,48 @@ namespace XGLFinishPro.Views
IsWrite = false;
}
}
+
+ ///
+ /// 叫料按钮事件
+ ///
+ ///
+ ///
+ private async void btnCallMaterialRequest_Click(object sender, RoutedEventArgs e)
+ {
+ // 判断当前窗口内容是否为QitaoLvUC
+ if (Window1.Content is Frame frame && frame.Content is XGLFinishPro.Views.QitaoLvUC qitaoLvUC)
+ {
+ var selectedRow = qitaoLvUC.SelectedMaterialRow;
+ if (selectedRow == null)
+ {
+ CustomMessageBox.Show("请先选中一条领料记录!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
+ return;
+ }
+ // 组装数据
+ string materialCode = selectedRow["material_code"].ToString();
+ string materialName = selectedRow["material_name"].ToString();
+ string quantity = qitaoLvUC.InputQuantity ?? selectedRow["quantity"].ToString();
+ string locator = selectedRow["locator"].ToString();
+ // TODO: 这里根据实际需求组装更多字段
+
+ // 发送请求(伪代码,需替换为实际接口调用)
+ try
+ {
+ // 这里可以用HttpClient或RestHelper等工具发送请求
+ // var result = await SomeApiHelper.SendMaterialRequest(materialCode, materialName, quantity, locator);
+ // 假设成功
+ CustomMessageBox.Show($"叫料请求已发送!\n物料编码:{materialCode}\n物料名称:{materialName}\n数量:{quantity}\n库位:{locator}", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Success);
+ }
+ catch (Exception ex)
+ {
+ CustomMessageBox.Show($"叫料请求失败:{ex.Message}", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
+ }
+ }
+ else
+ {
+ CustomMessageBox.Show("请先点击领料单并选中一条记录!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
+ }
+ }
}
public class ReportWorkModel
{
diff --git a/shangjian/XGLFinishPro/Views/Lanju_Daily_Check_Report.xaml b/shangjian/XGLFinishPro/Views/Lanju_Daily_Check_Report.xaml
index 7a653a2..bcfa968 100644
--- a/shangjian/XGLFinishPro/Views/Lanju_Daily_Check_Report.xaml
+++ b/shangjian/XGLFinishPro/Views/Lanju_Daily_Check_Report.xaml
@@ -160,7 +160,7 @@
Margin="10"
Background="#2B7EE6"
Click="Submit_Click"
- Content="提交"
+ Content="保存"
FontSize="20"
Foreground="White" />
diff --git a/shangjian/XGLFinishPro/Views/QitaoLvUC.xaml b/shangjian/XGLFinishPro/Views/QitaoLvUC.xaml
index 2d47395..74a9404 100644
--- a/shangjian/XGLFinishPro/Views/QitaoLvUC.xaml
+++ b/shangjian/XGLFinishPro/Views/QitaoLvUC.xaml
@@ -39,7 +39,8 @@
AutoGenerateColumns="False"
FrozenColumnCount="1"
EnableColumnVirtualization="False"
- ScrollViewer.HorizontalScrollBarVisibility="Visible" IsReadOnly="True" CanUserAddRows="False">
+ ScrollViewer.HorizontalScrollBarVisibility="Visible" IsReadOnly="True" CanUserAddRows="False"
+ SelectionChanged="dgMaterialInfo_SelectionChanged">