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.

771 lines
40 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.Param;
using MaterialTraceabilityUI.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;
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 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 (upLoadBusiness.JudgeResourceIsUplpadData())
{
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")
{
ComboBoxItem endFlag = (ComboBoxItem)this.endFlagCombox.SelectedItem;
if (endFlag.Content.ToString() != null && endFlag.Content.ToString() != "")
{
if (endFlag.Content.ToString() == "是")
{
requestParam.tailmark = "X";
}
}
else
{
MessageBox.Show("请选择是否为最后一卷");
}
}
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 (upLoadBusiness.JudgeResourceIsUplpadData())
{
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;
}
data = GetMqMaterialFeature(sfcStr, positionId);
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 = upLoadBusiness.GerDcGroupByResource(),
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 == "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();
}
}
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(lyUpLoad.downPosition)?"0":lyUpLoad.downPosition},
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},
};
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="0"},
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="0"},
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 = "";
if (!"1".Equals(ConfigHelper.GetConfig("roleId")) && !"2".Equals(ConfigHelper.GetConfig("roleId")))
{
System.Windows.MessageBox.Show("请登录系统管理账号进行操作");
return;
}
ProDownRecord downRecord = (ProDownRecord)this.DownMaterialDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("未选择异常记录");
return;
}
if (StringExtension.IsBlank(sfcTextBox.Text))
{
MessageBox.Show("请输入放卷位SFC");
return;
}
if (StringExtension.IsBlank(eaTextBox.Text))
{
MessageBox.Show("请输入ea值");
return;
}
else
{
eaStr = sfcTextBox.Text;
}
//判断是否为冷压工序是否为最后一卷最后一卷按照MES EA进行拆分
if (appConfig.processId == "LY_A")
{
if (Convert.ToString(this.endFlagCombox.SelectedItem) != "")
{
ComboBoxItem endFlag = (ComboBoxItem)this.endFlagCombox.SelectedItem;
if (endFlag.Content.ToString() != null && endFlag.Content.ToString() != "")
{
if (endFlag.Content.ToString() == "是")
{
eaStr = GetUpMaterialQty(downRecord.PositionId, sfcTextBox.Text);
}
}
}
}
Split(downRecord.Rfid,eaTextBox.Text, eaStr, downRecord.PositionId);
}
private void Complete_Click(object sender, RoutedEventArgs e)
{
if (!"1".Equals(ConfigHelper.GetConfig("roleId")) && !"2".Equals(ConfigHelper.GetConfig("roleId")))
{
System.Windows.MessageBox.Show("请登录系统管理账号进行操作");
return;
}
ProDownRecord downRecord = (ProDownRecord)this.DownMaterialDataGrid.SelectedItem;
if (downRecord == null)
{
MessageBox.Show("未选择异常记录");
return;
}
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);
}
private string GetLyShaftName(int positionId)
{
string shaftName = "";
if (positionId == 1) shaftName = "1A轴";
if (positionId == 2) shaftName = "1B轴";
if (positionId == 3) shaftName = "2A轴";
if (positionId == 4) shaftName = "2B轴";
return shaftName;
}
/// <summary>
/// 获取放卷位EA值
/// </summary>
/// <param name="bindSfc"></param>
/// <returns></returns>
private string GetUpMaterialQty(int position, 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 "";
}
}
}
}