using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.ServiceModel;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA.Common;
|
using WIDESEA.Core.Utilities;
|
using WIDESEA.Entity.DomainModels;
|
using WIDESEA.Services.Repositories;
|
using WIDESEA.Services.Services.ToMes;
|
using WIDESEA_Common.LogEnum;
|
using WIDESEA_Services;
|
|
namespace WIDESEA.Services.Services.ToMeasureDevice
|
{
|
public class ToMeasureDeviceService
|
{
|
|
/// <summary>
|
/// 测量设备调用该接口,获取测量需要的数据
|
/// </summary>
|
/// <returns></returns>
|
public static Dictionary<string, object> GetGoodsInformation()
|
{
|
Dictionary<string, object> resultDic = new Dictionary<string, object>();
|
//string state = "成功";
|
try
|
{
|
Dictionary<string, object> dataDic = new Dictionary<string, object>();
|
|
Dt_taskinfo taskinfo = Dt_taskinfoRepository.Instance.FindFirst(x => x.task_state == TaskState.TaskState_Measureing.ToString());
|
//Dt_taskinfo taskinfo = Dt_taskinfoRepository.Instance.FindFirst(x => x.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString());
|
if (taskinfo != null)
|
{
|
VV_ContainerInfo containerInfo = VV_ContainerInfoRepository.Instance.FindFirst(x => x.containerhead_barcode == taskinfo.task_barcode);
|
if (containerInfo != null)
|
{
|
dataDic.Add("operator", containerInfo.containerdtl_operator);
|
dataDic.Add("identifierNo", containerInfo.containerdtl_goodsCode);
|
dataDic.Add("inboundUnit", containerInfo.containerdtl_inboundUnit);
|
dataDic.Add("inboundDate", containerInfo.containerhead_createtime);
|
string standard = containerInfo.containerdtl_standard.Contains("0") ? "新品" : "检修";
|
dataDic.Add("standard", standard);
|
// dataDic.Add("standard", "新品");
|
dataDic.Add("carType", containerInfo.containerdtl_carType);
|
//dataDic.Add("carType", "CRH2A");
|
dataDic.Add("type", containerInfo.containerdtl_type);
|
//dataDic.Add("type", "F-80781112TAROL130/240-B-TVP");
|
dataDic.Add("barcode", containerInfo.containerhead_barcode);
|
dataDic.Add("madeUnit", containerInfo.containerdtl_madeUnit);
|
dataDic.Add("madeDate", containerInfo.containerdtl_madeDate);
|
dataDic.Add("number", containerInfo.containerdtl_number);
|
resultDic.Add("status", true);
|
resultDic.Add("message", "Success");
|
resultDic.Add("data", dataDic);
|
|
LogRecord.WriteLog((int)LogEnum.MeasureResult, $"===发送===>发送给测量设备的信息数据:{JsonConvert.SerializeObject(dataDic)}");
|
}
|
else
|
throw new Exception("没有找到测量信息");
|
}
|
else
|
throw new Exception("当前没有正在进行的测量任务");
|
}
|
catch (Exception ex)
|
{
|
resultDic.Add("status", false);
|
resultDic.Add("message", ex.Message);
|
resultDic.Add("data", null);
|
//state = "失败";
|
LogRecord.WriteLog((int)LogEnum.MeasureResult, $"===发送===>发送给测量设备的信息数据失败:{JsonConvert.SerializeObject(resultDic)}");
|
}
|
//CommonFunction.AddInterfaceLogAction(null, resultDic, state, "GetGoodsInformation");
|
return resultDic;
|
}
|
|
|
/// <summary>
|
/// 测量设备对轴承测量完毕后,调用该接口向WMS上报测量结果
|
/// </summary>
|
/// <returns></returns>
|
public static Dictionary<string, object> PostGoodsData(Dictionary<string, object> data)
|
{
|
Dictionary<string, object> resultDic = new Dictionary<string, object>();
|
//string state = "成功";
|
try
|
{
|
LogRecord.WriteLog((int)LogEnum.MeasureResult, $"===接收===>接收到测量设备的测量结果:{JsonConvert.SerializeObject(data)}");
|
|
//获取轴承识别号,找到对应的测量记录,将测量数据填充
|
string identitfierId = data["ID"].ToString();
|
//
|
Dt_container_size_info container_Size_Info = Dt_container_size_infoRepository.Instance.FindFirst(x => x.csize_barcode == identitfierId);
|
//Dt_container_size_info container_Size_Info = Dt_container_size_infoRepository.Instance.FindFirst(x => true);
|
if (container_Size_Info != null)
|
{
|
container_Size_Info.csize_in_1 = data["BearingInnerDiameter11"].ToString();
|
container_Size_Info.csize_in_2 = data["BearingInnerDiameter12"].ToString();
|
container_Size_Info.csize_in_3 = data["BearingInnerDiameter13"].ToString();
|
container_Size_Info.csize_in_4 = data["BearingInnerDiameter14"].ToString() + "_" + data["BearingInnerDiameter1Avg"].ToString();
|
|
container_Size_Info.csize_in_5 = data["BearingInnerDiameter21"].ToString();
|
container_Size_Info.csize_in_6 = data["BearingInnerDiameter22"].ToString();
|
container_Size_Info.csize_in_7 = data["BearingInnerDiameter23"].ToString();
|
container_Size_Info.csize_in_8 = data["BearingInnerDiameter24"].ToString() + "_" + data["BearingInnerDiameter2Avg"].ToString();
|
|
container_Size_Info.csize_in_9 = data["BearingInnerDiameter31"].ToString();
|
container_Size_Info.csize_in_10 = data["BearingInnerDiameter32"].ToString();
|
container_Size_Info.csize_in_11 = data["BearingInnerDiameter33"].ToString();
|
container_Size_Info.csize_in_12 = data["BearingInnerDiameter34"].ToString() + "_" + data["BearingInnerDiameter3Avg"].ToString();
|
|
container_Size_Info.csize_in_13 = data["BearingInnerDiameter41"].ToString();
|
container_Size_Info.csize_in_14 = data["BearingInnerDiameter42"].ToString();
|
container_Size_Info.csize_in_15 = data["BearingInnerDiameter43"].ToString();
|
container_Size_Info.csize_in_16 = data["BearingInnerDiameter44"].ToString() + "_" + data["BearingInnerDiameter4Avg"].ToString();
|
//轴承内径平均值
|
container_Size_Info.csize_in_value = data["BearingInnerDiameterAvg"].ToString();
|
//轴承内径合格否
|
container_Size_Info.csize_in_result = data["BearingInnerDiameterQualified"].ToString();
|
|
|
container_Size_Info.csize_out_1 = data["BearingOuterDiameter11"].ToString();
|
container_Size_Info.csize_out_2 = data["BearingOuterDiameter12"].ToString();
|
container_Size_Info.csize_out_3 = data["BearingOuterDiameter13"].ToString();
|
container_Size_Info.csize_out_4 = data["BearingOuterDiameter14"].ToString() + "_" + data["BearingOuterDiameter1Avg"].ToString();
|
|
container_Size_Info.csize_out_5 = data["BearingOuterDiameter21"].ToString();
|
container_Size_Info.csize_out_6 = data["BearingOuterDiameter22"].ToString();
|
container_Size_Info.csize_out_7 = data["BearingOuterDiameter23"].ToString();
|
container_Size_Info.csize_out_8 = data["BearingOuterDiameter24"].ToString() + "_" + data["BearingOuterDiameter2Avg"].ToString();
|
|
container_Size_Info.csize_out_9 = data["BearingOuterDiameter31"].ToString();
|
container_Size_Info.csize_out_10 = data["BearingOuterDiameter32"].ToString();
|
container_Size_Info.csize_out_11 = data["BearingOuterDiameter33"].ToString();
|
container_Size_Info.csize_out_12 = data["BearingOuterDiameter34"].ToString() + "_" + data["BearingOuterDiameter3Avg"].ToString();
|
|
container_Size_Info.csize_out_13 = data["BearingOuterDiameter41"].ToString();
|
container_Size_Info.csize_out_14 = data["BearingOuterDiameter42"].ToString();
|
container_Size_Info.csize_out_15 = data["BearingOuterDiameter43"].ToString();
|
container_Size_Info.csize_out_16 = data["BearingOuterDiameter44"].ToString() + "_" + data["BearingOuterDiameter4Avg"].ToString();
|
//轴承外径平均值
|
container_Size_Info.csize_out_value = data["BearingOuterDiameterAvg"].ToString();
|
//轴承外径合格否
|
container_Size_Info.csize_out_result = data["BearingOuterDiameterQualified"].ToString();
|
|
|
container_Size_Info.csize_three_1 = data["BearingOilGearDiameter1"].ToString();
|
container_Size_Info.csize_three_2 = data["BearingOilGearDiameter2"].ToString();
|
//挡油内径平均值
|
container_Size_Info.csize_three_3 = data["BearingOilGearDiameterAvg"].ToString();
|
//挡油内径合格否
|
container_Size_Info.csize_three_result = data["BearingOilGearDiameterQualified"].ToString();
|
|
container_Size_Info.csize_four_1 = data["BearingTailgateDiameter1"].ToString();
|
container_Size_Info.csize_four_2 = data["BearingTailgateDiameter2"].ToString();
|
//后挡内径平均值
|
container_Size_Info.csize_four_3 = data["BearingTailgateDiameterAvg"].ToString();
|
//后挡内径合格否
|
container_Size_Info.csize_four_result = data["BearingTailgateDiameterQualified"].ToString();
|
|
Dt_container_size_infoRepository.Instance.Update(container_Size_Info, true);
|
|
Guid id = Guid.Parse(container_Size_Info.csize_container_detail_id);
|
Dt_container_detail detail = Dt_container_detailRepository.Instance.FindFirst(r => r.containerdtl_id == id);
|
if (null != detail)
|
{
|
detail.containerdtl_text1 = "已测量";
|
detail.containerdtl_text2 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
data.Add("weight", detail.containerdtl_goodsWeight);
|
string uploadStatus = "未上传";
|
string result = "合格";
|
if ("不合格".Equals(container_Size_Info.csize_in_result) || "不合格".Equals(container_Size_Info.csize_out_result)
|
|| "不合格".Equals(container_Size_Info.csize_three_result) || "不合格".Equals(container_Size_Info.csize_four_result))
|
result = "不合格";
|
else
|
{
|
string resultString = string.Empty;
|
try
|
{
|
EndpointAddress address = new EndpointAddress(ToMesService.POSTURL);
|
ErpWebService.Service_EQPSoapClient client = new ErpWebService.Service_EQPSoapClient(new BasicHttpBinding(), address);
|
Task<ErpWebService.ReportToSCEResponse> res = client.ReportToSCEAsync(detail.containerdtl_number, JsonConvert.SerializeObject(data));
|
resultString = res.Result.Body.ReportToSCEResult;
|
uploadStatus = "已上传";
|
}
|
catch
|
{
|
|
}
|
finally
|
{
|
LogRecord.WriteLog((int)LogEnum.Mes, $"测量上传MES参数:{JsonConvert.SerializeObject(data)},结果:{resultString}");
|
}
|
}
|
detail.containerdtl_text3 = result;
|
Dt_container_detailRepository.Instance.Update(detail, x => new { x.containerdtl_text1, x.containerdtl_text2, x.containerdtl_text3 }, true);
|
|
Dt_container_head head = Dt_container_headRepository.Instance.FindFirst(r => r.containerhead_id == Guid.Parse(detail.containerdtl_headid));
|
Dt_taskinfo task = Dt_taskinfoRepository.Instance.FindFirst(r => r.task_barcode == head.containerhead_barcode);
|
if (null == task)
|
task = new Dt_taskinfo() { task_creator = "手动上传." };
|
|
dt_measureRecord record = new dt_measureRecord()
|
{
|
measure_barcode = head.containerhead_barcode,
|
measure_createTime = DateTime.Now,
|
measure_fcbAVG = string.IsNullOrEmpty(container_Size_Info.csize_four_3) ? 0 : decimal.Parse(container_Size_Info.csize_four_3),
|
measure_fcbAVG_result = container_Size_Info.csize_four_result,
|
measure_id = Guid.NewGuid(),
|
measure_locationId = task.task_fromlocationid,
|
measure_madeUnit = detail.containerdtl_madeUnit,
|
measure_materielId = detail.containerdtl_materielid,
|
measure_materielNumber = detail.containerdtl_goodsCode,
|
measure_materielType = detail.containerdtl_type,
|
measure_standa = detail.containerdtl_standard,
|
measure_userName = task.task_creator,
|
measure_weight = string.IsNullOrEmpty(detail.containerdtl_goodsWeight) ? 0 : decimal.Parse(detail.containerdtl_goodsWeight),
|
measure_ydAVG = string.IsNullOrEmpty(container_Size_Info.csize_three_3) ? 0 : decimal.Parse(container_Size_Info.csize_three_3),
|
measure_ydAVG_result = container_Size_Info.csize_three_result,
|
measure_zjAVG = string.IsNullOrEmpty(container_Size_Info.csize_in_value) ? 0 : decimal.Parse(container_Size_Info.csize_in_value),
|
measure_zjAVG_result = container_Size_Info.csize_in_result,
|
measure_result = result,
|
measure_wjAVG = string.IsNullOrEmpty(container_Size_Info.csize_out_value) ? 0 : decimal.Parse(container_Size_Info.csize_out_value),
|
measure_wj_result = container_Size_Info.csize_out_result,
|
};
|
if (result.Equals("合格"))
|
{
|
record.measure_uploadData = JsonConvert.SerializeObject(data);
|
record.measure_uploadResult = uploadStatus;
|
record.measure_uploadTime = DateTime.Now;
|
record.measure_uploadUser = "system";
|
}
|
dt_measureRecordRepository.Instance.Add(record, true);
|
}
|
resultDic.Add("status", "1");
|
resultDic.Add("message", "Success");
|
resultDic.Add("data", null);
|
}
|
else
|
{
|
resultDic.Add("status", "-1");
|
resultDic.Add("message", $"没有找到对应ID的轴承记录:【{identitfierId}】");
|
resultDic.Add("data", null);
|
//state = "失败";
|
}
|
}
|
catch (Exception ex)
|
{
|
resultDic.Add("status", "-1");
|
resultDic.Add("message", ex.Message);
|
resultDic.Add("data", null);
|
// state = "失败";
|
}
|
|
//CommonFunction.AddInterfaceLogAction(data, resultDic, state, "PostGoodsData");
|
return resultDic;
|
}
|
|
|
|
/// <summary>
|
/// 测量设备调用此接口上报设备状态,同时作为心跳检测接口确保与WMS的连接
|
/// </summary>
|
/// <param name="data"></param>
|
/// <returns></returns>
|
public static Dictionary<string, object> PostDeviceStatus(Dictionary<string, object> data)
|
{
|
|
Dictionary<string, object> resultDic = new Dictionary<string, object>();
|
try
|
{
|
//设备编号
|
string EquipmentNumber = data["EquipmentNumber"].ToString();
|
//设备状态
|
//0=正常进行
|
//1=设备异常报警
|
//2=测量数据异常报警
|
//3=暂停
|
//4=停止
|
string EquipmentStatus = data["EquipmentStatus"].ToString();
|
//设备状态具体信息、报警状态详细信息
|
string StatusInformation = data["StatusInformation"].ToString();
|
//上报时间
|
string OperationTime = data["OperationTime"].ToString();
|
|
string heartStatus = "onLine";
|
|
LogRecord.WriteLog((int)LogEnum.MeasureHeart, $"接收到测量设备的状态上报数据:{JsonConvert.SerializeObject(data)}");
|
|
Dt_general_info general_Info = Dt_general_infoRepository.Instance.FindFirst(x => true);
|
general_Info.general_measure_device_status = EquipmentStatus;
|
general_Info.general_measure_device_heart = heartStatus;
|
|
Dt_general_infoRepository.Instance.Update(general_Info, true);
|
|
resultDic.Add("status", "1");
|
resultDic.Add("message", "Success");
|
resultDic.Add("data", null);
|
|
}
|
catch (Exception ex)
|
{
|
resultDic.Add("status", "-1");
|
resultDic.Add("message", ex.Message);
|
resultDic.Add("data", null);
|
}
|
//CommonFunction.AddInterfaceLogAction(data, resultDic, state, "PostDeviceStatus");
|
return resultDic;
|
|
}
|
|
}
|
}
|