@ -6,6 +6,7 @@ using System.Data;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
using System.Windows.Controls ;
using XGL.Models.Model.FoamingMac ;
namespace XGL.Data.DBService
@ -18,7 +19,7 @@ namespace XGL.Data.DBService
/// <param name="bdt"></param>
/// <param name="edt"></param>
/// <returns></returns>
public DataTable GetFormingMachineInfo ( string devicecode , string workDate )
public DataTable GetFormingMachineInfo ( string devicecode , string workDate )
{
//过于复杂,给数据库造成了压力,经常死锁
// string sql = $@"SELECT DISTINCT
@ -91,7 +92,7 @@ namespace XGL.Data.DBService
string sql = $@"select shift_id,shift_code,shift_desc,Shift_Start_Time,Shift_End_Time from base_shifts_t where del_flag ='0' " ;
DataSet dtset = Utils . netClientDBHelper . getDataSet ( sql ) ;
if ( dtset ! = null & & dtset . Tables . Count > 0 & & dtset . Tables [ 0 ] . Rows . Count > 0 )
{
return dtset . Tables [ 0 ] ;
@ -118,7 +119,7 @@ namespace XGL.Data.DBService
/// <param name="bdt"></param>
/// <param name="edt"></param>
/// <returns></returns>
public string getnumber ( string order , string devicecode , string shetl )
public string getnumber ( string order , string devicecode , string shetl )
{
string sql = $@"SELECT COUNT(*) FROM mes_material_transfer_result WHERE equipmentCode='{order}' and work_date='{devicecode}' and shift_id='{shetl}' and rfid_status='1'" ;
@ -158,7 +159,7 @@ namespace XGL.Data.DBService
/// <param name="bdt"></param>
/// <param name="edt"></param>
/// <returns></returns>
public DataTable GetInOutHistoryList ( string workOrderCode , string devicecode , string workDate )
public DataTable GetInOutHistoryList ( string workOrderCode , string devicecode , string workDate )
{
string sql = $ @ "SELECT DISTINCT ord.workorder_id,ord.workorder_code,res.OrderCode,ord.product_name,product_code,isnull(car_num,0) as car_num,
isnull ( [ begin ] , ' 1900 - 01 - 01 08 : 00 : 00 ' ) as [ begin ] , ord . status , ord . route_code , ord . attr1 , work_batch_code , res . taskcode , res . rfid , plan_time , res . update_time
@ -226,7 +227,7 @@ where res.taskcode = '0' and equipmentCode = 'C6' and res.OrderCode is not null
/// <param name="bdt"></param>
/// <param name="edt"></param>
/// <returns></returns>
public bool UpdateWorkOrder ( string orderCode , string status , string remark , string type , string deviceCode )
public bool UpdateWorkOrder ( string orderCode , string status , string remark , string type , string deviceCode )
{
List < string > sqlList = new List < string > ( ) ;
string logSql = "" ;
@ -253,10 +254,10 @@ where res.taskcode = '0' and equipmentCode = 'C6' and res.OrderCode is not null
sqlList . Add ( logSql ) ;
bool issucc = Utils . netClientDBHelper . executeBatchSql ( sqlList ) ;
return issucc ;
return issucc ;
}
/// <summary>
/// 更新工单
@ -313,14 +314,14 @@ VALUES
/// <param name="bdt"></param>
/// <param name="edt"></param>
/// <returns></returns>
public bool ExecuteReportWork ( DataRowView selectRow , string orderQuntity , string workCount , string reportCode , string workTime , string userCount , string costCenter , string batchCode , string isEndReport , string deviceCode )
public bool ExecuteReportWork ( DataRowView selectRow , string orderQuntity , string workCount , string reportCode , string workTime , string userCount , string costCenter , string batchCode , string isEndReport , string deviceCode )
{
string getReportCodeSql = $@"SELECT equipment_code,equipment_name FROM [dbo].[base_equipment] WHERE equipment_code='{deviceCode}'" ;
string lineName = "" ;
DataSet dtset = Utils . netClientDBHelper . getDataSet ( getReportCodeSql ) ;
if ( dtset ! = null & & dtset . Tables . Count > 0 & & dtset . Tables [ 0 ] . Rows . Count > 0 )
{
lineName = dtset . Tables [ 0 ] . Rows [ 0 ] [ "equipment_name" ] . ToString ( ) ;
lineName = dtset . Tables [ 0 ] . Rows [ 0 ] [ "equipment_name" ] . ToString ( ) ;
}
//获取子工单的信息
@ -329,15 +330,15 @@ VALUES
string subProductCode = "" ;
string subProductName = "" ;
string subQuntity = "" ;
string subUnit = "" ;
DataSet dtSubOrder = Utils . netClientDBHelper . getDataSet ( getSubOrderSql ) ;
string subUnit = "" ;
DataSet dtSubOrder = Utils . netClientDBHelper . getDataSet ( getSubOrderSql ) ;
if ( dtSubOrder ! = null & & dtSubOrder . Tables . Count > 0 & & dtSubOrder . Tables [ 0 ] . Rows . Count > 0 )
{
subOrder = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "workorder_code" ] . ToString ( ) ;
subProductCode = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "product_code" ] . ToString ( ) ;
subProductName = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "product_name" ] . ToString ( ) ;
subQuntity = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "quantity_split" ] . ToString ( ) ;
subUnit = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "unit" ] . ToString ( ) ;
subUnit = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "unit" ] . ToString ( ) ;
}
double rate = Convert . ToDouble ( workCount ) / Convert . ToDouble ( orderQuntity ) ;
@ -400,10 +401,10 @@ VALUES
'无' , ' { workTime } ' , ' { deviceCode } ' , ' { lineName } ' , N ' { LoginUser . TeamCode } ' , ' { selectRow [ "shift_id" ] } ' ,
NULL , NULL , NULL , NULL , ' { LoginUser . UserName } ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' ,
' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , GetDate ( ) , '0' , NULL , ' prod ' ,
{ userCount } , ' { costCenter } ',' 0 ',' { batchCode } ',' { isEndReport } ',' { selectRow [ "parent_order" ] } ' ) ; ";
{ userCount } , ' { costCenter } ',' 0 ',' { batchCode } ',' { isEndReport } ',' { selectRow [ "parent_order" ] } ' ) ; ";
sqlList . Add ( mainOrderSql ) ;
}
//赵啸林说不用上位机更新报工标识
//string updateOrderSql = $@"update pro_order_workorder set status = 'w3', update_by = '{LoginUser.UserName}',update_time = GETDATE() where workorder_id = '{selectRow["workorder_id"]}' ";
//sqlList.Add(sql);
@ -427,7 +428,7 @@ VALUES
/// <param name="bdt"></param>
/// <param name="edt"></param>
/// <returns></returns>
public List < string > GetExecuteReportWorkSql ( DataRowView selectRow , string orderQuntity , string workCount , string reportCode , string workTime , string userCount , string costCenter , string batchCode , string isEndReport , string deviceCode )
public List < string > GetExecuteReportWorkSql ( DataRowView selectRow , string orderQuntity , string workCount , string reportCode , string workTime , string userCount , string costCenter , string batchCode , string isEndReport , string deviceCode , string fatherOrderUserCount )
{
string getReportCodeSql = $@"SELECT equipment_code,equipment_name FROM [dbo].[base_equipment] WHERE equipment_code='{deviceCode}'" ;
string lineName = "" ;
@ -437,6 +438,7 @@ VALUES
lineName = dtset . Tables [ 0 ] . Rows [ 0 ] [ "equipment_name" ] . ToString ( ) ;
}
#region 生成报工数据
//获取子工单的信息
string getSubOrderSql = $"select workorder_code,product_code,product_name,quantity_split,unit from pro_order_workorder where parent_order = '{selectRow[" workorder_code "]}'" ;
string subOrder = "" ;
@ -470,12 +472,12 @@ VALUES
[use_man] , [ work_center ] , [ del_flag ] , [ batch ] , [ end_report ] , [ parent_order ] , [ IP ] , [ version ] )
VALUES
( ' { Common . GetUUID ( ) } ' , ' SELF ' , ' { reportCode } ' , ' { selectRow [ "workorder_code" ] } ' , ' { selectRow [ "product_code" ] } ' , ' { selectRow [ "product_name" ] } ' ,
' { selectRow [ "product_spc" ] } ' , ' { selectRow [ "unit" ] } ' , { workCount } , { workCount } , 0 , 0 ,
' { selectRow [ "product_spc" ] } ' , ' { selectRow [ "unit" ] } ' , { selectRow[ "batch_quantity" ] } , { workCount } , 0 , 0 ,
' { LoginUser . UserCode } ' , ' { LoginUser . UserName } ' , ' PC ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , ' PREPARE ' ,
'无' , ' { workTime } ' , ' { deviceCode } ' , ' { lineName } ' , N ' { LoginUser . TeamCode } ' , ' { selectRow [ "shift_id" ] } ' ,
NULL , NULL , NULL , NULL , ' { LoginUser . UserName } ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' ,
' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , '0' , NULL , ' prod ' ,
{ u serCount} , ' { costCenter } ',' 0 ',' { batchCode } ',' { isEndReport } ',' { 0 } ',' { LoginUser . CurrDeviceIP } ',' { LoginUser . Version } ' ) ; ";
{ fatherOrderU serCount} , ' { costCenter } ',' 0 ',' { batchCode } ',' { isEndReport } ',' { 0 } ',' { LoginUser . CurrDeviceIP } ',' { LoginUser . Version } ' ) ; ";
string subOrderSql = $ @ "INSERT INTO [dbo].[mes_report_work]
( [ id ] , [ report_type ] , [ report_code ] , [ workorder_code ] , [ product_code ] , [ product_name ] ,
@ -487,7 +489,7 @@ VALUES
[use_man] , [ work_center ] , [ del_flag ] , [ batch ] , [ end_report ] , [ parent_order ] , [ IP ] , [ version ] )
VALUES
( ' { Common . GetUUID ( ) } ' , ' SELF ' , ' { reportCode } ' , ' { subOrder } ' , ' { subProductCode } ' , ' { subProductName } ' ,
' { selectRow [ "product_spc" ] } ' , ' { subUnit } ' , { s ubOrderQty } , { subOrderQty } , 0 , 0 ,
' { selectRow [ "product_spc" ] } ' , ' { subUnit } ' , { s electRow[ "batch_quantity" ] } , { subOrderQty } , 0 , 0 ,
' { LoginUser . UserCode } ' , ' { LoginUser . UserName } ' , ' PC ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , ' PREPARE ' ,
'无' , ' { workTime } ' , ' { deviceCode } ' , ' { lineName } ' , N ' { LoginUser . TeamCode } ' , ' { selectRow [ "shift_id" ] } ' ,
NULL , NULL , NULL , NULL , ' { LoginUser . UserName } ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' ,
@ -509,7 +511,7 @@ VALUES
[use_man] , [ work_center ] , [ del_flag ] , [ batch ] , [ end_report ] , [ parent_order ] , [ IP ] , [ version ] )
VALUES
( ' { Common . GetUUID ( ) } ' , ' SELF ' , ' { reportCode } ' , ' { selectRow [ "workorder_code" ] } ' , ' { selectRow [ "product_code" ] } ' , ' { selectRow [ "product_name" ] } ' ,
' { selectRow [ "product_spc" ] } ' , ' { selectRow [ "unit" ] } ' , { workCount } , { workCount } , 0 , 0 ,
' { selectRow [ "product_spc" ] } ' , ' { selectRow [ "unit" ] } ' , { selectRow[ "batch_quantity" ] } , { workCount } , 0 , 0 ,
' { LoginUser . UserCode } ' , ' { LoginUser . UserName } ' , ' PC ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , ' PREPARE ' ,
'无' , ' { workTime } ' , ' { deviceCode } ' , ' { lineName } ' , N ' { LoginUser . TeamCode } ' , ' { selectRow [ "shift_id" ] } ' ,
NULL , NULL , NULL , NULL , ' { LoginUser . UserName } ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' ,
@ -517,26 +519,250 @@ VALUES
{ userCount } , ' { costCenter } ',' 0 ',' { batchCode } ',' { isEndReport } ',' { selectRow [ "parent_order" ] } ',' { LoginUser . CurrDeviceIP } ',' { LoginUser . Version } ' ) ; ";
sqlList . Add ( mainOrderSql ) ;
}
# endregion
//赵啸林说不用上位机更新报工标识
//string updateOrderSql = $@"update pro_order_workorder set status = 'w3', update_by = '{LoginUser.UserName}',update_time = GETDATE() where workorder_id = '{selectRow["workorder_id"]}' ";
//sqlList.Add(sql);
//sqlList.Add(updateOrderSql);
//赵啸林又说sap有问题, 需要上位机修改报工标识2023-12-25,仅在最终报工时,才更新此状态
#region 最终报工,更新工单状态为已报工
//赵啸林又说sap有问题, 需要上位机修改报工标识2023-12-25,但仅在最终报工时,才更新此状态
if ( isEndReport . Equals ( "1" ) )
{
string updateOrderSql = $@"update pro_order_workorder set status = 'w3', update_by = '{LoginUser.UserName}',update_time = GETDATE() where belong_work_order = '{selectRow[" workorder_code "]}' " ;
//更新订单状态为已报工;
string updateOrderSql = $@"update pro_order_workorder set status = 'w3', update_by = '{LoginUser.UserName}',update_time = GETDATE() where belong_work_order = '{selectRow[" workorder_code "]}' " ;
sqlList . Add ( updateOrderSql ) ;
}
//修改报工逻辑, 最终报工时添加子母工单领料单状态更新2024-02-20
if ( subOrder ! = "" ) //有子单
{
//更新子单状态
string updateSubOrderPrepareSql = $"update mes_prepare set status = 'L1' where workorder_code = '{subOrder}'" ;
//更新母单状态
string updateMainOrderPrepareSql = $"update mes_prepare set status = 'L1' where workorder_code = '{selectRow[" workorder_code "]}'" ;
sqlList . Add ( updateSubOrderPrepareSql ) ;
sqlList . Add ( updateMainOrderPrepareSql ) ;
}
else //无子单
{
//更新母单状态
string updateMainOrderPrepareSql = $"update mes_prepare set status = 'L1' where workorder_code = '{selectRow[" workorder_code "]}'" ;
sqlList . Add ( updateMainOrderPrepareSql ) ;
}
}
# endregion
#region 批次报工状态更新
//添加批次报工状态更新--2023-12-26
string updateBatchOrderStatusSql = $@"update pro_order_workorder_batch set status = '0', update_by = '{LoginUser.UserName}',update_time = GETDATE() where workorder_id = '{selectRow[" workorder_id "]}' and batch_code = '{batchCode}' " ;
sqlList . Add ( updateBatchOrderStatusSql ) ;
# endregion
return sqlList ; //> 0 ? true : false;
}
/// <summary>
/// 新版报工
/// </summary>
/// <param name="bdt"></param>
/// <param name="edt"></param>
/// <returns></returns>
public List < string > GetExecuteReportWorkSql ( DataRowView selectRow , string orderQuntity , string workCount , string reportCode , string workTime , string userCount , string costCenter , string batchCode ,
string isEndReport , string deviceCode , Dictionary < int , string > workTimeDic , Dictionary < int , string > userCountDic )
{
string getReportCodeSql = $@"SELECT equipment_code,equipment_name FROM [dbo].[base_equipment] WHERE equipment_code='{deviceCode}'" ;
string lineName = "" ;
DataSet dtset = Utils . netClientDBHelper . getDataSet ( getReportCodeSql ) ;
if ( dtset ! = null & & dtset . Tables . Count > 0 & & dtset . Tables [ 0 ] . Rows . Count > 0 )
{
lineName = dtset . Tables [ 0 ] . Rows [ 0 ] [ "equipment_name" ] . ToString ( ) ;
}
#region 生成报工数据
//获取子工单的信息
string getSubOrderSql = $"select workorder_code,product_code,product_name,quantity_split,unit from pro_order_workorder where parent_order = '{selectRow[" workorder_code "]}'" ;
string subOrder = "" ;
//string subProductCode = "";
//string subProductName = "";
//string subQuntity = "";
//string subUnit = "";
DataSet dtSubOrder = Utils . netClientDBHelper . getDataSet ( getSubOrderSql ) ;
if ( dtSubOrder ! = null & & dtSubOrder . Tables . Count > 0 & & dtSubOrder . Tables [ 0 ] . Rows . Count > 0 )
{
subOrder = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "workorder_code" ] . ToString ( ) ;
//subProductCode = dtSubOrder.Tables[0].Rows[0]["product_code"].ToString();
//subProductName = dtSubOrder.Tables[0].Rows[0]["product_name"].ToString();
//subQuntity = dtSubOrder.Tables[0].Rows[0]["quantity_split"].ToString();
//subUnit = dtSubOrder.Tables[0].Rows[0]["unit"].ToString();
}
//double rate = Convert.ToDouble(workCount) / Convert.ToDouble(orderQuntity);
//double subOrderQty = rate * Convert.ToDouble(subQuntity);
List < string > sqlList = new List < string > ( ) ;
//有子单
if ( subOrder ! = "" )
{
string mainOrderSql = $ @ "INSERT INTO [dbo].[mes_report_work]
( [ id ] , [ report_type ] , [ report_code ] , [ workorder_code ] , [ product_code ] , [ product_name ] ,
[spec] , [ unit ] , [ quantity ] , [ quantity_feedback ] , [ quantity_qualified ] , [ quantity_unqualified ] ,
[user_name] , [ nick_name ] , [ feedback_channel ] , [ feedback_time ] , [ record_user ] , [ status ] ,
[remark] , [ work_time ] , [ machine_code ] , [ machine_name ] , [ team_code ] , [ shift_code ] ,
[attr1] , [ attr2 ] , [ attr3 ] , [ attr4 ] , [ create_by ] , [ create_time ] ,
[update_time] , [ update_by ] , [ upload_status ] , [ upload_msg ] , [ prod_type ] ,
[use_man] , [ work_center ] , [ del_flag ] , [ batch ] , [ end_report ] , [ parent_order ] , [ IP ] , [ version ] )
VALUES
( ' { Common . GetUUID ( ) } ' , ' SELF ' , ' { reportCode } ' , ' { selectRow [ "workorder_code" ] } ' , ' { selectRow [ "product_code" ] } ' , ' { selectRow [ "product_name" ] } ' ,
' { selectRow [ "product_spc" ] } ' , ' { selectRow [ "unit" ] } ' , { selectRow [ "batch_quantity" ] } , { workCount } , 0 , 0 ,
' { LoginUser . UserCode } ' , ' { LoginUser . UserName } ' , ' PC ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , ' PREPARE ' ,
'无' , ' { workTime } ' , ' { deviceCode } ' , ' { lineName } ' , N ' { LoginUser . TeamCode } ' , ' { selectRow [ "shift_id" ] } ' ,
NULL , NULL , NULL , NULL , ' { LoginUser . UserName } ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' ,
' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , '0' , NULL , ' prod ' ,
{ userCount } , ' { costCenter } ',' 0 ',' { batchCode } ',' { isEndReport } ',' { 0 } ',' { LoginUser . CurrDeviceIP } ',' { LoginUser . Version } ' ) ; ";
foreach ( string item in GetAllWorkReportsForOrderAndChildren ( selectRow [ "workorder_code" ] . ToString ( ) , selectRow , orderQuntity , reportCode , costCenter , batchCode ,
isEndReport , deviceCode , lineName , workCount , workTimeDic , userCountDic , 0 ) )
{
sqlList . Add ( item ) ;
}
//string subOrderSql = $@"INSERT INTO [dbo].[mes_report_work]
// ([id], [report_type], [report_code], [workorder_code], [product_code], [product_name],
// [spec], [unit], [quantity], [quantity_feedback], [quantity_qualified], [quantity_unqualified],
// [user_name], [nick_name], [feedback_channel], [feedback_time], [record_user], [status],
// [remark], [work_time], [machine_code], [machine_name], [team_code], [shift_code],
// [attr1], [attr2], [attr3], [attr4], [create_by], [create_time],
// [update_time], [update_by], [upload_status], [upload_msg], [prod_type],
// [use_man], [work_center],[del_flag],[batch],[end_report],[parent_order],[IP],[version])
// VALUES
// ('{Common.GetUUID()}', 'SELF', '{reportCode}', '{subOrder}', '{subProductCode}', '{subProductName}',
// '{selectRow["product_spc"]}', '{subUnit}', {selectRow["batch_quantity"]}, {subOrderQty}, 0, 0,
// '{LoginUser.UserCode}', '{LoginUser.UserName}', 'PC', '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}', '{LoginUser.UserName}', 'PREPARE',
// '无', '{workTime}', '{deviceCode}', '{lineName}', N'{LoginUser.TeamCode}', '{selectRow["shift_id"]}',
// NULL, NULL, NULL, NULL, '{LoginUser.UserName}', '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}',
// '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}', '{LoginUser.UserName}', '0', NULL, 'prod',
// {userCount}, '{costCenter}','0','{batchCode}','{isEndReport}','{selectRow["workorder_code"]}','{LoginUser.CurrDeviceIP}','{LoginUser.Version}');";
sqlList . Add ( mainOrderSql ) ;
//sqlList.Add(subOrderSql);
}
else
{
//无子单
string mainOrderSql = $ @ "INSERT INTO [dbo].[mes_report_work]
( [ id ] , [ report_type ] , [ report_code ] , [ workorder_code ] , [ product_code ] , [ product_name ] ,
[spec] , [ unit ] , [ quantity ] , [ quantity_feedback ] , [ quantity_qualified ] , [ quantity_unqualified ] ,
[user_name] , [ nick_name ] , [ feedback_channel ] , [ feedback_time ] , [ record_user ] , [ status ] ,
[remark] , [ work_time ] , [ machine_code ] , [ machine_name ] , [ team_code ] , [ shift_code ] ,
[attr1] , [ attr2 ] , [ attr3 ] , [ attr4 ] , [ create_by ] , [ create_time ] ,
[update_time] , [ update_by ] , [ upload_status ] , [ upload_msg ] , [ prod_type ] ,
[use_man] , [ work_center ] , [ del_flag ] , [ batch ] , [ end_report ] , [ parent_order ] , [ IP ] , [ version ] )
VALUES
( ' { Common . GetUUID ( ) } ' , ' SELF ' , ' { reportCode } ' , ' { selectRow [ "workorder_code" ] } ' , ' { selectRow [ "product_code" ] } ' , ' { selectRow [ "product_name" ] } ' ,
' { selectRow [ "product_spc" ] } ' , ' { selectRow [ "unit" ] } ' , { selectRow [ "batch_quantity" ] } , { workCount } , 0 , 0 ,
' { LoginUser . UserCode } ' , ' { LoginUser . UserName } ' , ' PC ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , ' PREPARE ' ,
'无' , ' { workTime } ' , ' { deviceCode } ' , ' { lineName } ' , N ' { LoginUser . TeamCode } ' , ' { selectRow [ "shift_id" ] } ' ,
NULL , NULL , NULL , NULL , ' { LoginUser . UserName } ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' ,
' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , '0' , NULL , ' prod ' ,
{ userCount } , ' { costCenter } ',' 0 ',' { batchCode } ',' { isEndReport } ',' { selectRow [ "parent_order" ] } ',' { LoginUser . CurrDeviceIP } ',' { LoginUser . Version } ' ) ; ";
sqlList . Add ( mainOrderSql ) ;
}
# endregion
//赵啸林说不用上位机更新报工标识
//string updateOrderSql = $@"update pro_order_workorder set status = 'w3', update_by = '{LoginUser.UserName}',update_time = GETDATE() where workorder_id = '{selectRow["workorder_id"]}' ";
//sqlList.Add(sql);
//sqlList.Add(updateOrderSql);
#region 最终报工,更新工单状态为已报工
//赵啸林又说sap有问题, 需要上位机修改报工标识2023-12-25,但仅在最终报工时,才更新此状态
if ( isEndReport . Equals ( "1" ) )
{
//更新订单状态为已报工;
string updateOrderSql = $@"update pro_order_workorder set status = 'w3', update_by = '{LoginUser.UserName}',update_time = GETDATE() where belong_work_order = '{selectRow[" workorder_code "]}' " ;
sqlList . Add ( updateOrderSql ) ;
//修改报工逻辑, 最终报工时添加子母工单领料单状态更新2024-02-20
if ( subOrder ! = "" ) //有子单
{
//更新子单状态
string updateSubOrderPrepareSql = $"update mes_prepare set status = 'L1' where workorder_code = '{subOrder}'" ;
//更新母单状态
string updateMainOrderPrepareSql = $"update mes_prepare set status = 'L1' where workorder_code = '{selectRow[" workorder_code "]}'" ;
sqlList . Add ( updateSubOrderPrepareSql ) ;
sqlList . Add ( updateMainOrderPrepareSql ) ;
}
else //无子单
{
//更新母单状态
string updateMainOrderPrepareSql = $"update mes_prepare set status = 'L1' where workorder_code = '{selectRow[" workorder_code "]}'" ;
sqlList . Add ( updateMainOrderPrepareSql ) ;
}
}
# endregion
#region 批次报工状态更新
//添加批次报工状态更新--2023-12-26
string updateBatchOrderStatusSql = $@"update pro_order_workorder_batch set status = '0', update_by = '{LoginUser.UserName}',update_time = GETDATE() where workorder_id = '{selectRow[" workorder_id "]}' and batch_code = '{batchCode}' " ;
sqlList . Add ( updateBatchOrderStatusSql ) ;
# endregion
return sqlList ; //> 0 ? true : false;
}
List < string > workReports = new List < string > ( ) ;
public List < string > GetAllWorkReportsForOrderAndChildren ( string orderId , DataRowView selectRow , string orderQuntity , string reportCode , string costCenter , string batchCode ,
string isEndReport , string deviceCode , string lineName , string workCount , Dictionary < int , string > workTimeDic , Dictionary < int , string > userCountDic , int sortNo )
{
//获取子工单的信息
string getSubOrderSql = $"select workorder_code,product_code,product_name,quantity_split,unit from pro_order_workorder where parent_order = '{orderId}'" ;
string subOrder = "" ;
string subProductCode = "" ;
string subProductName = "" ;
string subQuntity = "" ;
string subUnit = "" ;
DataSet dtSubOrder = Utils . netClientDBHelper . getDataSet ( getSubOrderSql ) ;
if ( dtSubOrder ! = null & & dtSubOrder . Tables . Count > 0 & & dtSubOrder . Tables [ 0 ] . Rows . Count > 0 )
{
subOrder = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "workorder_code" ] . ToString ( ) ;
subProductCode = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "product_code" ] . ToString ( ) ;
subProductName = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "product_name" ] . ToString ( ) ;
subQuntity = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "quantity_split" ] . ToString ( ) ;
subUnit = dtSubOrder . Tables [ 0 ] . Rows [ 0 ] [ "unit" ] . ToString ( ) ;
double rate = Convert . ToDouble ( workCount ) / Convert . ToDouble ( orderQuntity ) ;
double subOrderQty = rate * Convert . ToDouble ( subQuntity ) ;
string subOrderSql = $ @ "INSERT INTO [dbo].[mes_report_work]
( [ id ] , [ report_type ] , [ report_code ] , [ workorder_code ] , [ product_code ] , [ product_name ] ,
[spec] , [ unit ] , [ quantity ] , [ quantity_feedback ] , [ quantity_qualified ] , [ quantity_unqualified ] ,
[user_name] , [ nick_name ] , [ feedback_channel ] , [ feedback_time ] , [ record_user ] , [ status ] ,
[remark] , [ work_time ] , [ machine_code ] , [ machine_name ] , [ team_code ] , [ shift_code ] ,
[attr1] , [ attr2 ] , [ attr3 ] , [ attr4 ] , [ create_by ] , [ create_time ] ,
[update_time] , [ update_by ] , [ upload_status ] , [ upload_msg ] , [ prod_type ] ,
[use_man] , [ work_center ] , [ del_flag ] , [ batch ] , [ end_report ] , [ parent_order ] , [ IP ] , [ version ] )
VALUES
( ' { Common . GetUUID ( ) } ' , ' SELF ' , ' { reportCode } ' , ' { subOrder } ' , ' { subProductCode } ' , ' { subProductName } ' ,
' { selectRow [ "product_spc" ] } ' , ' { subUnit } ' , { selectRow [ "batch_quantity" ] } , { subOrderQty } , 0 , 0 ,
' { LoginUser . UserCode } ' , ' { LoginUser . UserName } ' , ' PC ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , ' PREPARE ' ,
'无' , ' { workTimeDic [ sortNo ] } ' , ' { deviceCode } ' , ' { lineName } ' , N ' { LoginUser . TeamCode } ' , ' { selectRow [ "shift_id" ] } ' ,
NULL , NULL , NULL , NULL , ' { LoginUser . UserName } ' , ' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' ,
' { DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ' , ' { LoginUser . UserName } ' , '0' , NULL , ' prod ' ,
{ userCountDic [ sortNo ] } , ' { costCenter } ',' 0 ',' { batchCode } ',' { isEndReport } ',' { selectRow [ "workorder_code" ] } ',' { LoginUser . CurrDeviceIP } ',' { LoginUser . Version } ' ) ; ";
workReports . Add ( subOrderSql ) ;
sortNo + + ;
GetAllWorkReportsForOrderAndChildren ( subOrder , selectRow , orderQuntity , reportCode , costCenter , batchCode , isEndReport , deviceCode , lineName , subQuntity , workTimeDic , userCountDic , sortNo ) ;
}
return workReports ;
}
public bool ChangeShiftsInfo ( string deviceCode )
{
/ /
@ -555,7 +781,7 @@ VALUES
/// <param name="selectedRow"></param>
/// <param name="newReportCode"></param>
/// <param name="siteCode"></param>
public bool InsertConsumeInfo ( string qty , string remark , DataRowView selectedRow , string newReportCode , string siteCode , string recoil , string parentOrder )
public bool InsertConsumeInfo ( string qty , string remark , DataRowView selectedRow , string newReportCode , string siteCode , string recoil , string parentOrder )
{
string sql = $ @ " INSERT INTO [dbo].[mes_report_work_consume]
( [ record_id ] , [ workorder_code ] , [ material_code ] , [ material_name ] , [ material_spc ] ,
@ -578,7 +804,7 @@ VALUES
return ret > 0 ? true : false ;
}
public bool InsertConsumeInfo ( DataRowView selectedConsumeRow , string newReportCode , string siteCode )
public bool InsertConsumeInfo ( 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 ] ,
@ -610,6 +836,33 @@ VALUES
return sql ;
}
public DataTable GetFatherOrderUserCount ( string orderCode )
{
string sql = $@"SELECT top 1 use_man FROM [dbo].[mes_report_work] where workorder_code = '{orderCode}' order by create_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 GetSubOrderCount ( string orderCode )
{
//获取子工单的信息
string getSubOrderSql = $"select workorder_code,product_code,product_name,quantity_split,unit from pro_order_workorder where parent_order = '{orderCode}'" ;
DataSet dtSubOrder = Utils . netClientDBHelper . getDataSet ( getSubOrderSql ) ;
if ( dtSubOrder ! = null & & dtSubOrder . Tables . Count > 0 & & dtSubOrder . Tables [ 0 ] . Rows . Count > 0 )
{
return dtSubOrder . Tables [ 0 ] ;
}
return null ;
}
/// <summary>
/// 根据设备编码获取当前机台最新的吊满的RFID信息
/// </summary>