You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1762 lines
69 KiB
C#

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using MaterialTraceability.Business;
using MaterialTraceability.Business.Impl;
using MaterialTraceability.Entity.DAO;
using MaterialTraceability.Entity.DTO;
using MaterialTraceability.SqlSugar;
using MaterialTraceability.SqlSugar.ServiceImpl;
using MaterialTraceability.WebService;
using MaterialTraceability.WebService.MiBatchCompleteSfcAndAdujustQtyServiceService;
using MaterialTraceability.WebService.MiFirstOperationForsfcServiceService;
using MaterialTraceability.WebService.MiSignOffSFCsServiceService;
using MaterialTraceability.WebService.Param;
using MaterialTraceabilityUI.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
namespace MaterialTraceabilityUI
{
/// <summary>
/// UpMaterialRecord.xaml 的交互逻辑
/// </summary>
public partial class TBAlarmRecord : UserControl
{
private IMesWebServices MesWebServices = new MesWebServicesImpl();
/// <summary>
/// INIFile配置文件
/// </summary>
private IniFileHelper inifile = new IniFileHelper(System.Environment.CurrentDirectory + "/MesConfig/App.InI");
private IBaseServices<ProDownRecord> downRecordServices = new BaseServices<ProDownRecord>();
private ProDownRecordDto downRecordInfo = new ProDownRecordDto();
private IBaseServices<SysClient> sysClientServices = new BaseServices<SysClient>();
private UpLoadBusiness upLoadBusiness = UpLoadBusiness.Instance;
private AppConfigDto appConfig = AppConfigDto.Instance;
public TBAlarmRecord()
{
InitializeComponent();
TBSignalReadBusiness.TBAlarmRecordRefreshEvent += refreshDataGrid;
this.beginTime.Text = DateTime.Now.ToLongDateString();
this.endTime.Text = DateTime.Now.AddDays(1).ToLongDateString();
//List<String> isAlarm = new List<string>() { "正在生产", "异常下料", "" };
//this.productionStatusComboBox.ItemsSource = isAlarm;
}
/// <summary>
/// 刷新异常处理流程列表信息
/// </summary>
public void refreshDataGrid()
{
Action action;
action = () =>
{
Expression<Func<ProDownRecord, bool>> exp = s1 => true;
Expression<Func<ProDownRecord, object>> order = x => x.beginTime;
List<ProDownRecord> proUpRecords = downRecordServices.Query(exp, order, false).Result;
List<ProDownRecordDto> proDownRecordDtos = new List<ProDownRecordDto>();
proUpRecords.ForEach(x =>
{
proDownRecordDtos.Add(new ProDownRecordDto()
{
Id = proUpRecords.IndexOf(x).ToString(),
MachineId = x.MachineId,
PositionId = x.PositionId,
Rfid = x.Rfid,
Sfc = x.Sfc,
eaValue = x.eaValue,
IsProduction = x.IsProduction,
ProductionFlag = productionStatus((int)x.IsProduction),
isFinish = x.isFinish,
RecordTime = x.RecordTime,
beginTime = x.beginTime,
endTime = x.endTime
});
});
this.AlarmInfoDataGrid.ItemsSource = proDownRecordDtos;
};
this.AlarmInfoDataGrid.Dispatcher.BeginInvoke(action);
}
private void Seach_Click(object sender, RoutedEventArgs e)
{
Refresh();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
this.membraneLength.Text = GetSysConfigList("SysConfig").Where(x => x.paramKey == "membraneLength").FirstOrDefault().paramValue;
this.volumesNumber.Text = GetSysConfigList("SysConfig").Where(x => x.paramKey == "volumesNumber").FirstOrDefault().paramValue;
Refresh();
}
public void Refresh()
{
this.membraneLength.Text = GetSysConfigList("SysConfig").Where(x => x.paramKey == "membraneLength").FirstOrDefault().paramValue;
this.volumesNumber.Text = GetSysConfigList("SysConfig").Where(x => x.paramKey == "volumesNumber").FirstOrDefault().paramValue;
Expression<Func<ProDownRecord, bool>> exp = s1 => true;
//exp = exp.And(x => x.IsProduction != 2);
if (this.beginTime.Text.ToString() != "")
{
DateTime beginTime = Convert.ToDateTime(this.beginTime.Text.ToString());
exp = exp.And(x => Convert.ToDateTime(x.RecordTime) >= beginTime);
}
if (this.endTime.Text.ToString() != "")
{
DateTime endTime = Convert.ToDateTime(this.endTime.Text.ToString());
exp = exp.And(x => Convert.ToDateTime(x.RecordTime) <= endTime);
}
if (this.rfidText.Text.ToString() != "")
{
exp = exp.And(x => x.Rfid == this.rfidText.Text.ToString());
}
if (this.sfcText.Text.ToString() != "")
{
exp = exp.And(x => x.Sfc == this.sfcText.Text.ToString());
}
if (Convert.ToString(this.productionStatusComboBox.SelectedItem) != "")
{
ComboBoxItem proStr = (ComboBoxItem)this.productionStatusComboBox.SelectedItem;
if (proStr.Content.ToString() != null && proStr.Content.ToString() != "")
{
exp = exp.And(x => x.IsProduction == GetProductionStatus(proStr.Content.ToString()));
}
}
Expression<Func<ProDownRecord, object>> order = x => x.beginTime;
List<ProDownRecord> proUpRecords = downRecordServices.Query(exp, order, false).Result;
List<ProDownRecordDto> proDownRecordDtos = new List<ProDownRecordDto>();
proUpRecords.ForEach(x =>
{
proDownRecordDtos.Add(new ProDownRecordDto()
{
Id = proUpRecords.IndexOf(x).ToString(),
MachineId = x.MachineId,
PositionId = x.PositionId,
Rfid = x.Rfid,
Sfc = x.Sfc,
eaValue = x.eaValue,
IsProduction = x.IsProduction,
ProductionFlag = productionStatus((int)x.IsProduction),
isFinish = x.isFinish,
RecordTime = x.RecordTime,
beginTime = x.beginTime,
endTime = x.endTime
});
});
this.AlarmInfoDataGrid.ItemsSource = proDownRecordDtos;
}
private int GetProductionStatus(string selectedItem)
{
int production = 0;
switch (selectedItem)
{
case "正在生产":
production = 0;
break;
case "正在完工":
production = 1;
break;
case "已完工":
production = 2;
break;
case "正在下料中":
production = 3;
break;
}
return production;
}
private string productionStatus(int production)
{
if (production == 0)
{
return "正在生产";
}
if (production == 1)
{
return "正在完工";
}
if (production == 2)
{
return "已完工";
}
if (production == 3)
{
return "正在下料中";
}
return production.ToString();
}
/// <summary>
/// 注销SFC
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CancelSfc_MouseDown(object sender, MouseButtonEventArgs e)
{
ProDownRecordDto downRecord = (ProDownRecordDto)this.AlarmInfoDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("请选择异常数据");
return;
}
if (downRecord.isFinish >= 1)
{
MessageBox.Show("该结束流程已成功注销SFC");
return;
}
LogHelperBusiness.LogInfo("调用MES注销SFC接口");
MiSignOffSFCsServiceServiceParam miSignOffSFCsServiceServiceParam = new MiSignOffSFCsServiceServiceParam()
{
url = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "url"),
site = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "site"),
user = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "user"),
operation = appConfig.operationByA,
operationRevision = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "operationRevision"),
activityId = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "activityId"),
Resource = appConfig.resource,
amount = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "amount"),
sfcDataArray = null,
sfc = downRecord.Sfc,
};
DateTime beginTime = DateTime.Now;
try
{
LogHelperBusiness.LogInfo("调用MES注销SFC接口,请求参数:" + JsonChange.ModeToJson(miSignOffSFCsServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
miSignOffSFCsResponse signOffSFCsResponse = MesWebServices.iMiSignOffSFCsServiceService(miSignOffSFCsServiceServiceParam);
LogHelperBusiness.LogInfo("调用MES注销SFC接口,返回参数:" + JsonChange.ModeToJson(signOffSFCsResponse));
if (signOffSFCsResponse.@return.code > 0)
{
if (signOffSFCsResponse.@return.code == 13900)
{
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 1, downRecord.eaValue);
ProcessStatus(1, true);
Refresh();
return;
}
else
{
MessageBox.Show("注销SFC接口调用失败" + upLoadBusiness.GetMesMessage(signOffSFCsResponse.@return.code, signOffSFCsResponse.@return.message));
ProcessStatus(1, false);
Refresh();
return;
}
}
}
}
catch (Exception ex)
{
ProcessStatus(1, false);
Refresh();
MessageBox.Show("注销SFC接口调用异常" + ex.Message);
return;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 1, downRecord.eaValue);
ProcessStatus(1, true);
Refresh();
return;
}
private bool CancelSfcFunction(ProDownRecordDto downRecord)
{
LogHelperBusiness.LogInfo("调用MES注销SFC接口");
MiSignOffSFCsServiceServiceParam miSignOffSFCsServiceServiceParam = new MiSignOffSFCsServiceServiceParam()
{
url = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "url"),
site = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "site"),
user = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "user"),
operation = appConfig.operationByA,
operationRevision = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "operationRevision"),
activityId = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "activityId"),
Resource = appConfig.resource,
amount = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "amount"),
sfcDataArray = null,
sfc = downRecord.Sfc,
};
DateTime beginTime = DateTime.Now;
try
{
LogHelperBusiness.LogInfo("调用MES注销SFC接口,请求参数:" + JsonChange.ModeToJson(miSignOffSFCsServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
miSignOffSFCsResponse signOffSFCsResponse = MesWebServices.iMiSignOffSFCsServiceService(miSignOffSFCsServiceServiceParam);
LogHelperBusiness.LogInfo("调用MES注销SFC接口,返回参数:" + JsonChange.ModeToJson(signOffSFCsResponse));
if (signOffSFCsResponse.@return.code > 0)
{
if (signOffSFCsResponse.@return.code == 13900)
{
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 1, downRecord.eaValue);
ProcessStatus(1, true);
return true;
}
else
{
MessageBox.Show("注销SFC接口调用失败" + upLoadBusiness.GetMesMessage(signOffSFCsResponse.@return.code, signOffSFCsResponse.@return.message));
ProcessStatus(1, false);
return false;
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("注销SFC接口调用异常" + ex.Message);
ProcessStatus(1, false);
return false;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 1, downRecord.eaValue);
ProcessStatus(1, true);
return true;
}
/// <summary>
/// 调整A面数量
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AdjustFaceA_MouseDown(object sender, MouseButtonEventArgs e)
{
ProDownRecordDto downRecord = (ProDownRecordDto)this.AlarmInfoDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("请选择异常数据");
return;
}
if (downRecord.isFinish >= 2)
{
MessageBox.Show("该结束流程已成功调整A面数量");
return;
}
else
{
if (downRecord.isFinish < 1)
{
MessageBox.Show("调整A面数量前还有流程未处理");
return;
}
}
LogHelperBusiness.LogInfo("调用MES调整A面数量接口");
MiBatchCompleteSfcAndAdujustQtyServiceServiceParam miBatchCompleteSfcAndAdujustQtyServiceServiceParam = new MiBatchCompleteSfcAndAdujustQtyServiceServiceParam()
{
url = inifile.IniReadValue("AdujustQtyParam", "url"),
site = inifile.IniReadValue("AdujustQtyParam", "site"),
sfcPre = downRecord.Sfc,
processLotPre = "",
operation = appConfig.operationByA,
operationRevision = inifile.IniReadValue("AdujustQtyParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("AdujustQtyParam", "user"),
activity = inifile.IniReadValue("AdujustQtyParam", "activity"),
modeProcessSfc = ModeProcessSfc.MODE_NONE,
sfcList = new miBatchCompleteSfcAndAdujustQtySfcEntity[]
{
new miBatchCompleteSfcAndAdujustQtySfcEntity()
{
processLot = downRecord.Rfid,
sfc = "",
qty = downRecord.eaValue.ToString(),
unit = "EA"
}
}
};
DateTime beginTime = DateTime.Now;
try
{
LogHelperBusiness.LogInfo("调用MES调整A面数量接口请求参数" + JsonChange.ModeToJson(miBatchCompleteSfcAndAdujustQtyServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
var requestResult = MesWebServices.iMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam);
LogHelperBusiness.LogInfo("调用MES调整A面数量接口返回参数" + JsonChange.ModeToJson(requestResult));
if (requestResult.@return.code > 0)
{
MessageBox.Show("A面数量调整失败" + upLoadBusiness.GetMesMessage(requestResult.@return.code, requestResult.@return.message));
ProcessStatus(2, false);
Refresh();
return;
}
}
}
catch (Exception ex)
{
MessageBox.Show("A面数量调整异常" + ex.Message);
WebServiceLog.saveMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam, null, beginTime, ex.Message);
ProcessStatus(2, false);
Refresh();
return;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 2, downRecord.eaValue);
ProcessStatus(2, true);
Refresh();
}
private bool AdjustFaceAFunction(ProDownRecordDto downRecord)
{
LogHelperBusiness.LogInfo("调用MES调整A面数量接口");
MiBatchCompleteSfcAndAdujustQtyServiceServiceParam miBatchCompleteSfcAndAdujustQtyServiceServiceParam = new MiBatchCompleteSfcAndAdujustQtyServiceServiceParam()
{
url = inifile.IniReadValue("AdujustQtyParam", "url"),
site = inifile.IniReadValue("AdujustQtyParam", "site"),
sfcPre = downRecord.Sfc,
processLotPre = "",
operation = appConfig.operationByA,
operationRevision = inifile.IniReadValue("AdujustQtyParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("AdujustQtyParam", "user"),
activity = inifile.IniReadValue("AdujustQtyParam", "activity"),
modeProcessSfc = ModeProcessSfc.MODE_NONE,
sfcList = new miBatchCompleteSfcAndAdujustQtySfcEntity[]
{
new miBatchCompleteSfcAndAdujustQtySfcEntity()
{
processLot = downRecord.Rfid,
sfc = "",
qty = downRecord.eaValue.ToString(),
unit = "EA"
}
}
};
DateTime beginTime = DateTime.Now;
try
{
LogHelperBusiness.LogInfo("调用MES调整A面数量接口请求参数" + JsonChange.ModeToJson(miBatchCompleteSfcAndAdujustQtyServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
var requestResult = MesWebServices.iMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam);
LogHelperBusiness.LogInfo("调用MES调整A面数量接口返回参数" + JsonChange.ModeToJson(requestResult));
if (requestResult.@return.code > 0)
{
MessageBox.Show("A面数量调整失败" + upLoadBusiness.GetMesMessage(requestResult.@return.code, requestResult.@return.message));
ProcessStatus(2, false);
return false;
}
}
}
catch (Exception ex)
{
MessageBox.Show("A面数量调整异常" + ex.Message);
WebServiceLog.saveMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam, null, beginTime, ex.Message);
ProcessStatus(2, false);
return false;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 2, downRecord.eaValue);
ProcessStatus(2, true);
return true;
}
/// <summary>
/// A面开始
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BeginFaceA_MouseDown(object sender, MouseButtonEventArgs e)
{
ProDownRecordDto downRecord = (ProDownRecordDto)this.AlarmInfoDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("请选择异常数据");
return;
}
if (downRecord.isFinish >= 3)
{
MessageBox.Show("该结束流程A面已成功入账开始");
return;
}
else
{
if (downRecord.isFinish < 2)
{
MessageBox.Show("A面入账开始前还有流程未处理");
return;
}
}
LogHelperBusiness.LogInfo("调用MES A面入账开始接口");
MiFirstOperationForsfcServiceServiceParam miFirstOperationForsfcServiceServiceParam = new MiFirstOperationForsfcServiceServiceParam()
{
url = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "url"),
site = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "site"),
sfc = downRecord.Sfc,
processLot = "",
operation = appConfig.operationByA,
operationRevision = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "user"),
activity = "",
modeProcessSfc = "MODE_START_SFC",
};
try
{
LogHelperBusiness.LogInfo("调用MES A面入账开始接口请求参数" + JsonChange.ModeToJson(miFirstOperationForsfcServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
miFirstOperationForsfcResponse firstOperationForsfcResponse = MesWebServices.iMiFirstOperationForsfcServiceService(miFirstOperationForsfcServiceServiceParam);
LogHelperBusiness.LogInfo("调用MES A面入账开始接口返回参数" + JsonChange.ModeToJson(firstOperationForsfcResponse));
if (firstOperationForsfcResponse.@return.code > 0)
{
ProcessStatus(3, false);
Refresh();
MessageBox.Show("调用A面入账接口失败" + upLoadBusiness.GetMesMessage(firstOperationForsfcResponse.@return.code, firstOperationForsfcResponse.@return.message));
return;
}
}
}
catch (Exception ex)
{
MessageBox.Show("调用A面入账接口异常" + ex.Message);
ProcessStatus(3, false);
Refresh();
return;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 3, downRecord.eaValue);
ProcessStatus(3, true);
Refresh();
return;
}
private bool BeginFaceAFunction(ProDownRecordDto downRecord)
{
LogHelperBusiness.LogInfo("调用MES A面入账开始接口");
MiFirstOperationForsfcServiceServiceParam miFirstOperationForsfcServiceServiceParam = new MiFirstOperationForsfcServiceServiceParam()
{
url = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "url"),
site = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "site"),
sfc = downRecord.Sfc,
processLot = "",
operation = appConfig.operationByA,
operationRevision = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "user"),
activity = "",
modeProcessSfc = "MODE_START_SFC",
};
try
{
LogHelperBusiness.LogInfo("调用MES A面入账开始接口请求参数" + JsonChange.ModeToJson(miFirstOperationForsfcServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
miFirstOperationForsfcResponse firstOperationForsfcResponse = MesWebServices.iMiFirstOperationForsfcServiceService(miFirstOperationForsfcServiceServiceParam);
LogHelperBusiness.LogInfo("调用MES A面入账开始接口返回参数" + JsonChange.ModeToJson(firstOperationForsfcResponse));
if (firstOperationForsfcResponse.@return.code > 0)
{
MessageBox.Show("调用A面入账接口失败" + upLoadBusiness.GetMesMessage(firstOperationForsfcResponse.@return.code, firstOperationForsfcResponse.@return.message));
ProcessStatus(3, false);
Refresh();
return false;
}
}
}
catch (Exception ex)
{
MessageBox.Show("调用A面入账接口异常" + ex.Message);
ProcessStatus(3, false);
Refresh();
return false;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 3, downRecord.eaValue);
ProcessStatus(3, true);
return true;
}
/// <summary>
/// A面收集数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CollectFaceA_MouseDown(object sender, MouseButtonEventArgs e)
{
LogHelperBusiness.LogInfo("A面收集数据物料消耗");
if (this.downRecordInfo != null)
{
if (FinishFaceAFunction(this.downRecordInfo))
{
ProcessStatus(4, true);
}
else
{
ProcessStatus(4, false);
return;
}
//B面自动入账开始
if (BeginFaceBFunction(this.downRecordInfo))
{
ProcessStatus(5, true);
}
else
{
ProcessStatus(5, false);
return;
}
}
else
{
MessageBox.Show("获取数据为空");
}
}
/// <summary>
/// A面完工
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FinishFaceA_MouseDown(object sender, MouseButtonEventArgs e)
{
ProDownRecordDto downRecord = (ProDownRecordDto)this.AlarmInfoDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("请选择异常数据");
return;
}
if (downRecord.isFinish >= 3)
{
MessageBox.Show("该结束流程A面已完工");
return;
}
else
{
if (downRecord.isFinish < 3)
{
MessageBox.Show("A面完工前还有流程未处理");
return;
}
}
FinishFaceAFunction(downRecord);
}
private bool FinishFaceAFunction(ProDownRecordDto downRecord)
{
LogHelperBusiness.LogInfo("调用A面完工接口");
MiBatchCompleteSfcAndAdujustQtyServiceServiceParam miBatchCompleteSfcAndAdujustQtyServiceServiceParam = new MiBatchCompleteSfcAndAdujustQtyServiceServiceParam()
{
url = inifile.IniReadValue("AdujustQtyParam", "url"),
site = inifile.IniReadValue("AdujustQtyParam", "site"),
sfcPre = "",
processLotPre = downRecord.Rfid,
operation = appConfig.operationByA,
operationRevision = inifile.IniReadValue("AdujustQtyParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("AdujustQtyParam", "user"),
activity = inifile.IniReadValue("AdujustQtyParam", "activity"),
modeProcessSfc = ModeProcessSfc.MODE_COMPLETE_SFC_POST_DC, //冷压MODE_COMPLETE_SFC_POST_DC、模切MODE_COMPLETE_SFC_POST_DC
sfcList = new miBatchCompleteSfcAndAdujustQtySfcEntity[]
{
new miBatchCompleteSfcAndAdujustQtySfcEntity()
{
processLot = downRecord.Rfid,
sfc = "",
qty = downRecord.eaValue.ToString(),
unit = "EA"
}
}
};
DateTime beginTime = DateTime.Now;
try
{
LogHelperBusiness.LogInfo("调用A面完工接口请求参数" + JsonChange.ModeToJson(miBatchCompleteSfcAndAdujustQtyServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
var requestResult = MesWebServices.iMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam);
LogHelperBusiness.LogInfo("调用A面完工接口返回参数" + JsonChange.ModeToJson(requestResult));
if (requestResult.@return.code > 0)
{
MessageBox.Show("调用A面完工接口失败" + upLoadBusiness.GetMesMessage(requestResult.@return.code, requestResult.@return.message));
ProcessStatus(4, false);
return false;
}
}
}
catch (Exception ex)
{
MessageBox.Show("调用A面完工接口异常" + ex.Message);
ProcessStatus(4, false);
return false;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 4, downRecord.eaValue);
ProcessStatus(4, true);
return true;
}
/// <summary>
/// B面开始
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BeginFaceB_MouseDown(object sender, MouseButtonEventArgs e)
{
ProDownRecordDto downRecord = (ProDownRecordDto)this.AlarmInfoDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("请选择异常数据");
return;
}
if (downRecord.isFinish >= 5)
{
MessageBox.Show("该结束流程B面已入账开始");
return;
}
else
{
if (downRecord.isFinish < 3)
{
MessageBox.Show("B面入账开始前还有流程未处理");
return;
}
}
MiFirstOperationForsfcServiceServiceParam miFirstOperationForsfcServiceServiceParam = new MiFirstOperationForsfcServiceServiceParam()
{
url = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "url"),
site = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "site"),
sfc = downRecord.Sfc,
processLot = "",
operation = appConfig.operationByB,
operationRevision = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "user"),
activity = "",
modeProcessSfc = "MODE_START_SFC",
};
DateTime beginTime = DateTime.Now;
try
{
if (appConfig.isMesFlag == 1)
{
miFirstOperationForsfcResponse firstOperationForsfcResponse = MesWebServices.iMiFirstOperationForsfcServiceService(miFirstOperationForsfcServiceServiceParam);
WebServiceLog.saveMiFirstOperationForsfcServiceService(miFirstOperationForsfcServiceServiceParam, firstOperationForsfcResponse, beginTime, "");
if (firstOperationForsfcResponse.@return.code > 0)
{
ProcessStatus(5, false);
Refresh();
return;
}
}
}
catch (Exception ex)
{
WebServiceLog.saveMiFirstOperationForsfcServiceService(miFirstOperationForsfcServiceServiceParam, null, beginTime, ex.Message);
ProcessStatus(5, false);
Refresh();
return;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 5, downRecord.eaValue);
ProcessStatus(5, true);
Refresh();
return;
}
private bool BeginFaceBFunction(ProDownRecordDto downRecord)
{
LogHelperBusiness.LogInfo("调用MES B面开始接口");
MiFirstOperationForsfcServiceServiceParam miFirstOperationForsfcServiceServiceParam = new MiFirstOperationForsfcServiceServiceParam()
{
url = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "url"),
site = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "site"),
sfc = downRecord.Sfc,
processLot = "",
operation = appConfig.operationByB,
operationRevision = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "user"),
activity = "",
modeProcessSfc = "MODE_START_SFC",
};
DateTime beginTime = DateTime.Now;
try
{
LogHelperBusiness.LogInfo("调用MES B面开始接口请求参数" + JsonChange.ModeToJson(miFirstOperationForsfcServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
miFirstOperationForsfcResponse firstOperationForsfcResponse = MesWebServices.iMiFirstOperationForsfcServiceService(miFirstOperationForsfcServiceServiceParam);
LogHelperBusiness.LogInfo("调用MES B面开始接口返回参数" + JsonChange.ModeToJson(firstOperationForsfcResponse));
WebServiceLog.saveMiFirstOperationForsfcServiceService(miFirstOperationForsfcServiceServiceParam, firstOperationForsfcResponse, beginTime, "");
if (firstOperationForsfcResponse.@return.code > 0)
{
MessageBox.Show("调用MES B面开始接口失败" + upLoadBusiness.GetMesMessage(firstOperationForsfcResponse.@return.code, firstOperationForsfcResponse.@return.message));
ProcessStatus(5, false);
return false;
}
}
}
catch (Exception ex)
{
MessageBox.Show("调用MES B面开始接口异常" + ex.Message);
WebServiceLog.saveMiFirstOperationForsfcServiceService(miFirstOperationForsfcServiceServiceParam, null, beginTime, ex.Message);
ProcessStatus(5, false);
return false;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 5, downRecord.eaValue);
ProcessStatus(5, true);
return true;
}
/// <summary>
/// B面收集数据物料消耗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CollectFaceB_MouseDown(object sender, MouseButtonEventArgs e)
{
LogHelperBusiness.LogInfo("B面收集数据物料消耗");
if (this.downRecordInfo != null)
{
if (FinishFaceBFunction(downRecordInfo))
{
ProcessStatus(6, true);
}
else
{
ProcessStatus(6, false);
return;
}
}
else
{
MessageBox.Show("获取数据为空");
}
}
/// <summary>
/// B面完工
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FinishFaceB_MouseDown(object sender, MouseButtonEventArgs e)
{
ProDownRecordDto downRecord = (ProDownRecordDto)this.AlarmInfoDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("请选择异常数据");
return;
}
if (downRecord.isFinish == 6)
{
MessageBox.Show("该完工流程已结束");
return;
}
else
{
if (downRecord.isFinish < 5)
{
MessageBox.Show("B面完工前还有流程未处理");
return;
}
}
MiBatchCompleteSfcAndAdujustQtyServiceServiceParam miBatchCompleteSfcAndAdujustQtyServiceServiceParam = new MiBatchCompleteSfcAndAdujustQtyServiceServiceParam()
{
url = inifile.IniReadValue("AdujustQtyParam", "url"),
site = inifile.IniReadValue("AdujustQtyParam", "site"),
sfcPre = "",
processLotPre = downRecord.Rfid,
operation = appConfig.operationByB,
operationRevision = inifile.IniReadValue("AdujustQtyParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("AdujustQtyParam", "user"),
activity = inifile.IniReadValue("AdujustQtyParam", "activity"),
modeProcessSfc = ModeProcessSfc.MODE_COMPLETE_SFC_POST_DC, //冷压MODE_COMPLETE_SFC_POST_DC、模切MODE_COMPLETE_SFC_POST_DC
sfcList = new miBatchCompleteSfcAndAdujustQtySfcEntity[]
{
new miBatchCompleteSfcAndAdujustQtySfcEntity()
{
processLot = downRecord.Rfid,
sfc = downRecord.Sfc,
qty = downRecord.eaValue.ToString(),
unit = "EA"
}
}
};
DateTime beginTime = DateTime.Now;
try
{
if (appConfig.isMesFlag == 1)
{
var requestResult = MesWebServices.iMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam);
WebServiceLog.saveMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam, requestResult, beginTime, "");
if (requestResult.@return.code > 0)
{
ProcessStatus(6, false);
Refresh();
return;
}
}
}
catch (Exception ex)
{
WebServiceLog.saveMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam, null, beginTime, ex.Message);
ProcessStatus(6, false);
Refresh();
return;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 6, downRecord.eaValue);
ProcessStatus(6, false);
Refresh();
return;
}
private bool FinishFaceBFunction(ProDownRecordDto downRecord)
{
LogHelperBusiness.LogInfo("调用MES B面完工接口");
MiBatchCompleteSfcAndAdujustQtyServiceServiceParam miBatchCompleteSfcAndAdujustQtyServiceServiceParam = new MiBatchCompleteSfcAndAdujustQtyServiceServiceParam()
{
url = inifile.IniReadValue("AdujustQtyParam", "url"),
site = inifile.IniReadValue("AdujustQtyParam", "site"),
sfcPre = "",
processLotPre = downRecord.Rfid,
operation = appConfig.operationByB,
operationRevision = inifile.IniReadValue("AdujustQtyParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("AdujustQtyParam", "user"),
activity = inifile.IniReadValue("AdujustQtyParam", "activity"),
modeProcessSfc = ModeProcessSfc.MODE_COMPLETE_SFC_POST_DC, //冷压MODE_COMPLETE_SFC_POST_DC、模切MODE_COMPLETE_SFC_POST_DC
sfcList = new miBatchCompleteSfcAndAdujustQtySfcEntity[]
{
new miBatchCompleteSfcAndAdujustQtySfcEntity()
{
processLot = downRecord.Rfid,
sfc = downRecord.Sfc,
qty = downRecord.eaValue.ToString(),
unit = "EA"
}
}
};
DateTime beginTime = DateTime.Now;
try
{
LogHelperBusiness.LogInfo("调用MES B面完工接口请求参数" + JsonChange.ModeToJson(miBatchCompleteSfcAndAdujustQtyServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
var requestResult = MesWebServices.iMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam);
WebServiceLog.saveMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam, requestResult, beginTime, "");
LogHelperBusiness.LogInfo("调用MES B面完工接口返回参数" + JsonChange.ModeToJson(requestResult));
if (requestResult.@return.code > 0)
{
MessageBox.Show("调用MES B面完工接口失败" + upLoadBusiness.GetMesMessage(requestResult.@return.code, requestResult.@return.message));
ProcessStatus(6, false);
return false;
}
}
}
catch (Exception ex)
{
MessageBox.Show("调用MES B面完工接口异常" + ex.Message);
WebServiceLog.saveMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam, null, beginTime, ex.Message);
ProcessStatus(6, false);
return false;
}
//更新完工步骤
this.UpdateDownRecord(downRecord.Rfid, downRecord.Sfc, 6, downRecord.eaValue);
ProcessStatus(6, false);
return true;
}
/// <summary>
/// 继续完工
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ExceptionHand_Click(object sender, RoutedEventArgs e)
{
Init();
ProDownRecordDto downRecord = (ProDownRecordDto)this.AlarmInfoDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("未选择异常记录");
return;
}
if (downRecord.IsProduction != 3 && downRecord.IsProduction != 1)
{
MessageBox.Show(downRecord.ProductionFlag + "不允许异常处理");
return;
}
this.downRecordInfo = downRecord;
bool[] mes = new bool[6];
for (int i = 1; i <= downRecord.isFinish; i++)
{
ProcessStatus(i, true);
mes[i - 1] = true;
}
ExceptionHandFunction(downRecord, mes);
}
public void ExceptionHandFunction(ProDownRecordDto downRecord, bool[] mesResult)
{
if (!mesResult[0])
{
if (CancelSfcFunction(downRecord))
{
ProcessStatus(1, true);
}
else
{
ProcessStatus(1, false);
return;
}
}
if (!mesResult[1])
{
if (CancelSfcFunction(downRecord))
{
ProcessStatus(1, true);
}
else
{
ProcessStatus(1, false);
return;
}
//A面开始调整数量事件
if (AdjustFaceAFunction(downRecord))
{
ProcessStatus(2, true);
}
else
{
ProcessStatus(2, false);
return;
}
}
if (!mesResult[2])
{
//A面自动开始
if (BeginFaceAFunction(downRecord))
{
ProcessStatus(3, true);
}
else
{
ProcessStatus(3, false);
return;
}
return;
}
if (!mesResult[3])
{
if (FinishFaceAFunction(downRecord))
{
ProcessStatus(4, true);
}
else
{
ProcessStatus(4, false);
return;
}
}
if (!mesResult[4])
{
//B面自动入账开始
if (BeginFaceBFunction(downRecord))
{
ProcessStatus(5, true);
}
else
{
ProcessStatus(5, false);
return;
}
return;
}
if (!mesResult[5])
{
if (FinishFaceBFunction(downRecord))
{
ProcessStatus(6, true);
}
else
{
ProcessStatus(6, false);
return;
}
}
}
/// <summary>
/// 强制下料
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ForceDown_Click(object sender, RoutedEventArgs e)
{
}
private void ProcessStatus(int processNumber, bool isSucess)
{
Action action;
switch (processNumber)
{
case 1:
//注销SFC
if (isSucess)
{
action = () =>
{
this.CancelSfc.Background = Brushes.Green;
};
this.CancelSfc.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CancelSfcText.Foreground = Brushes.White;
};
this.CancelSfcText.Dispatcher.BeginInvoke(action);
}
else
{
action = () =>
{
this.CancelSfc.Background = Brushes.Red;
};
this.CancelSfc.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CancelSfcText.Foreground = Brushes.White;
};
this.CancelSfcText.Dispatcher.BeginInvoke(action);
}
break;
case 2:
//调整A面数量
if (isSucess)
{
action = () =>
{
this.AdjustFaceA.Background = Brushes.Green;
};
this.AdjustFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.AdjustFaceAText.Foreground = Brushes.White;
};
this.AdjustFaceAText.Dispatcher.BeginInvoke(action);
}
else
{
action = () =>
{
this.AdjustFaceA.Background = Brushes.Red;
};
this.AdjustFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.AdjustFaceAText.Foreground = Brushes.White;
};
this.AdjustFaceAText.Dispatcher.BeginInvoke(action);
}
break;
case 3:
//A面开始
if (isSucess)
{
action = () =>
{
this.BeginFaceA.Background = Brushes.Green;
};
this.BeginFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.BeginFaceAText.Foreground = Brushes.White;
};
this.BeginFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceA.Background = Brushes.Yellow;
};
this.CollectFaceA.Dispatcher.BeginInvoke(action);
}
else
{
action = () =>
{
this.BeginFaceA.Background = Brushes.Red;
};
this.BeginFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.BeginFaceAText.Foreground = Brushes.White;
};
this.BeginFaceA.Dispatcher.BeginInvoke(action);
}
break;
case 4:
//A面完工
if (isSucess)
{
action = () =>
{
this.CollectFaceA.Background = Brushes.Green;
};
this.CollectFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceAText1.Foreground = Brushes.White;
};
this.CollectFaceAText1.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceAText2.Foreground = Brushes.White;
};
this.CollectFaceAText2.Dispatcher.BeginInvoke(action);
action = () =>
{
this.FinishFaceA.Background = Brushes.Green;
};
this.FinishFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.FinishFaceAText.Foreground = Brushes.White;
};
this.FinishFaceAText.Dispatcher.BeginInvoke(action);
}
else
{
action = () =>
{
this.FinishFaceA.Background = Brushes.Red;
};
this.FinishFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.FinishFaceAText.Foreground = Brushes.White;
};
this.FinishFaceAText.Dispatcher.BeginInvoke(action);
}
break;
case 5:
//B面开始
if (isSucess)
{
action = () =>
{
this.BeginFaceB.Background = Brushes.Green;
};
this.BeginFaceB.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceB.Background = Brushes.Yellow;
};
this.CollectFaceB.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceBText1.Foreground = Brushes.White;
};
this.CollectFaceBText1.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceBText2.Foreground = Brushes.White;
};
this.CollectFaceBText2.Dispatcher.BeginInvoke(action);
action = () =>
{
this.BeginFaceBText.Foreground = Brushes.White;
};
this.BeginFaceBText.Dispatcher.BeginInvoke(action);
}
else
{
action = () =>
{
this.BeginFaceB.Background = Brushes.Red;
};
this.BeginFaceB.Dispatcher.BeginInvoke(action);
action = () =>
{
this.BeginFaceBText.Foreground = Brushes.White;
};
this.BeginFaceBText.Dispatcher.BeginInvoke(action);
}
break;
case 6:
//B面完工
if (isSucess)
{
action = () =>
{
this.CollectFaceB.Background = Brushes.Green;
};
this.CollectFaceB.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceBText1.Foreground = Brushes.White;
};
this.CollectFaceBText1.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceBText2.Foreground = Brushes.White;
};
this.CollectFaceBText2.Dispatcher.BeginInvoke(action);
action = () =>
{
this.FinishFaceB.Background = Brushes.Green;
};
this.FinishFaceB.Dispatcher.BeginInvoke(action);
action = () =>
{
this.FinishFaceBText.Foreground = Brushes.White;
};
this.FinishFaceBText.Dispatcher.BeginInvoke(action);
}
else
{
action = () =>
{
this.FinishFaceB.Background = Brushes.Red;
};
this.FinishFaceB.Dispatcher.BeginInvoke(action);
action = () =>
{
this.FinishFaceBText.Foreground = Brushes.White;
};
this.FinishFaceBText.Dispatcher.BeginInvoke(action);
}
break;
default:
break;
}
}
/// <summary>
/// 初始化界面
/// </summary>
private void Init()
{
Action action;
action = () =>
{
this.CancelSfc.Background = Brushes.White;
};
this.CancelSfc.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CancelSfcText.Foreground = Brushes.Gray;
};
this.CancelSfcText.Dispatcher.BeginInvoke(action);
action = () =>
{
this.AdjustFaceA.Background = Brushes.White;
};
this.AdjustFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.AdjustFaceAText.Foreground = Brushes.Gray;
};
this.AdjustFaceAText.Dispatcher.BeginInvoke(action);
action = () =>
{
this.BeginFaceA.Background = Brushes.White;
};
this.BeginFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.BeginFaceAText.Foreground = Brushes.Gray;
};
this.BeginFaceAText.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceA.Background = Brushes.White;
};
this.CollectFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceAText1.Foreground = Brushes.Gray;
};
this.CollectFaceAText1.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceAText2.Foreground = Brushes.Gray;
};
this.CollectFaceAText2.Dispatcher.BeginInvoke(action);
action = () =>
{
this.FinishFaceA.Background = Brushes.White;
};
this.FinishFaceA.Dispatcher.BeginInvoke(action);
action = () =>
{
this.FinishFaceAText.Foreground = Brushes.Gray;
};
this.FinishFaceAText.Dispatcher.BeginInvoke(action);
action = () =>
{
this.BeginFaceB.Background = Brushes.White;
};
this.BeginFaceB.Dispatcher.BeginInvoke(action);
action = () =>
{
this.BeginFaceBText.Foreground = Brushes.Gray;
};
this.BeginFaceBText.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceB.Background = Brushes.White;
};
this.CollectFaceB.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceBText1.Foreground = Brushes.Gray;
};
this.CollectFaceBText1.Dispatcher.BeginInvoke(action);
action = () =>
{
this.CollectFaceBText2.Foreground = Brushes.Gray;
};
this.CollectFaceBText2.Dispatcher.BeginInvoke(action);
action = () =>
{
this.FinishFaceB.Background = Brushes.White;
};
this.FinishFaceB.Dispatcher.BeginInvoke(action);
action = () =>
{
this.FinishFaceBText.Foreground = Brushes.Gray;
};
this.FinishFaceBText.Dispatcher.BeginInvoke(action);
}
private async void UpdateDownRecord(string rfid, string sfc, int finish, int eaValue)
{
Expression<Func<ProDownRecord, bool>> downExp = s1 => true;
downExp = downExp.And(x => x.Rfid == rfid && x.Sfc == sfc);
Expression<Func<ProDownRecord, object>> downOrder = (s) => s.RecordTime;
ProDownRecord downRecord = await downRecordServices.QueryFirst(downExp, downOrder, false);
if (downRecord != null)
{
downRecord.eaValue = eaValue;
downRecord.IsProduction = finish == 6 ? 2 : 3;
downRecord.isFinish = finish;
downRecord.endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
await downRecordServices.Update(downRecord);
upLoadBusiness.UpdateDownRecord(downRecord);
}
Refresh();
List<ProDownRecordDto> info = this.AlarmInfoDataGrid.ItemsSource as List<ProDownRecordDto>;
ProDownRecordDto recordDto = info.Where(x => x.Sfc == sfc).FirstOrDefault();
this.AlarmInfoDataGrid.SelectedItem = recordDto;
}
/// <summary>
/// 获取MESEA值更新数据记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GetMesEaValue_Click(object sender, RoutedEventArgs e)
{
ProDownRecordDto downRecord = (ProDownRecordDto)this.AlarmInfoDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("未选择异常记录");
return;
}
//获取物料信息
Expression<Func<ProDownRecord, bool>> exp = s1 => true;
exp = exp.And(x => x.Sfc == downRecord.Sfc);
Expression<Func<ProDownRecord, object>> order = s1 => s1.endTime;
ProDownRecord downRecordInfo = downRecordServices.QueryFirst(exp, order, false).Result;
if (downRecordInfo == null)
{
MessageBox.Show("获取下料数据为空");
return;
}
LogHelperBusiness.LogInfo(String.Format("通过MES接口获取{0}物料的EA值", downRecord.Sfc));
MiSFCQueryQtyServiceServiceParam sFCQueryQtyServiceServiceParam = new MiSFCQueryQtyServiceServiceParam()
{
url = inifile.IniReadValue("MiSFCQueryQtyServiceServiceParam", "url"),
site = inifile.IniReadValue("MiSFCQueryQtyServiceServiceParam", "site"),
sfc = downRecord.Sfc
};
LogHelperBusiness.LogInfo("MES获取物料EA值接口请求参数" + JsonChange.ModeToJson(sFCQueryQtyServiceServiceParam));
DateTime beginTime = DateTime.Now;
try
{
if (appConfig.isMesFlag == 1)
{
var sfcQueryQtyResponse = MesWebServices.iMiSFCQueryQtyServiceService(sFCQueryQtyServiceServiceParam);
LogHelperBusiness.LogInfo("MES获取物料EA值接口返回参数" + JsonChange.ModeToJson(sfcQueryQtyResponse));
if (sfcQueryQtyResponse.@return.code > 0)
{
LogHelperBusiness.LogInfo("MES获取物料EA值接口请求失败" + sfcQueryQtyResponse.@return.message);
MessageBox.Show(String.Format("通过MES接口获取放卷物料{0}的SFC数量失败:{1}", downRecord.Sfc, upLoadBusiness.GetMesMessage(sfcQueryQtyResponse.@return.code, sfcQueryQtyResponse.@return.message)));
return;
}
if (Convert.ToInt32(sfcQueryQtyResponse.@return.qty) > 1)
{
downRecordInfo.eaValue = Convert.ToInt32(sfcQueryQtyResponse.@return.qty);
}
else
{
MessageBox.Show("MES物料EA为:" + Convert.ToInt32(sfcQueryQtyResponse.@return.qty + "不进行同步"));
return;
}
}
}
catch (Exception ex)
{
LogHelperBusiness.LogInfo(String.Format("MES获取SFC数量接口异常:{1}", ex.Message));
WebServiceLog.saveMiSFCQueryQtyServiceService(sFCQueryQtyServiceServiceParam, null, beginTime, ex.Message);
MessageBox.Show(String.Format("MES获取SFC数量接口异常:{1}", ex.Message));
return;
}
bool updateResult = downRecordServices.Update(downRecordInfo).Result;
if (updateResult)
{
MessageBox.Show("数量调整成功");
}
else
{
MessageBox.Show("数量调整失败");
}
upLoadBusiness.UpdateDownRecord(downRecordInfo);
refreshDataGrid();
}
private void EaParamSet_Click(object sender, RoutedEventArgs e)
{
string membraneLength = this.membraneLength.Text.ToString();
string volumesNumber = this.volumesNumber.Text.ToString();
if (StringExtension.IsBlank(membraneLength))
{
MessageBox.Show("请输入模长");
return;
}
if (StringExtension.IsBlank(volumesNumber))
{
volumesNumber = "6";
}
if (EaParamSetFunction(membraneLength, volumesNumber).Result)
{
MessageBox.Show("EA参数设置成功");
this.membraneLength.Text = GetSysConfigList("SysConfig").Where(x => x.paramKey == "membraneLength").FirstOrDefault().paramValue;
this.volumesNumber.Text = GetSysConfigList("SysConfig").Where(x => x.paramKey == "volumesNumber").FirstOrDefault().paramValue;
}
else
{
MessageBox.Show("EA参数设置失败");
}
}
public async Task<bool> EaParamSetFunction(string membraneLength, string volumesNumber)
{
try
{
var membraneLengthInfo = GetSysConfigList("SysConfig").Where(x => x.paramKey == "membraneLength").FirstOrDefault();
var volumesNumberInfo = GetSysConfigList("SysConfig").Where(x => x.paramKey == "volumesNumber").FirstOrDefault();
if (membraneLengthInfo == null)
{
SysClient client = new SysClient()
{
processId = appConfig.processId,
paramKey = "membraneLength",
paramValue = membraneLength,
paramType = "SysConfig",
remark = "EA系数膜长"
};
await sysClientServices.Add(client);
}
else
{
membraneLengthInfo.paramValue = membraneLength;
await sysClientServices.Update(membraneLengthInfo);
}
if (volumesNumberInfo == null)
{
SysClient client = new SysClient()
{
processId = appConfig.processId,
paramKey = "volumesNumber",
paramValue = volumesNumber,
paramType = "SysConfig",
remark = "EA系数系数"
};
await sysClientServices.Add(client);
}
else
{
volumesNumberInfo.paramValue = volumesNumber;
await sysClientServices.Update(volumesNumberInfo);
}
return true;
}
catch (Exception ex)
{
LogHelperBusiness.LogError("EA参数设置异常", ex);
return false;
}
}
/// <summary>
/// 获取配置列表
/// </summary>
/// <returns></returns>
private List<SysClient> GetSysConfigList(string paramType)
{
try
{
Expression<Func<SysClient, bool>> exp = s1 => true;
if (StringExtension.IsNotBlank(paramType))
{
exp = exp.And(x => x.paramType == paramType);
}
exp = exp.And(x => x.processId == appConfig.processId);
List<SysClient> info = sysClientServices.Query(exp).Result;
return info;
}
catch (Exception ex)
{
LogHelperBusiness.LogError("获取配置列表异常", ex);
return null;
}
}
}
}