using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
|
using Quartz;
|
using System.Linq;
|
using System.Text;
|
using WIDESEAWCS_BasicInfoService;
|
using WIDESEAWCS_Common;
|
using WIDESEAWCS_Common.PLCEnum;
|
using WIDESEAWCS_Communicator;
|
using WIDESEAWCS_Core;
|
using WIDESEAWCS_Core.BaseRepository;
|
using WIDESEAWCS_Core.Helper;
|
using WIDESEAWCS_DTO.BasicInfo;
|
using WIDESEAWCS_IBasicInfoService;
|
using WIDESEAWCS_Model.Models;
|
using WIDESEAWCS_QuartzJob;
|
|
namespace WIDESEAWCS_Tasks
|
{
|
[DisallowConcurrentExecution]
|
public class PLCJob : JobBase, IJob
|
{
|
private readonly IBoxingService _boxingService;
|
private readonly IBoxingDetailService _boxingDetailService;
|
private readonly IFormulaService _formulaService;
|
private readonly IFormulaDetailService _formulaDetailService;
|
private readonly IProcessInfoService _processInfoService;
|
private readonly IProcessInfoDetailService _processDetailInfoService;
|
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
private readonly IScanStationService _scanStationService;
|
//private readonly string PalletCode = "PL107";
|
|
public PLCJob(IBoxingService boxingService,
|
IBoxingDetailService boxingDetailService,
|
IFormulaService formulaService,
|
IFormulaDetailService formulaDetailService,
|
IProcessInfoService processInfoService,
|
IProcessInfoDetailService processDetailInfoService,
|
IUnitOfWorkManage unitOfWorkManage,
|
IScanStationService scanStationService
|
)
|
{
|
_boxingService = boxingService;
|
_boxingDetailService = boxingDetailService;
|
_formulaService = formulaService;
|
_formulaDetailService = formulaDetailService;
|
_processInfoService = processInfoService;
|
_processDetailInfoService = processDetailInfoService;
|
_unitOfWorkManage = unitOfWorkManage;
|
_scanStationService = scanStationService;
|
}
|
public Task Execute(IJobExecutionContext context)
|
{
|
|
bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
|
if (flag && value != null)
|
{
|
if (value is OtherDevice)
|
{
|
OtherDevice device = (OtherDevice)value;
|
try
|
{
|
if (!device.IsConnected) throw new Exception(device.DeviceName + "连接失败");
|
var Heart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolHeart);
|
var EMG = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolEMG);
|
var AutoExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolAutoExecuting);
|
var OnlineExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolOnlineExecuting);
|
var Error = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolError);
|
|
if (/*Heart &&*/ !EMG && AutoExecuting && OnlineExecuting && !Error)
|
{
|
//#region 零件检测
|
//HandlePartDetection(device);
|
//#endregion
|
|
//#region 上线扫码
|
//HandleOnlineScan(device);
|
//#endregion
|
|
#region 压装扫码
|
HandlePressScan(device);
|
#endregion
|
|
#region 压装信息上传
|
HandlePressInfoUpload(device);
|
#endregion
|
|
#region 检测扫码
|
HandleDetectScan(device);
|
#endregion
|
|
#region 检测信息上传
|
HandleDetectInfoUpload(device);
|
#endregion
|
|
#region 下线扫码
|
HandleOfflineScan(device);
|
#endregion
|
}
|
}
|
catch (Exception ex)
|
{
|
WriteError(device.DeviceName, "错误", ex);
|
}
|
}
|
}
|
return Task.CompletedTask;
|
}
|
|
|
|
|
/// <summary>
|
/// 零件检测
|
/// </summary>
|
/// <param name="device"></param>
|
/// <exception cref="InvalidOperationException"></exception>
|
private void HandlePartDetection(OtherDevice device)
|
{
|
//DB800.1.4
|
var Location5ScanStart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolLocation5ScanStart);
|
var Location5ScanDone = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolLocation5ScanDone);
|
if (Location5ScanStart && !Location5ScanDone)
|
{
|
try
|
{
|
if (_scanStationService.Repository.QueryFirst(x => x.StationCode == "001").IsScanned == 0)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation5ScanDone, true);
|
return;
|
}
|
Dt_Boxing dt_Boxing = _boxingService.Repository.QueryData(x => true, 1, "Id desc").FirstOrDefault();
|
if (dt_Boxing == null)
|
{
|
throw new InvalidOperationException("无组盘数据");
|
}
|
Dt_Formula dt_Formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_Boxing.ProductCode);
|
if (dt_Formula == null)
|
{
|
throw new InvalidOperationException("无成品配方");
|
}
|
List<Dt_BoxingDetail> dt_BoxingDetails = _boxingDetailService.Repository.QueryData(x => x.BoxingId == dt_Boxing.Id);
|
List<Dt_FormulaDetail> dt_FormulaDetails = _formulaDetailService.Repository.QueryData(x => x.FormulaId == dt_Formula.Id && x.IsScanned == 1);
|
if (!_boxingDetailService.CheckComponentsMatchExactly(dt_BoxingDetails.Select(x => x.ComponentCode).ToList(), dt_FormulaDetails.Select(x => x.ComponentCode).ToList()))
|
{
|
throw new InvalidOperationException("零件与配方表中不同");
|
}
|
device.SetValue(W_PLCDBName.wboolLocation5ScanDone, true);
|
}
|
catch (Exception ex)
|
{
|
WriteError(device.DeviceName, "检测零件流程执行异常", ex);
|
}
|
}
|
else if (!Location5ScanStart && Location5ScanDone)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation5ScanDone, false);
|
}
|
}
|
|
/// <summary>
|
/// 上线扫码
|
/// </summary>
|
/// <param name="device"></param>
|
private void HandleOnlineScan(OtherDevice device)
|
{
|
//DB800.1.4
|
var Location5ScanStart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolLocation5ScanStart);
|
var Location5ScanDone = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolLocation5ScanDone);
|
if (Location5ScanStart && !Location5ScanDone)//控制扫码枪扫描托盘码,根据托盘码查询组盘数据,判断托盘绑定成品是否已绑定所有所需零件
|
{
|
Dt_Boxing dt_Boxing1 = _boxingService.Repository.QueryData(x => true, 1, "Id desc").FirstOrDefault();
|
if (dt_Boxing1 != null && dt_Boxing1.ProductCode == null)
|
{
|
return;
|
}
|
//var PalletCode = "PL111";
|
var PalletCode = TcpClientExample.Start("192.168.2.120", 2001);
|
try
|
{
|
if (!PalletCode.IsNotEmptyOrNull() || PalletCode == "NoRead")
|
{
|
throw new InvalidOperationException("托盘为空");
|
}
|
|
if (_boxingService.Repository.QueryFirst(x => x.PalletCode == PalletCode && x.ProductCode != null) != null)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation5ScanDone, true);
|
throw new InvalidOperationException("托盘以存在");
|
}
|
|
Dt_Boxing dt_Boxing = new Dt_Boxing();
|
dt_Boxing.PalletCode = PalletCode;
|
_boxingService.Repository.AddData(dt_Boxing);
|
|
|
|
//Dt_ScanStation dt_ScanStation = _scanStationService.Repository.QueryFirst(x => x.StationCode == "001");
|
//if (dt_ScanStation == null)
|
//{
|
// throw new InvalidOperationException("无工位数据");
|
//}
|
//Dt_Formula dt_Formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_ScanStation.StationEndProduct);
|
|
//if (dt_Formula == null)
|
//{
|
// throw new InvalidOperationException("无成品配方");
|
//}
|
|
//List<Dt_FormulaDetail> dt_FormulaDetails = _formulaDetailService.Repository.QueryData(x => x.FormulaId == dt_Formula.Id && x.IsScanned == 1);
|
//if (dt_ScanStation.IsScanned == 0)
|
//{
|
// Dt_Boxing dt_Boxing = new Dt_Boxing
|
// {
|
// PalletCode = PalletCode,
|
// ProductCode = dt_Formula.ProductCode,
|
// ProductName = dt_Formula.ProductName,
|
// Creater = "admin",
|
// CreateDate = new DateTime()
|
// };
|
|
// int id = _boxingService.Repository.AddData(dt_Boxing);
|
// foreach (var item in dt_FormulaDetails)
|
// {
|
// Dt_BoxingDetail dt_BoxingDetail = new Dt_BoxingDetail()
|
// {
|
// BoxingId = id,
|
// ComponentCode = item.ComponentCode,
|
// ComponentName = item.ComponentName,
|
// Creater = "admin",
|
// CreateDate = new DateTime()
|
// };
|
// _boxingDetailService.Repository.AddData(dt_BoxingDetail);
|
// }
|
// device.SetValue(W_PLCDBName.wboolLocation5ScanDone, true);
|
// return;
|
//}
|
|
//var boxing = _boxingService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
|
//if (boxing == null)
|
//{
|
// throw new InvalidOperationException("未添加组盘信息");
|
//}
|
|
//List<Dt_BoxingDetail> dt_BoxingDetails = _boxingDetailService.Repository.QueryData(x => x.BoxingId == boxing.Id);
|
|
|
//if (!_boxingDetailService.CheckComponentsMatchExactly(dt_BoxingDetails.Select(x => x.ComponentCode).ToList(), dt_FormulaDetails.Select(x => x.ComponentCode).ToList()))
|
//{
|
// throw new InvalidOperationException("零件与配方表中不同");
|
//}
|
|
|
}
|
catch (Exception ex)
|
{
|
WriteError(device.DeviceName, "上线扫码流程执行异常", ex);
|
}
|
}
|
else if (!Location5ScanStart && Location5ScanDone)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation5ScanDone, false);
|
}
|
}
|
|
/// <summary>
|
/// 压装扫码
|
/// </summary>
|
/// <param name="device"></param>
|
private void HandlePressScan(OtherDevice device)
|
{
|
//DB800.1.1
|
var Location2ScanStart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolLocation2ScanStart);
|
var Location2ScanDone = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolLocation2ScanDone);
|
if (Location2ScanStart && !Location2ScanDone)//控制扫码枪扫描托盘码,根据托盘码查询托盘绑定成品加工所需数据,写入PLC
|
{
|
var PalletCode = TcpClientExample.Start("192.168.2.121", 2001);
|
|
try
|
{
|
if (!PalletCode.IsNotEmptyOrNull() || PalletCode == "NoRead")
|
{
|
throw new InvalidOperationException("托盘号为空");
|
}
|
Dt_Boxing dt_Boxing = _boxingService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
|
if (dt_Boxing == null)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation2ScanDone, true);
|
throw new InvalidOperationException("托盘为空");
|
}
|
if (dt_Boxing.ProductCode == null && dt_Boxing.BoxingNo == null)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation2ScanDone, true);
|
return;
|
}
|
|
Dt_Formula dt_Formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_Boxing.ProductCode);
|
//写入PLC
|
device.SetValue(W_PLCDBName.wrealPressPalletCode, dt_Boxing.Id % 100);
|
if(dt_Formula.PressNoTighten == 1)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation8ScanDone,true);
|
}
|
device.SetValue(W_PLCDBName.wrealProductLength, dt_Formula.ProductLength);
|
device.SetValue(W_PLCDBName.wrealProductWidth, dt_Formula.ProductWidth);
|
device.SetValue(W_PLCDBName.wrealProductHeight, dt_Formula.ProductHeight);
|
device.SetValue(W_PLCDBName.wrealScrewDownsetDistance, dt_Formula.ScrewDownsetDistance);
|
//中心高度
|
device.SetValue(W_PLCDBName.wrealScrewTorque, dt_Formula.ScrewTorqueOutput);
|
device.SetValue(W_PLCDBName.wrealAutoScrewProgramNo, dt_Formula.DintAutoScrewOn);
|
//压装扫码完成
|
device.SetValue(W_PLCDBName.wboolLocation2ScanDone, true);
|
|
|
}
|
catch (Exception ex)
|
{
|
WriteError(device.DeviceName, "压装扫码流程执行异常", ex);
|
}
|
}
|
else if (!Location2ScanStart && Location2ScanDone)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation2ScanDone, false);
|
}
|
}
|
|
|
/// <summary>
|
/// 压装信息上传
|
/// </summary>
|
/// <param name="device"></param>
|
/// <exception cref="NotImplementedException"></exception>
|
private void HandlePressInfoUpload(OtherDevice device)
|
{
|
//DB800.1.5
|
var Location6ScanStart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolLocation6ScanStart);
|
var Location6ScanDone = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolLocation6ScanDone);
|
if (Location6ScanStart && !Location6ScanDone)//控制扫码枪扫描托盘码,根据托盘码查询托盘绑定成品加工所需数据,写入PLC
|
{
|
|
var PalletNum = device.GetValue<R_PLCDBName, int>(R_PLCDBName.rrealPressPalletCode);
|
try
|
{
|
if (!PalletNum.IsNotEmptyOrNull())
|
{
|
throw new InvalidOperationException("托盘为空");
|
}
|
Dt_Boxing dt_Boxing = _boxingService.Repository.QueryFirst(x => x.Id % 100 == PalletNum);
|
if (dt_Boxing == null)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation6ScanDone, true);
|
throw new InvalidOperationException("未找到组盘数据");
|
}
|
Dt_Formula dt_Formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_Boxing.ProductCode);
|
|
|
//接收数据
|
decimal PressHeight = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectPressHeight);
|
decimal ScrewTorque = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectScrewTorque);
|
decimal ScrewAngle = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectScrewAngle);
|
decimal PressPressure = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectPressForce);
|
bool PressTightenNg = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rrealPressScrewByScrewNG);
|
bool PressTightenOk = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rrealPressScrewByScrewOK);
|
bool PressTightenUnfinished = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rrealPressScrewByProcessUnfinished);
|
|
|
|
//添加到数据库
|
Dt_ProcessInfo dt_ProcessInfo = new Dt_ProcessInfo()
|
{
|
PalletCode = dt_Boxing.PalletCode,
|
ProductCode = dt_Formula.ProductCode,
|
ProductName = dt_Formula.ProductName,
|
ProductSn = dt_Boxing.BoxingNo,
|
PressTightenNg = PressTightenNg?1:0,
|
PressTightenOk = PressTightenOk?1:0,
|
PressTightenUnfinished = PressTightenUnfinished?1:0,
|
PressHeight = PressHeight,
|
ScrewTorque = ScrewTorque,
|
ScrewAngle = ScrewAngle,
|
PressPressure = PressPressure,
|
};
|
_processInfoService.Repository.AddData(dt_ProcessInfo);
|
|
// 压装信息上传完成
|
device.SetValue(W_PLCDBName.wboolLocation6ScanDone, true);
|
}
|
catch (Exception ex)
|
{
|
WriteError(device.DeviceName, "压装信息上传流程执行异常", ex);
|
}
|
}
|
else if (!Location6ScanStart && Location6ScanDone)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation6ScanDone, false);
|
}
|
}
|
|
|
/// <summary>
|
/// 检测扫码
|
/// </summary>
|
/// <param name="device"></param>
|
private void HandleDetectScan(OtherDevice device)
|
{
|
//DB800.1.2
|
var Location3ScanStart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolLocation3ScanStart);
|
var Location3ScanDone = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolLocation3ScanDone);
|
if (Location3ScanStart && !Location3ScanDone)
|
{
|
var PalletCode = TcpClientExample.Start("192.168.2.122", 2001);
|
|
try
|
{
|
if (!PalletCode.IsNotEmptyOrNull() || PalletCode == "NoRead")
|
{
|
throw new InvalidOperationException("托盘为空");
|
}
|
Dt_Boxing dt_Boxing = _boxingService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
|
if (dt_Boxing == null)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation3ScanDone, true);
|
throw new InvalidOperationException("托盘为空");
|
}
|
if (dt_Boxing.ProductCode == null && dt_Boxing.BoxingNo == null)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation3ScanDone, true);
|
return;
|
}
|
Dt_Formula dt_Formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_Boxing.ProductCode);
|
//写入PLC
|
device.SetValue(W_PLCDBName.wrealCheckPalletCode, dt_Boxing.Id % 100);
|
device.SetValue(W_PLCDBName.wrealP0P1Width, dt_Formula.P0P1Width);
|
device.SetValue(W_PLCDBName.wrealP0P2Width, dt_Formula.P0P2Width);
|
device.SetValue(W_PLCDBName.wrealP0P3Width, dt_Formula.P0P3Width);
|
device.SetValue(W_PLCDBName.wrealP0P3Width, dt_Formula.P0P3Width);
|
device.SetValue(W_PLCDBName.wrealP1P3Height, dt_Formula.P1P3Height);
|
device.SetValue(W_PLCDBName.wrealP2P3Height, dt_Formula.P2P3Height);
|
|
//检测扫码完成
|
device.SetValue(W_PLCDBName.wboolLocation3ScanDone, true);
|
|
|
}
|
catch (Exception ex)
|
{
|
WriteError(device.DeviceName, "检测扫码流程执行异常", ex);
|
}
|
}
|
else if (!Location3ScanStart && Location3ScanDone)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation3ScanDone, false);
|
}
|
|
}
|
|
/// <summary>
|
/// 检测信息上传
|
/// </summary>
|
/// <param name="device"></param>
|
/// <exception cref="NotImplementedException"></exception>
|
private void HandleDetectInfoUpload(OtherDevice device)
|
{
|
|
//DB800.1.6
|
var Location7ScanStart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolLocation7ScanStart);
|
var Location7ScanDone = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolLocation7ScanDone);
|
if (Location7ScanStart && !Location7ScanDone)
|
{
|
var PalletNum = device.GetValue<R_PLCDBName, int>(R_PLCDBName.rrealCheckPalletCode);
|
|
try
|
{
|
if (!PalletNum.IsNotEmptyOrNull())
|
{
|
throw new InvalidOperationException("托盘为空");
|
}
|
Dt_Boxing dt_Boxing = _boxingService.Repository.QueryFirst(x => x.Id % 100 == PalletNum);
|
|
if (dt_Boxing == null)
|
{
|
throw new InvalidOperationException("未找到组盘数据");
|
}
|
Dt_Formula dt_Formula = _formulaService.Repository.QueryFirst(x => x.ProductCode == dt_Boxing.ProductCode);
|
|
//接收数据
|
decimal Height1 = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectHeight1);//113
|
decimal Height2 = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectHeight2);//92
|
decimal Height3 = (decimal)device.GetValue<R_PLCDBName, float>(R_PLCDBName.rrealDetectHeight3);//11
|
bool CheckUnfinished = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rrealDetectByInspectUnfinished);
|
|
Dt_ProcessInfo dt_ProcessInfo = _processInfoService.Repository.QueryFirst(x => x.PalletCode == dt_Boxing.PalletCode);
|
int id = 0;
|
if (dt_ProcessInfo == null)
|
{
|
dt_ProcessInfo = new Dt_ProcessInfo()
|
{
|
PalletCode = dt_Boxing.PalletCode,
|
ProductCode = dt_Formula.ProductCode,
|
ProductName = dt_Formula.ProductName,
|
ProductSn = dt_Boxing.BoxingNo,
|
CheckUnfinished = CheckUnfinished?1:0,
|
};
|
id = _processInfoService.Repository.AddData(dt_ProcessInfo);
|
}
|
else
|
{
|
id = dt_ProcessInfo.Id;
|
}
|
dt_ProcessInfo.Id = id;
|
dt_ProcessInfo.Height1 = Height1 = Height1 - Height3;
|
dt_ProcessInfo.Height2 = Height2 = Height2 - Height3;
|
dt_ProcessInfo.Height3 = Height3;
|
|
_processInfoService.Repository.UpdateData(dt_ProcessInfo);
|
//检测信息上传完成
|
device.SetValue(W_PLCDBName.wboolLocation7ScanDone, true);
|
|
}
|
catch (Exception ex)
|
{
|
WriteError(device.DeviceName, "检测扫码流程执行异常", ex);
|
}
|
}
|
else if (!Location7ScanStart && Location7ScanDone)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation7ScanDone, false);
|
}
|
|
}
|
|
|
/// <summary>
|
/// 下线扫码
|
/// </summary>
|
/// <param name="device"></param>
|
private void HandleOfflineScan(OtherDevice device)
|
{
|
//DB800.1.3
|
|
var Location4ScanStart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolLocation4ScanStart);
|
var Location4ScanDone = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolLocation4ScanDone);
|
if (Location4ScanStart && !Location4ScanDone)//控制扫码枪扫描托盘码,根据托盘码查询组盘数据,判断托盘绑定成品是否已绑定所有所需零件
|
{
|
var PalletCode = TcpClientExample.Start("192.168.2.123", 2001);
|
using (var uow = _unitOfWorkManage.CreateUnitOfWork())
|
{
|
try
|
{
|
if (!PalletCode.IsNotEmptyOrNull() || PalletCode == "NoRead")
|
{
|
throw new InvalidOperationException("托盘为空");
|
}
|
Dt_Boxing dt_Boxing = _boxingService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
|
if (dt_Boxing != null)
|
{
|
_boxingService.Repository.DeleteData(dt_Boxing);
|
List<Dt_BoxingDetail> dt_BoxingDetails = _boxingDetailService.Repository.QueryData(x => x.BoxingId == dt_Boxing.Id);
|
if (dt_BoxingDetails != null)
|
{
|
_boxingDetailService.Repository.DeleteData(dt_BoxingDetails);
|
}
|
}
|
Dt_ProcessInfo dt_ProcessInfo = _processInfoService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
|
if (dt_ProcessInfo != null)
|
{
|
Dt_ProcessInfoDetail dt_ProcessInfoDetail = new Dt_ProcessInfoDetail()
|
{
|
PalletCode = PalletCode,
|
ProductCode = dt_ProcessInfo.ProductCode?.ToString() ?? "",
|
ProductName = dt_ProcessInfo.ProductName?.ToString() ?? "",
|
ProductSn = dt_ProcessInfo.ProductSn,
|
PressTightenNg = dt_ProcessInfo.PressTightenNg,
|
PressTightenOk = dt_ProcessInfo.PressTightenOk,
|
PressTightenUnfinished = dt_ProcessInfo.PressTightenUnfinished,
|
CheckUnfinished = dt_ProcessInfo.CheckUnfinished,
|
PressHeight = dt_ProcessInfo.PressHeight,
|
ScrewTorque = dt_ProcessInfo.ScrewTorque,
|
ScrewAngle = dt_ProcessInfo.ScrewAngle,
|
PressPressure = dt_ProcessInfo.PressPressure,
|
Height1 = dt_ProcessInfo.Height1,
|
Height2 = dt_ProcessInfo.Height2,
|
Height3 = dt_ProcessInfo.Height3,
|
Creater = "admin",
|
CreateDate = DateTime.Now
|
};
|
_processDetailInfoService.Repository.AddData(dt_ProcessInfoDetail);
|
_processInfoService.DeleteData(dt_ProcessInfo);
|
}
|
uow.Commit();
|
//下线扫码完成
|
device.SetValue(W_PLCDBName.wboolLocation4ScanDone, true);
|
}
|
catch (Exception ex)
|
{
|
WriteError(device.DeviceName, "下线扫码流程执行异常", ex);
|
|
}
|
}
|
}
|
else if (!Location4ScanStart && Location4ScanDone)
|
{
|
device.SetValue(W_PLCDBName.wboolLocation4ScanDone, false);
|
}
|
}
|
}
|
}
|