|
|
|
@ -38,6 +38,7 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
private RfidHandleBusniess _RfidHandleBusniess;
|
|
|
|
|
private DatabaseHandleBusniess _databaseHandleBusniess;
|
|
|
|
|
private ProdPlanInfoService _prodPlanInfoService;
|
|
|
|
|
private ProdOrderInfoService _prodOrderInfoService;
|
|
|
|
|
private List<ProdPLanInfo> prodPlanInfos;
|
|
|
|
|
private ProdPlanDetailService _prodPlanDetailService;
|
|
|
|
|
private IRecordStaffAttendanceService _recordStaffAttendanceService;
|
|
|
|
@ -48,7 +49,7 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
private string ProcessCode;
|
|
|
|
|
public static bool isComplete = true;
|
|
|
|
|
public static string theStartTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//记录每个明细的开始时间
|
|
|
|
|
public static string intervalvalTime = "2023-11-11 00:00:00";
|
|
|
|
|
//public static string intervalvalTime = "2023-11-11 00:00:00";
|
|
|
|
|
public static int stations = 0;
|
|
|
|
|
private string theOrderCode = "";
|
|
|
|
|
private ProdPLanInfo pLanInfo;
|
|
|
|
@ -57,6 +58,7 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
private string executeText = "待执行";
|
|
|
|
|
private int isSearch = 0;
|
|
|
|
|
public static string lastReportTime;
|
|
|
|
|
private int refreshOrNot = 1;//是否刷新
|
|
|
|
|
//public static string batchNums = "";//批次
|
|
|
|
|
|
|
|
|
|
#region 定义命令
|
|
|
|
@ -95,6 +97,8 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
public delegate void RefreshDelegate(ProdPLanInfo pLanInfo);
|
|
|
|
|
public static event RefreshDelegate? RefreshEvent;
|
|
|
|
|
|
|
|
|
|
public static Action ClearOrderCodeAction;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 按钮文字转换事件
|
|
|
|
|
/// </summary>
|
|
|
|
@ -139,9 +143,16 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
public string MaterialCodeTextBox
|
|
|
|
|
{
|
|
|
|
|
get { return materialCodeTextBox; }
|
|
|
|
|
set { materialCodeTextBox = value; OnPropertyChanged("MaterialNameTextBox"); }
|
|
|
|
|
set { materialCodeTextBox = value; OnPropertyChanged("MaterialCodeTextBox"); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//private string materialNameTextBox;
|
|
|
|
|
//public string MaterialNameTextBox
|
|
|
|
|
//{
|
|
|
|
|
// get { return materialNameTextBox; }
|
|
|
|
|
// set { materialNameTextBox = value; OnPropertyChanged("MaterialNameTextBox"); }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 工位
|
|
|
|
|
/// </summary>
|
|
|
|
@ -201,7 +212,7 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 订单Text
|
|
|
|
|
/// </summary>
|
|
|
|
|
private string orderCodeText;
|
|
|
|
|
private string orderCodeText = string.Empty;
|
|
|
|
|
public string OrderCodeText
|
|
|
|
|
{
|
|
|
|
|
get { return orderCodeText; }
|
|
|
|
@ -257,12 +268,24 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
get { return batchNumbers; }
|
|
|
|
|
set { batchNumbers = value; OnPropertyChanged("BatchNumbers"); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 班长名
|
|
|
|
|
/// </summary>
|
|
|
|
|
private string currentMonitorName;
|
|
|
|
|
public string CurrentMonitorName
|
|
|
|
|
{
|
|
|
|
|
get { return currentMonitorName; }
|
|
|
|
|
set { currentMonitorName = value; OnPropertyChanged("CurrentMonitorName"); }
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
public ExecuteViewModel()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
_logger = App.ServiceProvider.GetService<ILogger<ExecuteViewModel>>();
|
|
|
|
|
_prodPlanInfoService = App.ServiceProvider.GetService<ProdPlanInfoService>();
|
|
|
|
|
_prodOrderInfoService = App.ServiceProvider.GetService<ProdOrderInfoService>();
|
|
|
|
|
_prodPlanDetailService = App.ServiceProvider.GetService<ProdPlanDetailService>();
|
|
|
|
|
_recordStaffAttendanceService = App.ServiceProvider.GetService<IRecordStaffAttendanceService>();
|
|
|
|
|
_recordStaffRealTimeService = App.ServiceProvider.GetService<IRecordStaffRealTimeService>();
|
|
|
|
@ -289,6 +312,12 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
{
|
|
|
|
|
updateStationName(stationName);
|
|
|
|
|
};
|
|
|
|
|
ProductionReportViewModel.RefrashClearAction += num =>
|
|
|
|
|
{
|
|
|
|
|
refreshOrNot = num;
|
|
|
|
|
Clear();
|
|
|
|
|
}
|
|
|
|
|
;
|
|
|
|
|
DeviceCode = configuration.GetSection("AppConfig")["DeviceCode"];
|
|
|
|
|
ProcessCode = configuration.GetSection("AppConfig")["ProcessCode"];
|
|
|
|
|
HandoverCommand = new RelayCommand(Handover);
|
|
|
|
@ -385,7 +414,11 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
reportWin.WindowStartupLocation = WindowStartupLocation.CenterScreen; // 让窗体出现在屏幕中央
|
|
|
|
|
reportWin.ShowDialog();//窗体出现后禁止后面的用户控件
|
|
|
|
|
Search();
|
|
|
|
|
Refresh(pLanInfo);
|
|
|
|
|
if (refreshOrNot == 1)
|
|
|
|
|
{
|
|
|
|
|
Refresh(pLanInfo);
|
|
|
|
|
}
|
|
|
|
|
refreshOrNot = 1;
|
|
|
|
|
ShowTeamMember();
|
|
|
|
|
if (stations >= 3)
|
|
|
|
|
{
|
|
|
|
@ -457,42 +490,46 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void HandleOrderCode(string orderCode)
|
|
|
|
|
{
|
|
|
|
|
theOrderCode = orderCode;
|
|
|
|
|
if (isComplete)
|
|
|
|
|
{
|
|
|
|
|
if (isSearch == 1)
|
|
|
|
|
var order = _prodOrderInfoService.GetProdOrderInfoByOrderCode(orderCode);
|
|
|
|
|
if (order != null)
|
|
|
|
|
{
|
|
|
|
|
//更新当前工单状态
|
|
|
|
|
_databaseHandleBusniess.UpdateOrderInfoStatus(orderCode,"1");
|
|
|
|
|
//判断当前工位的工单编号是否存在
|
|
|
|
|
var plan = _prodPlanInfoService.GetProdPLanInfoByOrderCode(RfidHandleBusniess.stationCode, orderCode);
|
|
|
|
|
if (plan == null)//不存在,就在生产工单表中新增一条当前工位的订单,且执行状态改为4,重新检索,并高亮这条工单,执行按钮可用
|
|
|
|
|
if (isSearch == 1)
|
|
|
|
|
{
|
|
|
|
|
foreach(var item in RfidHandleBusniess.stationList)
|
|
|
|
|
ClearOrderCodeAction?.Invoke();
|
|
|
|
|
//更新当前工单状态
|
|
|
|
|
_databaseHandleBusniess.UpdateOrderInfoStatus(order.OrderCode, "1");
|
|
|
|
|
//判断当前工位的工单编号是否存在
|
|
|
|
|
var plan = _prodPlanInfoService.GetProdPLanInfoByOrderCode(RfidHandleBusniess.stationCode, order.OrderCode);
|
|
|
|
|
if (plan == null)//不存在,就在生产工单表中新增一条当前工位的订单,且执行状态改为4,重新检索,并高亮这条工单,执行按钮可用
|
|
|
|
|
{
|
|
|
|
|
//现扫描一个订单码,同时插入三张(出布包胶成型)工单表
|
|
|
|
|
_databaseHandleBusniess.AddNewPlanInfo(orderCode, item , DeviceCode, ProcessCode, "0");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else//存在,将本条数据的执行状态改为4高亮这条工单,执行按钮可用
|
|
|
|
|
{
|
|
|
|
|
//判断这条工单状态是否为待执行或未执行
|
|
|
|
|
//var info = _databaseHandleBusniess.SelectPlanStatus(orderCode, RfidHandleBusniess.stationCode, DeviceCode, ProcessCode, "0");
|
|
|
|
|
if (plan.PlanStatus != "2")
|
|
|
|
|
{
|
|
|
|
|
_databaseHandleBusniess.UpdatePlanStatus(orderCode, RfidHandleBusniess.stationCode, DeviceCode, ProcessCode, "4");
|
|
|
|
|
foreach (var item in RfidHandleBusniess.stationList)
|
|
|
|
|
{
|
|
|
|
|
//现扫描一个订单码,同时插入三张(出布包胶成型)工单表
|
|
|
|
|
_databaseHandleBusniess.AddNewPlanInfo(order.OrderCode, item, DeviceCode, ProcessCode, "0");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
else//存在,将本条数据的执行状态改为4高亮这条工单,执行按钮可用
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("此工单已完成");
|
|
|
|
|
//判断这条工单状态是否为待执行或未执行
|
|
|
|
|
//var info = _databaseHandleBusniess.SelectPlanStatus(orderCode, RfidHandleBusniess.stationCode, DeviceCode, ProcessCode, "0");
|
|
|
|
|
if (plan.PlanStatus != "2")
|
|
|
|
|
{
|
|
|
|
|
_databaseHandleBusniess.UpdatePlanStatus(order.OrderCode, RfidHandleBusniess.stationCode, DeviceCode, ProcessCode, "4");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("此工单已完成");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Search();
|
|
|
|
|
}
|
|
|
|
|
Search();
|
|
|
|
|
}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// MessageBox.Show("请先检索工单!");
|
|
|
|
|
//}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("此订单不存在,请联系管理员!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -513,6 +550,9 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var Info = OrderCodeText.GetHashCode();
|
|
|
|
|
|
|
|
|
|
// 将当前记录存为实体,可以通过parameter获取当前记录的信息
|
|
|
|
|
string orderCode = _selectedRow.OrderCode.ToString();
|
|
|
|
|
string planCode = _selectedRow.PlanCode.ToString();
|
|
|
|
@ -521,6 +561,8 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
//BaseStaffInfo staffInfo = _baseStaffService.GetMonitorByTeamCode(currentRecord.TeamCode);
|
|
|
|
|
RecordStaffAttendance nextRecord = _recordStaffAttendanceService.GetLastestOffRecord();
|
|
|
|
|
// 向detail表里插入一条数据
|
|
|
|
|
//当前班长
|
|
|
|
|
var monitor = _databaseHandleBusniess.GetMonitor(RfidHandleBusniess.stationCode);
|
|
|
|
|
if (pLanInfo.CompleteAmount == "0.00")
|
|
|
|
|
{
|
|
|
|
|
ProdPlanDetail prodPlanDetail = new ProdPlanDetail
|
|
|
|
@ -529,7 +571,8 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
MaterialCode = pLanInfo.MaterialCode,
|
|
|
|
|
PlanAmount = pLanInfo.PlanAmount,
|
|
|
|
|
CompleteAmount = pLanInfo.CompleteAmount,
|
|
|
|
|
BeginTime = DateTime.Now.ToString(),
|
|
|
|
|
BeginTime = theStartTime,
|
|
|
|
|
CreatedBy = monitor.staffName
|
|
|
|
|
//CurrentStaffId = staffInfo.StaffId
|
|
|
|
|
//NextStaffId = nextRecord.StaffId,
|
|
|
|
|
};
|
|
|
|
@ -569,6 +612,7 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
OrderCodeText = pLanInfo.OrderCode;
|
|
|
|
|
MaterialNameText = pLanInfo.MaterialName;
|
|
|
|
|
StationCodeText = pLanInfo.StationCode;
|
|
|
|
|
//CurrentMonitorName = _baseStaffService.GetStaffInfoByStaffId(RfidHandleBusniess.staffId).StaffName;
|
|
|
|
|
System.Windows.Application.Current.Dispatcher.Invoke((Action)(async () =>
|
|
|
|
|
{
|
|
|
|
|
ProdPLanDetailDataGrid.Clear();
|
|
|
|
@ -590,6 +634,18 @@ namespace SlnMesnac.WPF.ViewModel
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 清空右边信息和明细
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void Clear()
|
|
|
|
|
{
|
|
|
|
|
PlanCodeText = "";
|
|
|
|
|
OrderCodeText = "";
|
|
|
|
|
MaterialNameText = "";
|
|
|
|
|
ProdPLanDetailDataGrid.Clear();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 显示班组成员
|
|
|
|
|
/// </summary>
|
|
|
|
|