using System;
using HH.WCS.Mobox3.DSZSH.AppStart;
using HH.WCS.Mobox3.DSZSH.Consts;
using HH.WCS.Mobox3.DSZSH.Helpers.Model;
using HH.WCS.Mobox3.DSZSH.Helpers;
using HH.WCS.Mobox3.DSZSH.Models;
using HH.WCS.Mobox3.DSZSH.Helper;
using System.Collections.Generic;
namespace HH.WCS.Mobox3.DSZSH.ServiceCore {
///
/// 定时轮询任务:托盘下线任务核心
///
public class OfflineCore
{
///
/// 获取输送线发送的成品胶下线请求
///
///
/// 流程一 成品胶下线
/// 4) AMS收到请求,生成成品下线指令,并将指令发送到WMS系统
///
public static void CheckPlcOfflineRequest() {
try {
foreach (var prodLineInfo in AppStart.Settings.Config.ProductionLines) {
var db = DbHelper.GetDbClient();
// TODO 等待输送线协议完成后再补充具体逻辑
// 判断输送线当前是否有下线信号
var readFlag = ModbusHelper.ReadHoldingRegisters(15, 1, prodLineInfo.PlcIp, prodLineInfo.PlcPort);
if (readFlag[0] == 0) {
continue;
}
// 读取输送线下线请求信息
var cgId = ModbusHelper.ReadHoldingRegistersToString(20, 20, prodLineInfo.PlcIp, prodLineInfo.PlcPort);
var cntrId = ModbusHelper.ReadHoldingRegistersToString(40, 20, prodLineInfo.PlcIp, prodLineInfo.PlcPort);
var cgDetail = db.Queryable()
.Where(cd => cd.S_CG_ID == cgId && cd.S_CNTR_CODE == cntrId).First();
// 绑定 物料信息 和 容器信息
cgDetail = new TN_CG_Detail {
S_CG_ID = cgId,
S_CNTR_CODE = cntrId,
};
if (db.Insertable(cgDetail).ExecuteCommand() > 0) {
LogHelper.Info($"绑定物料 '{cgId}' 与容器 '{cntrId}' 成功");
}
else {
LogHelper.Info($"绑定物料 '{cgId}' 与容器 '{cntrId}' 失败");
}
}
}
catch (Exception ex) {
LogHelper.InfoEx(ex);
}
}
///
/// 轮询托盘入库任务并执行
///
public static void CheckInboundTask() {
//var db = DbHelper.GetDbClient();
//var inboundOrder = db.Queryable()
// .Where(i => i.S_B_STATE == "等待执行").First();
//TaskHelper.LogCreateTask()
}
}
}