using HH.WCS.Mobox3.YNJT_BZP_GT.api; using HH.WCS.Mobox3.YNJT_BZP_GT.device; using HH.WCS.Mobox3.YNJT_BZP_GT.dispatch; using HH.WCS.Mobox3.YNJT_BZP_GT.models; using HH.WCS.Mobox3.YNJT_BZP_GT.process; using HH.WCS.Mobox3.YNJT_BZP_GT.util; using HH.WCS.Mobox3.YNJT_BZP_GT.wms; using Newtonsoft.Json; using SqlSugar.DistributedSystem.Snowflake; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Reflection; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Timers; using static HH.WCS.Mobox3.YNJT_BZP_GT.dispatch.WMSDispatch; namespace HH.WCS.Mobox3.YNJT_BZP_GT.core { /// /// 定时轮询任务 /// internal class Monitor { /// /// 同步物料条码信息表 /// 1.查询上次记录时间 /// 2.根据记录时间,查询大于等于记录时间的物料条码信息,并计算最小存放时间 和 最大存放时间 /// 3.将物料条码信息同步到wms /// 4.同步成功,记录最后一条数据的更新时间 /// internal static void MonitorMatlBarcode() { try { var synDataTimeRecord = WMSDispatch.findLastDataSynTime(new RecordDataSynTimeModel() { recordTable = "1" }); if (synDataTimeRecord != null) { /* CultureInfo enGB = new CultureInfo("en-GB");*/ var maltInformations = WMSHelper.getMaltInfoList(synDataTimeRecord.S_SYN_TIME); if (maltInformations != null && maltInformations.Count > 0) { bool bo = WMSDispatch.synMatlInformation(new SynMatlInformationModel() { matlInformationList = maltInformations }); if (bo) { WMSDispatch.recordDataSynTime(new RecordDataSynTimeModel() { sysTime = maltInformations[0].last_modify_time, synNum = maltInformations.Count, recordTable = "1" }); } } } } catch (Exception ex) { LogHelper.Info($"同步物料条码信息错误,错误原因:{ex.Message}", "WMS"); } } /// /// 同步半制品物料状态 /// 1.查询上次记录时间 /// 2.根据记录时间,查询大于等于记录时间,且符合条件的物料状态信息 /// 3.将物料条码信息同步到wms /// 4.同步成功,记录最后一条数据的更新时间 /// internal static void MonitorMatlStatus() { try { var synDataTimeRecord = WMSDispatch.findLastDataSynTime(new RecordDataSynTimeModel() { recordTable = "2" }); if (synDataTimeRecord != null) { /* CultureInfo enGB = new CultureInfo("en-GB");*/ var barcodeStatuses = WMSHelper.getMaltStatusList(synDataTimeRecord.S_SYN_TIME); if (barcodeStatuses != null && barcodeStatuses.Count > 0) { var updateMatlStatuses = barcodeStatuses.Select(a => new UpdateMatlStatus {bc_entried = a.bc_entried ,jdge = a.jdge }).ToList(); if (updateMatlStatuses.Count > 0) { bool bo = WMSDispatch.synUpdateMatlStatus(new SynUpdateMatlStatusModel() { updateMatlStatuses = updateMatlStatuses }); if (bo) { WMSDispatch.recordDataSynTime(new RecordDataSynTimeModel() { sysTime = barcodeStatuses[0].last_modify_time, synNum = barcodeStatuses.Count, recordTable = "2" }); } } } } } catch (Exception ex) { LogHelper.Info($"同步半制品物料状态错误,错误原因:{ex.Message}", "WMS"); } } /// /// 同步半制品物料时间配置 /// internal static void MonitorMatlTimeConfig() { try { var synDataTimeRecord = WMSDispatch.findLastDataSynTime(new RecordDataSynTimeModel() { recordTable = "3" }); if (synDataTimeRecord != null) { /* CultureInfo enGB = new CultureInfo("en-GB");*/ var overages = WMSHelper.getOverageList(synDataTimeRecord.S_SYN_TIME); if (overages != null && overages.Count > 0) { bool bo = WMSDispatch.synUpdateMatlTimeConfig(new MatlTimeConfigModel() { overages = overages }); if (bo) { WMSDispatch.recordDataSynTime(new RecordDataSynTimeModel() { sysTime = overages[0].last_modify_time, synNum = overages.Count, recordTable = "3" }); } } } } catch (Exception ex) { LogHelper.Info($"同步半制品物料状态错误,错误原因:{ex.Message}", "WMS"); } } } }