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.

1173 lines
58 KiB
C#

This file contains ambiguous Unicode 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.Entity.DAO;
using MaterialTraceability.Entity.DTO;
using MaterialTraceability.Entity.Enum;
using MaterialTraceability.Entity.UpLoad;
using MaterialTraceability.SqlSugar;
using MaterialTraceability.SqlSugar.ServiceImpl;
using MaterialTraceability.WebService;
using MaterialTraceability.WebService.MachineIntegrationServiceService;
using MaterialTraceability.WebService.MiBatchCompleteSfcAndAdujustQtyServiceService;
using MaterialTraceability.WebService.MiFirstOperationForsfcServiceService;
using MaterialTraceability.WebService.MiSignOffSFCsServiceService;
using MaterialTraceability.WebService.Param;
using MaterialTraceabilityUI.Common;
using MySqlX.XDevAPI.Common;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace MaterialTraceabilityUI
{
/// <summary>
/// SplitSfc.xaml 的交互逻辑
/// </summary>
public partial class SplitSfc : UserControl
{
private IniFileHelper inifile = new IniFileHelper(System.Environment.CurrentDirectory + "/MesConfig/App.InI");
private IniFileHelper inifile2 = new IniFileHelper(System.Environment.CurrentDirectory + "/App.InI");
private IMesWebServices MesWebServices = new MesWebServicesImpl();
private UpLoadBusiness upLoadBusiness = UpLoadBusiness.Instance;
private AppConfigDto appConfig = AppConfigDto.Instance;
private MaterialFeatureBusiness materialFeatureBusiness = MaterialFeatureBusiness.Instance;
public SplitSfc()
{
InitializeComponent();
}
private async void Split(string rfidStr, string eaStr, string sfcStr, int positionId)
{
LogHelperBusiness.LogInfo(String.Format("进入手动拆分处理RFID条码{0};放卷位膜卷号:{1};ea值{2};位置编号:{3}", rfidStr, sfcStr, eaStr, positionId));
MaterialTraceability.WebService.MiBatchCompleteSfcAndAdujustQtyServiceService.ModeProcessSfc modeProcessSfc = MaterialTraceability.WebService.MiBatchCompleteSfcAndAdujustQtyServiceService.ModeProcessSfc.MODE_COMPLETE_SFC_POST_DC;
if (appConfig.processId == "LY_A")
{
if (upLoadBusiness.JudgeResourceIsUplpadData())
{
modeProcessSfc = MaterialTraceability.WebService.MiBatchCompleteSfcAndAdujustQtyServiceService.ModeProcessSfc.MODE_NONE;
}
}
else
{
if (appConfig.isUploadFlag)
{
modeProcessSfc = MaterialTraceability.WebService.MiBatchCompleteSfcAndAdujustQtyServiceService.ModeProcessSfc.MODE_NONE;
}
}
miBatchCompleteSfcAndAdujustQtySfcEntity[] miBatchCompleteSfcAndAdujustQtySfcEntities = new miBatchCompleteSfcAndAdujustQtySfcEntity[]
{
new miBatchCompleteSfcAndAdujustQtySfcEntity()
{
processLot = rfidStr,
qty = eaStr,
unit = "EA",
}
};
var requestParam = new MiBatchCompleteSfcAndAdujustQtyServiceServiceParam()
{
url = inifile.IniReadValue("SplitSfcParam", "url"),
site = inifile.IniReadValue("SplitSfcParam", "site"),
sfcPre = sfcStr,
processLotPre = "",
operation = appConfig.operation,
operationRevision = inifile.IniReadValue("SplitSfcParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("HandSplitSfcParam", "user"),
loginUser = inifile.IniReadValue("HandSplitSfcParam", "user"),
password = inifile.IniReadValue("HandSplitSfcParam", "password"),
activity = inifile.IniReadValue("SplitSfcParam", "activity"),
modeProcessSfc = modeProcessSfc,
sfcList = miBatchCompleteSfcAndAdujustQtySfcEntities,
};
//判断是否为模切工序,上传最后一卷标识
if (appConfig.processId == "MQ_A")
{
if (await spiltPreventDaze(positionId, sfcStr))
{
MessageBox.Show("手动拆分异常,不允许直接拆分下收卷轴");
return;
}
else
{
#region 注释代码
/*ComboBoxItem endFlag = (ComboBoxItem)this.endFlagCombox.SelectedItem;
if (endFlag.Content.ToString() != null && endFlag.Content.ToString() != "")
{
if (endFlag.Content.ToString() == "是")
{
requestParam.tailmark = "X";
}
}
else
{
MessageBox.Show("请选择是否为最后一卷");
return;
}*/
#endregion
//通过数据库获取最后一卷标记
string tailmark = await GetTailmark(rfidStr,positionId,0);
if (!string.IsNullOrEmpty(tailmark))
{
requestParam.tailmark = tailmark;
}
}
}
LogHelperBusiness.LogInfo("MES自动拆分接口请求参数" + JsonChange.ModeToJson(requestParam));
Console.WriteLine("MES自动拆分接口请求参数" + JsonChange.ModeToJson(requestParam));
MiBatchCompleteSfcAndAdujustQtyResponse batchCompleteSfcAndAdujustQtyResponse = MesWebServices.iMiBatchCompleteSfcAndAdujustQtyServiceService(requestParam);
LogHelperBusiness.LogInfo("MES自动拆分接口返回参数" + JsonChange.ModeToJson(batchCompleteSfcAndAdujustQtyResponse));
var result = batchCompleteSfcAndAdujustQtyResponse.@return;
if (result.code > 0)
{
LogHelperBusiness.LogInfo("MES自动拆分接口调用失败" + result.message);
MessageBox.Show("手动拆分失败:" + upLoadBusiness.GetMesMessage(result.code, result.message));
}
else
{
string splitSfc = GetSfcByRfid(rfidStr);
if(appConfig.processId == "LY_A")
{
if (upLoadBusiness.JudgeResourceIsUplpadData())
{
MessageBox.Show("手动拆分成功完工处理ea:" + eaStr);
//获取拆分后的膜卷号
Complete(sfcStr, splitSfc, rfidStr, positionId, eaStr);
}
else
{
MessageBox.Show("手动拆分成功ea:" + eaStr);
UpdateDownRecord(positionId, rfidStr, splitSfc, eaStr);
}
}
else
{
if (appConfig.isUploadFlag)
{
MessageBox.Show("手动拆分成功完工处理ea:" + eaStr);
//获取拆分后的膜卷号
Complete(sfcStr, splitSfc, rfidStr, positionId, eaStr);
}
else
{
MessageBox.Show("手动拆分成功ea:" + eaStr);
UpdateDownRecord(positionId, rfidStr, splitSfc, eaStr);
}
}
}
}
/// <summary>
/// 手动完工
/// </summary>
/// <param name="sfcStr"></param>
/// <param name="split_sfc"></param>
/// <param name="positionId"></param>
private void Complete(string sfcStr, string split_sfc, string rfidStr, int positionId,string eaStr)
{
LogHelperBusiness.LogInfo(String.Format("进入手动完工处理,放卷位膜卷号:{0};拆分后膜卷号:{1};RFID条码{2};位置编号:{3}", sfcStr, split_sfc, rfidStr, positionId));
try
{
MachineIntegrationServiceParam machineIntegrationServiceParam = new MachineIntegrationServiceParam();
machineIntegrationParametricData[] data = null;
if (appConfig.processId.Contains("MQ"))
{
string ccdLableAmount = ccdTextBox.Text.ToString().Trim();
if (StringExtension.IsBlank(ccdLableAmount))
{
MessageBox.Show("请输入CCD打标数");
return;
}
if (upLoadBusiness.JudgeResourceIsUplpadData())
{
data = GetMqMaterialFeature(sfcStr, positionId);
}
else
{
data = new machineIntegrationParametricData[]
{
new machineIntegrationParametricData() { name = "CCD", dataType = ParameterDataType.TEXT, value = StringExtension.IsBlank(ccdLableAmount) ? "0" : ccdLableAmount }
};
}
LogHelperBusiness.LogInfo("模切物料特征数据:" + JsonChange.ModeToJson(data));
}
else if (appConfig.processId.Contains("LY"))
{
data = GetLyMaterialFeature(positionId, sfcStr, split_sfc);
LogHelperBusiness.LogInfo("冷压物料特征数据:" + JsonChange.ModeToJson(data));
}
if (data != null)
{
machineIntegrationServiceParam = new MachineIntegrationServiceParam()
{
url = inifile.IniReadValue("MachineIntegrationServiceParam", "url"),
site = inifile.IniReadValue("MachineIntegrationServiceParam", "site"),
sfc = split_sfc, //将数据上传至拆分后的膜卷号
operation = appConfig.operation,
operationRevision = inifile.IniReadValue("MachineIntegrationServiceParam", "operationRevision"),
activityId = inifile.IniReadValue("MachineIntegrationServiceParam", "activityId"),
resource = appConfig.resource,
dcGroup = inifile.IniReadValue("MachineIntegrationServiceParam", "dcGroup"),
dcGroupRevision = inifile.IniReadValue("MachineIntegrationServiceParam", "dcGroupRevision"),
parametricArray = data,
user = inifile.IniReadValue("HandSplitSfcParam", "user"),
loginUser = inifile.IniReadValue("HandSplitSfcParam", "user"),
password = inifile.IniReadValue("HandSplitSfcParam", "password"),
modeProcessSfc = MaterialTraceability.WebService.MachineIntegrationServiceService.ModeProcessSfc.MODE_COMPLETE_SFC_POST_DC
};
LogHelperBusiness.LogInfo("上传物料特征数据MES参数" + JsonChange.ModeToJson(machineIntegrationServiceParam));
var dataCollectForSfcExResponse = MesWebServices.machineIntegration(machineIntegrationServiceParam);
var dataCollectForSfcExResponseResult = dataCollectForSfcExResponse.@return;
if (dataCollectForSfcExResponseResult.code > 0)
{
MessageBox.Show("数据上传完工失败:" + upLoadBusiness.GetMesMessage(dataCollectForSfcExResponseResult.code, dataCollectForSfcExResponseResult.message));
}
else
{
MessageBox.Show("数据上传完工成功");
UpdateDownRecord(positionId, rfidStr, split_sfc, eaStr);
}
}
else
{
LogHelperBusiness.LogInfo("物料特征数据为null");
}
}
catch (Exception ex)
{
LogHelperBusiness.LogInfo("手动完工异常:" + ex.Message);
}
}
/// <summary>
/// 更新下料记录
/// </summary>
/// <param name="positionId"></param>
/// <param name="rfidStr"></param>
/// <param name="sfcStr"></param>
/// <param name="eaStr"></param>
private async void UpdateDownRecord(int positionId,string rfidStr,string sfcStr,string eaStr)
{
try
{
Expression<Func<ProDownRecord, bool>> exp = s1 => true;
exp = exp.And(x => x.MachineId == appConfig.machineId && x.PositionId == positionId && x.Rfid == rfidStr && x.IsProduction == 0);
Expression<Func<ProDownRecord, object>> order = x => x.beginTime;
ProDownRecord downRecord = await baseServices.QueryFirst(exp, order, false);
if (downRecord != null)
{
downRecord.IsProduction = 1;
downRecord.Sfc = sfcStr;
if (Convert.ToInt32(eaStr) > 1)
{
downRecord.eaValue = Convert.ToInt32(eaStr);
}
downRecord.endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
if (await baseServices.Update(downRecord))
{
LogHelperBusiness.LogInfo(rfidStr + "手动拆分完成,下料记录更新成功:"+JsonChange.ModeToJson(downRecord));
//更新下料记录
upLoadBusiness.UpdateDownRecord(downRecord);
}
else
{
LogHelperBusiness.LogInfo(rfidStr + "下料记录更新失败");
}
RefreshDataGrid();
}
}catch(Exception ex)
{
LogHelperBusiness.LogInfo("手动完工下料记录更新异常:"+ex.Message);
}
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
this.beginTime.Text = DateTime.Now.ToLongDateString();
this.endTime.Text = DateTime.Now.AddDays(1).ToLongDateString();
if (appConfig.processId == "MQ_A")
{
ccdLable.Visibility = Visibility.Visible;
ccdTextBox.Visibility = Visibility.Visible;
}
else if (appConfig.processId == "AB")
{
lb_fjsfc.Visibility = Visibility.Hidden;
sfcTextBox.Visibility = Visibility.Hidden;
lb_eavalue.Visibility = Visibility.Hidden;
eaTextBox.Visibility = Visibility.Hidden;
endFlagLabel.Visibility = Visibility.Hidden;
endFlagCombox.Visibility = Visibility.Hidden;
split.Visibility = Visibility.Hidden;
ccdLable.Visibility = Visibility.Hidden;
ccdTextBox.Visibility = Visibility.Hidden;
}
/*else if (appConfig.processId == "LY_A")
{
endFlagLabel.Visibility = Visibility.Visible;
endFlagCombox.Visibility = Visibility.Visible;
}*/
RefreshDataGrid();
}
/// <summary>
/// 获取模切物料特征数据,通过服务器获取数据=》不存在重新调用mes获取=》出现异常全部上传0
/// </summary>
/// <param name="sfcStr">放卷位膜卷号</param>
/// <param name="positionId">收卷位置</param>
/// <returns></returns>
private machineIntegrationParametricData[] GetMqMaterialFeature(string sfcStr, int positionId)
{
try
{
MqUpLoad mqUpLoad = null;
SqlSugarClient _db = SqlGenerator.GetMySqlInstance();
string ccdLableAmount = ccdTextBox.Text.ToString().Trim(); // ccd打标数
if (StringExtension.IsNotBlank(sfcStr))
{
DataTable info = _db.Queryable<MqUpLoad>().Where(x => x.sfcStr == sfcStr && x.positionId == positionId).ToDataTable();
if (info.Rows.Count > 0)
{
mqUpLoad = new MqUpLoad();
DataRow dataRow = info.Rows[0];
#region mqUpLoad实体赋值
mqUpLoad.id = Convert.ToInt32(dataRow["id"]);
mqUpLoad.clientId = dataRow["clientId"].ToString();
mqUpLoad.resource = dataRow["resource"].ToString();
mqUpLoad.sfcStr = dataRow["sfcStr"].ToString();
mqUpLoad.operation = dataRow["operation"].ToString();
mqUpLoad.dcGroup = dataRow["dcGroup"].ToString();
mqUpLoad.upDirection = dataRow["upDirection"].ToString();
mqUpLoad.downDirection = dataRow["downDirection"].ToString();
mqUpLoad.downPosition = dataRow["downPosition"].ToString();
mqUpLoad.firstArticle = dataRow["firstArticle"].ToString();
mqUpLoad.mqMaterialFace = dataRow["mqMaterialFace"].ToString();
mqUpLoad.jrDirection = dataRow["jrDirection"].ToString();
mqUpLoad.scw = dataRow["scw"].ToString();
mqUpLoad.bcw = dataRow["bcw"].ToString();
mqUpLoad.is_success = Convert.ToInt32(dataRow["is_success"]);
mqUpLoad.mesReturnInfo = dataRow["mesReturnInfo"].ToString();
mqUpLoad.recordTime = dataRow["recordTime"].ToString();
mqUpLoad.s_targetcw = dataRow["s_targetcw"].ToString();
#endregion
}
}
if (mqUpLoad != null)
{
machineIntegrationParametricData[] data = {
new machineIntegrationParametricData() {name ="MQ_FJFX",dataType=ParameterDataType.TEXT, value= StringExtension.IsBlank(mqUpLoad.upDirection) ? "0" : mqUpLoad.upDirection},
new machineIntegrationParametricData() {name ="MQ_SJFX",dataType=ParameterDataType.TEXT, value= StringExtension.IsBlank(mqUpLoad.downDirection) ? "0" :mqUpLoad.downDirection},
new machineIntegrationParametricData() {name ="MQ_SJZ",dataType=ParameterDataType.TEXT, value= StringExtension.IsBlank(mqUpLoad.downPosition) ? "0" :mqUpLoad.downPosition},
new machineIntegrationParametricData() {name ="FIRST ARTICLE",dataType=ParameterDataType.TEXT, value= mqUpLoad.firstArticle},
new machineIntegrationParametricData() {name ="MQ_WLMX",dataType=ParameterDataType.TEXT, value= StringExtension.IsBlank(mqUpLoad.mqMaterialFace) ? "0" :mqUpLoad.mqMaterialFace},
new machineIntegrationParametricData() {name ="MQ_JRLLFX",dataType=ParameterDataType.TEXT, value= StringExtension.IsBlank(mqUpLoad.jrDirection) ? "0" :mqUpLoad.jrDirection},
new machineIntegrationParametricData() {name ="S_CW",dataType=ParameterDataType.TEXT, value=StringExtension.IsBlank(mqUpLoad.scw) ? "0" : mqUpLoad.scw},
new machineIntegrationParametricData() {name ="B_CW",dataType=ParameterDataType.TEXT, value=StringExtension.IsBlank(mqUpLoad.bcw) ? "0" : mqUpLoad.bcw},
new machineIntegrationParametricData() {name = "CCD",dataType=ParameterDataType.TEXT, value=StringExtension.IsBlank(ccdLableAmount) ? "0" : ccdLableAmount},
new machineIntegrationParametricData() {name = "S_TARGETCW",dataType=ParameterDataType.TEXT, value=StringExtension.IsBlank(mqUpLoad.s_targetcw) ? "0" : mqUpLoad.s_targetcw}
};
return data;
}
else
{
LogHelperBusiness.LogInfo("通过服务器未获取到物料特征数据重新调用MES获取物料特征数据");
var info = materialFeatureBusiness.GetMQMaterialWeight(sfcStr, positionId, ccdLableAmount).Result;
if (info == null)
{
machineIntegrationParametricData[] data = {
new machineIntegrationParametricData() {name ="MQ_FJFX",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="MQ_SJFX",dataType=ParameterDataType.TEXT, value= "0"},
new machineIntegrationParametricData() {name ="MQ_SJZ",dataType=ParameterDataType.TEXT, value= "0"},
new machineIntegrationParametricData() {name ="FIRST ARTICLE",dataType=ParameterDataType.TEXT, value= "0"},
new machineIntegrationParametricData() {name ="MQ_WLMX",dataType=ParameterDataType.TEXT, value= "0"},
new machineIntegrationParametricData() {name ="MQ_JRLLFX",dataType=ParameterDataType.TEXT, value= "0"},
new machineIntegrationParametricData() {name ="S_CW",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="B_CW",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name = "CCD",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name = "S_TARGETCW",dataType=ParameterDataType.TEXT, value="0"}
};
return data;
}
else
{
return info;
}
}
}
catch (Exception ex)
{
LogHelperBusiness.LogInfo("获取模切重量特征数据异常:" + ex.Message);
machineIntegrationParametricData[] data = {
new machineIntegrationParametricData() {name ="MQ_FJFX",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="MQ_SJFX",dataType=ParameterDataType.TEXT, value= "0"},
new machineIntegrationParametricData() {name ="MQ_SJZ",dataType=ParameterDataType.TEXT, value= "0"},
new machineIntegrationParametricData() {name ="FIRST ARTICLE",dataType=ParameterDataType.TEXT, value= "0"},
new machineIntegrationParametricData() {name ="MQ_WLMX",dataType=ParameterDataType.TEXT, value= "0"},
new machineIntegrationParametricData() {name ="MQ_JRLLFX",dataType=ParameterDataType.TEXT, value= "0"},
new machineIntegrationParametricData() {name ="S_CW",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="B_CW",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name = "CCD",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name = "S_TARGETCW",dataType=ParameterDataType.TEXT, value="0"}
};
return data;
}
}
/// <summary>
/// 获取冷压物料特征数据,通过服务器获取数据=》不存在重新调用mes获取=》出现异常全部上传0
/// </summary>
/// <param name="positionId"></param>
/// <param name="sfcStr"></param>
/// <param name="splitSfc"></param>
/// <returns></returns>
private machineIntegrationParametricData[] GetLyMaterialFeature(int positionId, string sfcStr, string splitSfc)
{
string shaftName = GetLyShaftName(positionId);
try
{
LyUpLoad lyUpLoad = null;
SqlSugarClient _db = SqlGenerator.GetMySqlInstance();
string ccdLableAmount = ccdTextBox.Text.ToString().Trim(); // ccd打标数
if (StringExtension.IsNotBlank(sfcStr))
{
DataTable info = _db.Queryable<LyUpLoad>().Where(x => x.sfcStr == sfcStr && x.positionId == positionId).ToDataTable();
if (info.Rows.Count > 0)
{
DataRow dataRow = info.Rows[0];
lyUpLoad.id = Convert.ToInt32(dataRow["id"]);
lyUpLoad.sfcStr = dataRow["sfcStr"].ToString();
lyUpLoad.clientId = dataRow["clientId"].ToString();
lyUpLoad.resource = dataRow["resource"].ToString();
lyUpLoad.operation = dataRow["operation"].ToString();
lyUpLoad.dcGroup = dataRow["dcGroup"].ToString();
lyUpLoad.upDirection = dataRow["upDirection"].ToString();
lyUpLoad.downDirection = dataRow["downDirection"].ToString();
lyUpLoad.downPosition = dataRow["downPosition"].ToString();
lyUpLoad.crosswiseArea = dataRow["crosswiseArea"].ToString();
lyUpLoad.erectArea = dataRow["erectArea"].ToString();
lyUpLoad.materialFace = dataRow["materialFace"].ToString();
lyUpLoad.sx01 = dataRow["sx01"].ToString();
lyUpLoad.sx02 = dataRow["sx02"].ToString();
lyUpLoad.bx01 = dataRow["bx01"].ToString();
lyUpLoad.bx02 = dataRow["bx02"].ToString();
lyUpLoad.is_success = Convert.ToInt32(dataRow["is_success"]);
lyUpLoad.mesReturnInfo = dataRow["mesReturnInfo"].ToString();
lyUpLoad.recordTime = dataRow["recordTime"].ToString();
}
}
LogHelperBusiness.LogInfo(string.Format("收卷轴Id{0},收卷轴:{1}",positionId, shaftName));
if (lyUpLoad != null)
{
machineIntegrationParametricData[] data = {
new machineIntegrationParametricData() {name ="LY_FJFX",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(lyUpLoad.upDirection)?"0":lyUpLoad.upDirection},
new machineIntegrationParametricData() {name ="LY_SJFX",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(lyUpLoad.downDirection)?"0":lyUpLoad.downDirection},
new machineIntegrationParametricData() {name ="LY_SJZ",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(shaftName)?"0":shaftName},
new machineIntegrationParametricData() {name ="LY_HXMQ",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(lyUpLoad.crosswiseArea)?"0":lyUpLoad.crosswiseArea},
new machineIntegrationParametricData() {name ="LY_ZXMQ",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(lyUpLoad.erectArea)?"0":lyUpLoad.erectArea},
new machineIntegrationParametricData() {name ="LY_WLMX",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(lyUpLoad.materialFace)?"0":lyUpLoad.materialFace},
new machineIntegrationParametricData() {name ="LY_S_X01",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(lyUpLoad.sx01)?"0":lyUpLoad.sx01},
new machineIntegrationParametricData() {name ="LY_S_X02",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(lyUpLoad.sx02)?"0":lyUpLoad.sx02},
new machineIntegrationParametricData() {name ="LY_B_X01",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(lyUpLoad.bx01)?"0":lyUpLoad.bx01},
new machineIntegrationParametricData() {name ="LY_B_X02",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(lyUpLoad.bx02)?"0":lyUpLoad.bx02},
new machineIntegrationParametricData() {name ="S_TARGETCW",dataType=ParameterDataType.TEXT, value=string.IsNullOrEmpty(lyUpLoad.s_targetcws)?"0":lyUpLoad.s_targetcws},
};
LogHelperBusiness.LogInfo(string.Format("收卷轴:{0}", shaftName));
return data;
}
else
{
LogHelperBusiness.LogInfo("通过服务器未获取到物料特征数据重新调用MES获取物料特征数据");
var info = materialFeatureBusiness.GetLYMaterialWeight(shaftName, positionId.ToString(), sfcStr, splitSfc).Result;
if (info == null)
{
machineIntegrationParametricData[] data = {
new machineIntegrationParametricData() {name ="LY_FJFX",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_SJFX",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_SJZ",dataType=ParameterDataType.TEXT, value=shaftName},
new machineIntegrationParametricData() {name ="LY_HXMQ",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_ZXMQ",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_WLMX",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_S_X01",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_S_X02",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_B_X01",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_B_X02",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="S_TARGETCW",dataType=ParameterDataType.TEXT, value="0"},
};
return data;
}
else
{
return info;
}
}
}
catch (Exception ex)
{
LogHelperBusiness.LogInfo("获取冷压重量特征数据异常:" + ex.Message);
machineIntegrationParametricData[] data = {
new machineIntegrationParametricData() {name ="LY_FJFX",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_SJFX",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_SJZ",dataType=ParameterDataType.TEXT, value=shaftName},
new machineIntegrationParametricData() {name ="LY_HXMQ",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_ZXMQ",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_WLMX",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_S_X01",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_S_X02",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_B_X01",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="LY_B_X02",dataType=ParameterDataType.TEXT, value="0"},
new machineIntegrationParametricData() {name ="S_TARGETCW",dataType=ParameterDataType.TEXT, value="0"},
};
return data;
}
}
/// <summary>
/// 通过RFID获取SFC
/// </summary>
/// <param name="rfidStr"></param>
/// <returns></returns>
private string GetSfcByRfid(string rfidStr)
{
string sfcStr = "";
ProcessLotServiceWSServiceParam processLotServiceWSServiceParam = new ProcessLotServiceWSServiceParam()
{
//url = "http://lymesa.catlbattery.com:8103/manufacturing-papiservices/ProcessLotServiceWSService?wsdl",
//site = "2100",
url = inifile.IniReadValue("ProcessLotServiceWSServiceParam", "url"),
site = inifile.IniReadValue("ProcessLotServiceWSServiceParam", "site"),
processlotref = String.Format("ProcessLotBO:2100,{0}", rfidStr)
};
try
{
LogHelperBusiness.LogInfo("MES获取膜卷号接口请求参数" + JsonChange.ModeToJson(processLotServiceWSServiceParam));
if (appConfig.isMesFlag == 1)
{
var readProcessLotResponse = MesWebServices.readProcessLot(processLotServiceWSServiceParam);
LogHelperBusiness.LogInfo("MES获取膜卷号接口返回参数" + JsonChange.ModeToJson(readProcessLotResponse));
if (readProcessLotResponse.Response.processLotMemberList != null)
{
sfcStr = readProcessLotResponse.Response.processLotMemberList[0].memberContext.Substring(11);
LogHelperBusiness.LogInfo("RFID条码" + rfidStr + "绑定的SFC条码为" + sfcStr);
}
}
else
{
sfcStr = System.Guid.NewGuid().ToString("N").Substring(0, 14);
}
}
catch (Exception ex)
{
LogHelperBusiness.LogInfo("MES获取膜卷号接口调用异常" + ex.Message);
}
return sfcStr;
}
private IBaseServices<ProDownRecord> baseServices = new BaseServices<ProDownRecord>();
private void Seach_Click(object sender, RoutedEventArgs e)
{
RefreshDataGrid();
}
private void RefreshDataGrid()
{
Expression<Func<ProDownRecord, bool>> exp = s1 => true;
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.Contains(this.rfidText.Text.ToString()));
}
if (this.sfcText.Text.ToString() != "")
{
exp = exp.And(x => x.Sfc.Contains(this.sfcText.Text.ToString()));
}
exp = exp.And(x => x.MachineId == appConfig.machineId);
Expression<Func<ProDownRecord, object>> order = x => x.beginTime;
List<ProDownRecord> downRecords = this.SelectDownRecords(exp).Result;
var result = downRecords.Where(x => x.IsProduction == 0).ToList();
if (result != null)
{
result.ForEach(x =>
{
//x.DownMaterialId = x.IsProduction == 1 ? "已生产" : "未生产";
x.IsProduction = downRecords.IndexOf(x) + 1;
if (appConfig.machineId == 4)
{
if (x.Id.Contains("左"))
{
x.Id = x.Id.Replace("左", "右");
}
else if (x.Id.Contains("右"))
{
x.Id = x.Id.Replace("右", "左");
}
}
});
this.DownMaterialDataGrid.ItemsSource = result;
}
}
private async Task<List<ProDownRecord>> SelectDownRecords(Expression<Func<ProDownRecord, bool>> exp)
{
try
{
Expression<Func<ProDownRecord, ProEquip, Object[]>> joinTable = (s1, s2) => new object[]
{
JoinType.Left,
s2.machineId == appConfig.machineId && s2.positionId == s1.PositionId
};
Expression<Func<ProDownRecord, ProEquip, ProDownRecord>> selectWhere = (s1, s2) => new ProDownRecord
{
Id = s2.equipName,
MachineId = s1.MachineId,
PositionId = s1.PositionId,
Rfid = s1.Rfid,
Sfc = s1.Sfc,
IsProduction = s1.IsProduction,
isFinish = s1.isFinish,
RecordTime = s1.RecordTime,
eaValue = s1.eaValue,
beginTime = s1.beginTime,
endTime = s1.endTime,
};
List<ProDownRecord> info = await baseServices.QueryMuch<ProDownRecord, ProEquip, ProDownRecord>(joinTable, selectWhere, exp);
return info;
}
catch (Exception ex)
{
LogHelperBusiness.LogError("下料记录查询异常", ex);
return null;
}
}
private void Split_Click(object sender, RoutedEventArgs e)
{
string eaStr = "";
int roleId = Convert.ToInt32(ConfigHelper.GetConfig("roleId"));
if (roleId > 3 || roleId == 0)
{
System.Windows.MessageBox.Show($"请登录系统管理账号进行操作当前用户角色ID{roleId}");
return;
}
ProDownRecord downRecord = (ProDownRecord)this.DownMaterialDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("未选择异常记录");
return;
}
if (!string.IsNullOrEmpty(downRecord.Sfc))
{
MessageBox.Show($"该物料已经拆分不允许再次拆分,如需完工请点击完工按钮,对应膜卷号为:{downRecord.Sfc}");
return;
}
if (StringExtension.IsBlank(sfcTextBox.Text))
{
MessageBox.Show("请输入放卷位SFC");
return;
}
if (StringExtension.IsBlank(eaTextBox.Text))
{
MessageBox.Show("请输入ea值");
return;
}
else
{
eaStr = eaTextBox.Text;
}
if (Convert.ToString(this.endFlagCombox.SelectedItem) != "")
{
ComboBoxItem endFlag = (ComboBoxItem)this.endFlagCombox.SelectedItem;
if (endFlag.Content.ToString() != null && endFlag.Content.ToString() != "")
{
if (endFlag.Content.ToString() == "是")
{
if (appConfig.processId == "LY_A")
{
eaStr = GetUpMaterialQty(sfcTextBox.Text);
}
else if (appConfig.processId == "MQ_A")
{
var mesEa = GetUpMaterialQty(sfcTextBox.Text);
if (Convert.ToInt32(eaStr) > Convert.ToInt32(mesEa))
{
#region MES注销SFC接口
if (!SignOffSFCs(sfcTextBox.Text)) return;
#endregion
#region MES调整数量接口
if (!AdujustQtySfcByMes(sfcTextBox.Text, Convert.ToInt32(eaStr))) return;
#endregion
#region MES入账开始接口
if (!SFCBegin(sfcTextBox.Text)) return;
#endregion
}
}
}
}
}
Split(downRecord.Rfid, eaStr, sfcTextBox.Text, downRecord.PositionId);
}
private void Complete_Click(object sender, RoutedEventArgs e)
{
int roleId = Convert.ToInt32(ConfigHelper.GetConfig("roleId"));
if (roleId > 3 || roleId == 0)
{
System.Windows.MessageBox.Show($"请登录系统管理账号进行操作当前用户角色ID{roleId}");
return;
}
ProDownRecord downRecord = (ProDownRecord)this.DownMaterialDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("未选择异常记录");
return;
}
if (appConfig.processId != "AB")
{
if (StringExtension.IsBlank(sfcTextBox.Text))
{
MessageBox.Show("请输入放卷位SFC");
return;
}
if (StringExtension.IsBlank(eaTextBox.Text))
{
MessageBox.Show("请输入ea值");
return;
}
string splitSfc = GetSfcByRfid(downRecord.Rfid);
if (StringExtension.IsBlank(splitSfc))
{
MessageBox.Show("RFID条码: " + downRecord.Rfid + "未绑定SFC");
}
Complete(sfcTextBox.Text, splitSfc, downRecord.Rfid, downRecord.PositionId, eaTextBox.Text);
}
else
{
ABComplete(downRecord.Sfc, downRecord.Rfid);
//Complete(sfcTextBox.Text, downRecord.Sfc, downRecord.Rfid, downRecord.PositionId, eaTextBox.Text);
}
}
private void ABComplete(string upMaterialSfc,string RFID)
{
string ea = GetUpMaterialQty(upMaterialSfc);
if (string.IsNullOrEmpty(ea))
{
return;
}
LogHelperBusiness.LogInfo("调用MES手动完工接口");
MaterialTraceability.WebService.MiBatchCompleteSfcAndAdujustQtyServiceService.ModeProcessSfc modeProcessSfc = MaterialTraceability.WebService.MiBatchCompleteSfcAndAdujustQtyServiceService.ModeProcessSfc.MODE_COMPLETE_SFC_POST_DC;
miBatchCompleteSfcAndAdujustQtySfcEntity[] miBatchCompleteSfcAndAdujustQtySfcEntities = new miBatchCompleteSfcAndAdujustQtySfcEntity[]
{
new miBatchCompleteSfcAndAdujustQtySfcEntity()
{
processLot = RFID,
qty = ea,
unit = "EA",
}
};
MiBatchCompleteSfcAndAdujustQtyServiceServiceParam requestParam = new MiBatchCompleteSfcAndAdujustQtyServiceServiceParam()
{
url = inifile.IniReadValue("AdujustQtyParam", "url"),
site = inifile.IniReadValue("AdujustQtyParam", "site"),
sfcPre = upMaterialSfc,
processLotPre = "",
operation = appConfig.operation, //阳极ANCAP1 //阴极CACAP1
operationRevision = inifile.IniReadValue("AdujustQtyParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("AdujustQtyParam", "user"),
activity = inifile.IniReadValue("AdujustQtyParam", "activity"),
modeProcessSfc = modeProcessSfc,
sfcList = miBatchCompleteSfcAndAdujustQtySfcEntities,
};
MiBatchCompleteSfcAndAdujustQtyResponse batchCompleteSfcAndAdujustQtyResponse = new MiBatchCompleteSfcAndAdujustQtyResponse();
DateTime beginTime = DateTime.Now;
try
{
LogHelperBusiness.LogInfo("MES自动完工接口请求参数" + JsonChange.ModeToJson(requestParam));
if (appConfig.isMesFlag == 1)
{
if (!StringExtension.IsBlank(upMaterialSfc))
{
batchCompleteSfcAndAdujustQtyResponse = MesWebServices.iMiBatchCompleteSfcAndAdujustQtyServiceService(requestParam);
LogHelperBusiness.LogInfo("MES自动完工接口返回参数" + JsonChange.ModeToJson(batchCompleteSfcAndAdujustQtyResponse));
var result = batchCompleteSfcAndAdujustQtyResponse.@return;
if (result.code > 0)
{
LogHelperBusiness.LogInfo("MES自动完工接口调用失败" + result.message);
MessageBox.Show("MES自动完工接口调用失败" + result.message);
}
}
else
{
LogHelperBusiness.LogInfo("MES自动完工接口调用失败收卷SFC为空");
MessageBox.Show("MES自动完工接口调用失败收卷SFC为空");
}
LogHelperBusiness.LogInfo("MES自动完工接口调用成功");
MessageBox.Show("MES自动完工接口调用成功");
}
}
catch (Exception ex)
{
LogHelperBusiness.LogInfo("MES自动完工接口调用异常"+ ex.Message);
}
}
private string GetLyShaftName(int positionId)
{
string shaftName = "";
if (positionId == 1) shaftName = "1A轴内侧";
if (positionId == 2) shaftName = "1A轴外侧";
if (positionId == 3) shaftName = "1B轴外侧";
if (positionId == 4) shaftName = "1B轴内侧";
if (positionId == 5) shaftName = "2A轴内侧";
if (positionId == 6) shaftName = "2A轴外侧";
if (positionId == 7) shaftName = "2B轴外侧";
if (positionId == 8) shaftName = "2B轴内侧";
return shaftName;
}
/// <summary>
/// 获取放卷位EA值
/// </summary>
/// <param name="bindSfc"></param>
/// <returns></returns>
private string GetUpMaterialQty(string bindSfc)
{
MiSFCQueryQtyServiceServiceParam sFCQueryQtyServiceServiceParam = new MiSFCQueryQtyServiceServiceParam()
{
url = inifile.IniReadValue("MiSFCQueryQtyServiceServiceParam", "url"),
site = inifile.IniReadValue("MiSFCQueryQtyServiceServiceParam", "site"),
sfc = bindSfc
};
DateTime beginTime = DateTime.Now;
try
{
if (appConfig.isMesFlag == 1)
{
var sfcQueryQtyResponse = MesWebServices.iMiSFCQueryQtyServiceService(sFCQueryQtyServiceServiceParam);
if (sfcQueryQtyResponse.@return.code > 0)
{
LogHelperBusiness.LogInfo(String.Format("通过MES接口获取物料{0}的SFC数量失败:{1}", bindSfc, upLoadBusiness.GetMesMessage(sfcQueryQtyResponse.@return.code, sfcQueryQtyResponse.@return.message)));
return "";
}
return sfcQueryQtyResponse.@return.qty;
}
else
{
return "2600";
}
}
catch (Exception ex)
{
LogHelperBusiness.LogInfo(String.Format("MES获取SFC数量接口异常:{0}", ex.Message));
return "";
}
}
/// <summary>
/// 注销SFC
/// </summary>
/// <param name="sfcStr"></param>
/// <returns></returns>
private bool SignOffSFCs(string sfcStr)
{
MiSignOffSFCsServiceServiceParam miSignOffSFCsServiceServiceParam = new MiSignOffSFCsServiceServiceParam()
{
url = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "url"),
site = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "site"),
user = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "user"),
operation = appConfig.operation,
operationRevision = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "operationRevision"),
activityId = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "activityId"),
Resource = appConfig.resource,
amount = inifile.IniReadValue("MiSignOffSFCsServiceServiceParam", "amount"),
sfcDataArray = null,
sfc = sfcStr,
};
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 == null || signOffSFCsResponse.@return.code > 0)
{
LogHelperBusiness.LogInfo("注销SFC接口调用失败" + signOffSFCsResponse.@return.message);
MessageBox.Show("注销SFC接口调用失败" + signOffSFCsResponse.@return.message);
return false;
}
}
}
catch (Exception ex)
{
LogHelperBusiness.LogInfo("注销SFC接口调用异常" + ex.Message);
MessageBox.Show("注销SFC接口调用异常" + ex.Message);
return false;
}
return true;
}
/// <summary>
/// 调整SFC MES账目数量
/// </summary>
/// <param name="sfcStr"></param>
/// <param name="PLCqty"></param>
/// <returns></returns>
private bool AdujustQtySfcByMes(string sfcStr, int PLCqty)
{
bool boolFlag = false;
try
{
MiBatchCompleteSfcAndAdujustQtyServiceServiceParam miBatchCompleteSfcAndAdujustQtyServiceServiceParam = new MiBatchCompleteSfcAndAdujustQtyServiceServiceParam()
{
url = inifile.IniReadValue("AdujustQtyParam", "url"),
site = inifile.IniReadValue("AdujustQtyParam", "site"),
sfcPre = sfcStr,
processLotPre = "",
operation = appConfig.operation,
operationRevision = inifile.IniReadValue("AdujustQtyParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("AdujustQtyParam", "user"),
activity = inifile.IniReadValue("AdujustQtyParam", "activity"),
modeProcessSfc = MaterialTraceability.WebService.MiBatchCompleteSfcAndAdujustQtyServiceService.ModeProcessSfc.MODE_NONE,
sfcList = new miBatchCompleteSfcAndAdujustQtySfcEntity[]
{
new miBatchCompleteSfcAndAdujustQtySfcEntity()
{
processLot = "",
sfc = sfcStr,
qty = PLCqty.ToString(),
unit = "EA"
}
}
};
LogHelperBusiness.LogInfo("MES调整数量接口请求参数" + JsonChange.ModeToJson(miBatchCompleteSfcAndAdujustQtyServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
var requestResult = MesWebServices.iMiBatchCompleteSfcAndAdujustQtyServiceService(miBatchCompleteSfcAndAdujustQtyServiceServiceParam);
LogHelperBusiness.LogInfo("MES调整数量接口返回参数" + JsonChange.ModeToJson(requestResult));
if (requestResult.@return.code > 0)
{
LogHelperBusiness.LogInfo("MES调整数量接口调用失败" + upLoadBusiness.GetMesMessage(requestResult.@return.code, requestResult.@return.message));
MessageBox.Show("MES调整数量接口调用失败:" + upLoadBusiness.GetMesMessage(requestResult.@return.code, requestResult.@return.message));
}
else
{
boolFlag = true;
}
}
}
catch (Exception ex)
{
MessageBox.Show("MES调整数量接口调用异常:" + ex.Message);
}
return boolFlag;
}
/// <summary>
/// 自动入账开始SFC
/// </summary>
/// <param name="sfcStr"></param>
/// <returns></returns>
private bool SFCBegin(string sfcStr)
{
MiFirstOperationForsfcServiceServiceParam miFirstOperationForsfcServiceServiceParam = new MiFirstOperationForsfcServiceServiceParam()
{
url = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "url"),
site = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "site"),
sfc = sfcStr,
processLot = "",
operation = appConfig.operation,
operationRevision = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "operationRevision"),
resource = appConfig.resource,
user = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "user"),
activity = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "activity"),
modeProcessSfc = inifile.IniReadValue("MiFirstOperationForsfcServiceServiceParam", "modeProcessSfc"),
};
try
{
LogHelperBusiness.LogInfo("调用A面自动入账接口请求参数" + JsonChange.ModeToJson(miFirstOperationForsfcServiceServiceParam));
if (appConfig.isMesFlag == 1)
{
miFirstOperationForsfcResponse firstOperationForsfcResponse = MesWebServices.iMiFirstOperationForsfcServiceService(miFirstOperationForsfcServiceServiceParam);
LogHelperBusiness.LogInfo("调用A面自动入账接口返回参数" + JsonChange.ModeToJson(firstOperationForsfcResponse));
if (firstOperationForsfcResponse.@return.code > 0)
{
MessageBox.Show("MES自动入账开始接口调用失败" + firstOperationForsfcResponse.@return.message);
LogHelperBusiness.LogInfo("MES自动入账开始接口调用失败" + firstOperationForsfcResponse.@return.message);
return false;
}
}
}
catch (Exception ex)
{
MessageBox.Show("调用MES自动入账接口异常" + ex.Message);
LogHelperBusiness.LogInfo("调用MES自动入账接口异常" + ex.Message);
return false;
}
return true;
}
/// <summary>
/// 模切最后一卷防呆
/// </summary>
/// <param name="positionId"></param>
/// <param name="shaftInfo"></param>
/// <returns></returns>
private async Task<bool> spiltPreventDaze(int positionId, string bindSfc)
{
//判断卷轴位置上轴1、3奇数下轴2、4偶数
if (positionId % 2 == 0)
{
Expression<Func<ProDownRecord, bool>> exp = s1 => true;
exp = exp.And(x => x.Sfc.Contains(bindSfc));
List<ProDownRecord> downRecords = await baseServices.Query(exp);
LogHelperBusiness.LogInfo(string.Format("PositionId:{0};SFC:{1};下料记录:{2}", positionId, bindSfc, downRecords.Count));
if (downRecords.Count % 2 == 0)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
/// <summary>
/// 通过数据库获取Tailmark标识
/// </summary>
/// <param name="rfid"></param>
/// <param name="positionId"></param>
/// <param name="is_production"></param>
/// <returns></returns>
private async Task<string> GetTailmark(string rfid,int positionId,int is_production)
{
try
{
Expression<Func<ProDownRecord, bool>> exp = s1 => true;
exp = exp.And(x => x.Rfid == rfid && x.PositionId == positionId && x.IsProduction == is_production);
Expression<Func<ProDownRecord, object>> order = s1 => s1.RecordTime;
ProDownRecord downRecord = await baseServices.QueryFirst(exp, order, false);
if (downRecord != null)
{
return downRecord.shaftNumber;
}
else
{
return "";
}
}catch (Exception)
{
return "";
}
}
}
}