using MaterialTraceability.Business;
using MaterialTraceability.Entity.DAO;
using MaterialTraceability.Entity.DTO;
using MaterialTraceability.Entity.UpLoad;
using MaterialTraceability.SqlSugar;
using MaterialTraceability.SqlSugar.ServiceImpl;
using MaterialTraceability.WebService;
using MaterialTraceability.WebService.MachineIntegrationServiceService;
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
{
///
/// ShaftInfoControl.xaml 的交互逻辑
///
public partial class ShaftInfoControl : UserControl
{
private IBaseServices baseServices = new BaseServices();
private UpLoadBusiness upLoadBusiness = UpLoadBusiness.Instance;
private IBaseServices downRecordServices = new BaseServices();
//上料记录
private IBaseServices upRecordServices = new BaseServices();
private UpLoadBusiness loadBusiness = UpLoadBusiness.Instance;
private AppConfigDto appConfig = AppConfigDto.Instance;
///
/// Mes WebService接口
///
private IMesWebServices MesWebServices = new MesWebServicesImpl();
public ShaftInfoControl()
{
InitializeComponent();
}
private void Seach_Click(object sender, RoutedEventArgs e)
{
Refresh();
}
private void Refresh()
{
Expression> exp = s1 => true;
exp = exp.And(x => x.processId.Equals(appConfig.processId));
List recordLogInfos = baseServices.Query(exp).Result;
foreach(var x in recordLogInfos)
{
x.processId = x.endFlag == 1 ? "是" : "否";
if (appConfig.machineId == 4)
{
if (x.shaftName.Contains("左"))
{
x.shaftName = x.shaftName.Replace("左", "右");
continue;
}
if (x.shaftName.Contains("右"))
{
x.shaftName = x.shaftName.Replace("右", "左");
continue;
}
}
}
this.ReadRecordDataGrid.ItemsSource = recordLogInfos;
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
//if(appConfig.processId.Contains("MQ"))
//{
// this.save.Visibility = Visibility.Visible;
//}
//if (!appConfig.processId.Contains("TB") && loadBusiness.JudgeResourceIsUplpadData())
//{
// this.sfcLabel.Visibility = Visibility.Visible;
// this.sfcStr.Visibility = Visibility.Visible;
// this.upLoad.Visibility = Visibility.Visible;
//}
Refresh();
}
private void Save_Click(object sender, RoutedEventArgs e)
{
if (!"1".Equals(ConfigHelper.GetConfig("roleId")) && !"2".Equals(ConfigHelper.GetConfig("roleId")))
{
System.Windows.MessageBox.Show("请登录系统管理账号进行操作");
}
try
{
ProShaftInfo shaftInfo = (ProShaftInfo)this.ReadRecordDataGrid.SelectedItem;
if (shaftInfo == null)
{
MessageBox.Show("未选择绑定信息");
return;
}
LogHelperBusiness.LogInfo("手动修改绑定信息:"+JsonChange.ModeToJson(shaftInfo));
Expression> exp = s1 => true;
exp = exp.And(x => x.processId == appConfig.processId && x.positionId == shaftInfo.positionId);
Expression> order = s1 => s1.bindTime;
ProShaftInfo info = baseServices.QueryFirst(exp, order, false).Result;
if (info == null)
{
MessageBox.Show("绑定信息为空");
return;
}
else
{
info.bindRfid = shaftInfo.bindRfid;
info.bindSfc = shaftInfo.bindSfc;
info.bindEaValue = shaftInfo.bindEaValue;
bool result = baseServices.Update(info).Result;
if (result)
{
MessageBox.Show("保存成功");
Refresh();
if(Convert.ToInt32(shaftInfo.positionId) < 4)
{
//添加下料记录
downRecordServices.Add(new ProDownRecord()
{
Id = System.Guid.NewGuid().ToString("N"),
MachineId = appConfig.machineId,
PositionId = Convert.ToInt32(shaftInfo.positionId),
Rfid = shaftInfo.bindRfid,
Sfc = shaftInfo.bindSfc,
IsProduction = 0,
beginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
RecordTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
});
}
else
{
//添加上料记录
upRecordServices.Add(new ProUpRecord()
{
Id = System.Guid.NewGuid().ToString(),
MachineId = appConfig.machineId,
PositionId = Convert.ToInt32(shaftInfo.positionId),
Rfid = shaftInfo.bindRfid,
IsProduction = 0,
Sfc = shaftInfo.bindSfc,
eaValue = Convert.ToInt32(shaftInfo.bindEaValue),
RecordTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
beginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
});
}
}
else
{
MessageBox.Show("保存失败");
}
}
}catch(Exception ex)
{
LogHelperBusiness.LogError("保存绑定信息异常",ex);
}
}
///
/// 上传数据并完工
///
///
///
private void UpLoad_Click(object sender, RoutedEventArgs e)
{
//通过服务器获取膜卷号绑定的数据
ProShaftInfo shaftInfo = (ProShaftInfo)this.ReadRecordDataGrid.SelectedItem;
if (shaftInfo == null)
{
MessageBox.Show("未选择绑定信息");
return;
}
else
{
MachineIntegrationServiceParam machineIntegrationServiceParam = new MachineIntegrationServiceParam();
if(appConfig.processId.Contains("MQ"))
{
MqUpLoad mqUpLoad = GetMqUpLoad(shaftInfo);
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},
};
machineIntegrationServiceParam = new MachineIntegrationServiceParam()
{
url = "http://lymesa.catlbattery.com:8103/atlmeswebservice/MachineIntegrationServiceService?wsdl",
site = "2100",
// sfc = this.sfcStr.Text.ToString(), //将数据上传至拆分后的膜卷号
operation = mqUpLoad.operation,
operationRevision = "#",
activityId = "EAP_WS",
resource = mqUpLoad.resource,
dcGroup = mqUpLoad.dcGroup,
dcGroupRevision = "#",
parametricArray = data,
modeProcessSfc = MaterialTraceability.WebService.MachineIntegrationServiceService.ModeProcessSfc.MODE_COMPLETE_SFC_POST_DC
};
}
if (appConfig.processId.Contains("LY"))
{
LyUpLoad lyUpLoad = GetLyUpLoad(shaftInfo);
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},
};
machineIntegrationServiceParam = new MachineIntegrationServiceParam()
{
url = "http://lymesa.catlbattery.com:8103/atlmeswebservice/MachineIntegrationServiceService?wsdl",
site = "2100",
//sfc = this.sfcStr.Text.ToString(), //将数据上传至拆分后的膜卷号
operation = lyUpLoad.operation,
operationRevision = "#",
activityId = "EAP_WS",
resource = lyUpLoad.resource,
dcGroup = lyUpLoad.dcGroup,
dcGroupRevision = "#",
parametricArray = data,
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("数据上传完工成功");
}
}
}
///
/// 获取冷压膜卷号绑定的特征数据
///
///
///
private LyUpLoad GetLyUpLoad(ProShaftInfo shaftInfo)
{
LyUpLoad lyUpLoad = new LyUpLoad();
SqlSugarClient _db = SqlGenerator.GetMySqlInstance();
if (StringExtension.IsNotBlank(shaftInfo.bindSfc))
{
DataTable info = _db.Queryable().Where(x => x.sfcStr == shaftInfo.bindSfc && x.positionId == Convert.ToInt32(shaftInfo.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();
}
}
else
{
MessageBox.Show("请在绑定信息中输入放卷位膜卷号");
}
return lyUpLoad;
}
///
/// 获取模切膜卷号绑定的特征数据
///
///
///
private MqUpLoad GetMqUpLoad(ProShaftInfo shaftInfo)
{
MqUpLoad mqUpLoad = new MqUpLoad();
SqlSugarClient _db = SqlGenerator.GetMySqlInstance();
if (StringExtension.IsNotBlank(shaftInfo.bindSfc)){
DataTable info = _db.Queryable().Where(x => x.sfcStr == shaftInfo.bindSfc && x.positionId == Convert.ToInt32(shaftInfo.positionId)).ToDataTable();
if(info.Rows.Count > 0)
{
DataRow dataRow = info.Rows[0];
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();
}
}
LogHelperBusiness.LogInfo("手动上传重量特征数据:" + JsonChange.ModeToJson(mqUpLoad));
return mqUpLoad;
}
}
}