kazelee
2025-05-09 62e3ff7506396fcb7f7737900806e838c2466aa3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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 {
    /// <summary>
    /// 定时轮询任务:托盘下线任务核心
    /// </summary>
    public class OfflineCore
    {
        /// <summary>
        /// 获取输送线发送的成品胶下线请求
        /// </summary>
        /// <remarks>
        /// 流程一 成品胶下线<br/>
        /// 4)    AMS收到请求,生成成品下线指令,并将指令发送到WMS系统
        /// </remarks>
        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<TN_CG_Detail>()
                        .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<TN_CG_Detail>(cgDetail).ExecuteCommand() > 0) {
                        LogHelper.Info($"绑定物料 '{cgId}' 与容器 '{cntrId}' 成功");
                    }
                    else {
                        LogHelper.Info($"绑定物料 '{cgId}' 与容器 '{cntrId}' 失败");
                    }
                }
            }
            catch (Exception ex) {
                LogHelper.InfoEx(ex);
            }
        }
 
        /// <summary>
        /// 轮询托盘入库任务并执行
        /// </summary>
        public static void CheckInboundTask() {
            //var db = DbHelper.GetDbClient();
            
            //var inboundOrder = db.Queryable<TN_Inbound_Order>()
            //    .Where(i => i.S_B_STATE == "等待执行").First();
 
            //TaskHelper.LogCreateTask()
            
        }
 
        
    }
}