jinxin
2025-06-04 d968571628134ed672d9c6e4ba5cf32ba8d9644b
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
using HH.WCS.NongFuChaYuan.OtherService;
using SqlSugar;
using System;
using System.Collections.Generic;
 
namespace HH.WCS.NongFuChaYuan.WmsService
{
    /// <summary>
    /// 工单、设备状态管理
    /// </summary>
    public class WCSHelper
    {
        static WCSHelper()
        {
        }
 
 
 
        #region 大明山WCS业务处理
 
 
        /// <summary>
        /// 大明上-查询工单信息--执行中
        /// </summary>
        /// <param name="orderType"></param>
        /// <returns></returns>
        public static List<WorkOrder> GetDaMingShanAnalysisOrderWork(string orderType)
        {
            var order = new SqlHelper<WorkOrder>().GetList(a => a.S_ORDER_TYPE == orderType && a.S_WorkState == "执行中");
            return order;
        }
 
        /// <summary>
        /// 大明山-查询工单信息
        /// </summary>
        /// <param name="orderType"></param>
        /// <returns></returns>
        public static List<WorkOrder> GetDaMingShanAnalysisOrderWorkType(string orderType, string newbatch, string deviceName)
        {
            var order = new SqlHelper<WorkOrder>().GetList(a => a.S_ORDER_TYPE == orderType && a.S_BatchNo == newbatch && a.S_PLineNo == deviceName);
            return order;
        }
 
        /// <summary>
        /// 插入工单信息
        /// </summary>
        /// <param name="wmsTask"></param>
        /// <returns></returns>
        internal static bool DaMingShanInsertWork(WorkOrder wmsTask)
        {
            var db = new SqlHelper<WorkOrder>().GetInstance();
            return db.Insertable(wmsTask).ExecuteCommand() > 0;
        }
 
 
        /// <summary>
        /// 更改工单信息:托规、批次号、物料层数
        /// </summary>
        /// <param name="task"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        internal static bool UpdateWorkInfo(WorkOrder task, string batchNo = "", string itemLayer = "")
        {
            var res = false;
            var db = new SqlHelper<WorkOrder>().GetInstance();
            //task.S_TrayRules = trayRule;
            task.S_BatchNo = batchNo;
            task.S_ItemLayer = itemLayer;
            db.Updateable(task).UpdateColumns(it => new { it.S_BatchNo, it.S_ItemLayer }).ExecuteCommand();
            return res;
        }
        /// <summary>
        /// 查询托盘信息-全部-为了对比当前是否为正常下线
        /// </summary>
        /// <param name="lineNo"></param>
        /// <returns></returns>
        public static List<DaMingShanTrayInfo> GetDaMingShanTrayInfoAllList(string deviceName)
        {
            var order = new SqlHelper<DaMingShanTrayInfo>().GetList(a => a.deviceName == deviceName);
            return order;
        }
 
        /// <summary>
        /// 创建数据中间表表
        /// </summary>
        /// <returns></returns>
        public static void CreateMiddleTable()
        {
            //var order = new SqlHelper<ChunAnTrayInfo>().CreateTable();//富勒传输托盘信息表
            //var order1 = new SqlHelper<ChunAnDeviceState>().CreateTable();//设备信号时间中间表
            var order2 = new SqlHelper<DaMingShanAnalysisMoveLib>().CreateTable();//成品下线库位中间表
        }
 
 
        /// <summary>
        /// 淳安-插入设备信息
        /// </summary>
        /// <param name="wmsTask"></param>
        /// <returns></returns>
        internal static bool DaMingShangInsertDeviceState(DaMingShanDeviceState deviceState)
        {
            var db = new SqlHelper<DaMingShanDeviceState>().GetInstance();
            return db.Insertable(deviceState).ExecuteCommand() > 0;
        }
        /// <summary>
        /// 淳安-更改设备状态:时间-状态
        /// </summary>
        /// <param name="deviceInfo"></param>
        /// <param name="status">0-默认无动作 1-第一次收到下线信号</param>
        /// <param name="dateTime">第一次收到信号时更新时间;取货完成复位时间</param>
        /// <returns></returns>
        internal static bool UpdateDaMingShanDeviceState(DaMingShanDeviceState deviceInfo, string status, string dateTime, string extData = "")
        {
            var res = false;
            var db = new SqlHelper<DaMingShanDeviceState>().GetInstance();
            deviceInfo.DeviceState = status;
            deviceInfo.DeviceTime = dateTime;
            db.Updateable(deviceInfo).UpdateColumns(it => new { it.DeviceState, it.DeviceTime }).ExecuteCommand();
            return res;
        }
        /// <summary>
        /// 查询当前设备信息
        /// </summary>
        /// <param name="lineNo"></param>
        /// <returns></returns>
        public static DaMingShanDeviceState GetDaMingShanDeviceState(string deviceName)
        {
            var order = new SqlHelper<DaMingShanDeviceState>().Get(a => a.DeviceName == deviceName, a => a.DeviceTime, true);
            return order;
        }
        /// <summary>
        /// 查询托盘信息-下线时间之前的数据
        /// </summary>
        /// <param name="lineNo"></param>
        /// <returns></returns>
        public static List<DaMingShanTrayInfo> GetDaMingShanTrayInfoList(string positionCode, string deviceName)
        {
            var exp = Expressionable.Create<DaMingShanTrayInfo>();
            exp.And(it => it.deviceName == deviceName);
            exp.AndIF(!string.IsNullOrEmpty(positionCode), it => it.positionCode == positionCode);
            //var order = new SqlHelper<DaMingShanTrayInfo>().GetList(a => Convert.ToDateTime(a.dateTime.Trim()) < Convert.ToDateTime(dateTime) && a.deviceName == deviceName);
            var order = new SqlHelper<DaMingShanTrayInfo>().GetList(exp.ToExpression());
            return order;
        }
        /// <summary>
        /// 大明山-查询工单信息--执行中或者暂停
        /// </summary>
        /// <param name="lineNo"></param>
        /// <returns></returns>
        public static WorkOrder GetWorkOrder(string lineNo)
        {
            var order = new SqlHelper<WorkOrder>().Get(a => a.S_PLineNo.Trim() == lineNo && (a.S_WorkState == "执行中"), a => a.T_CREATE, true);
            return order;
        }
 
        /// <summary>
        /// 大明山-查询工单信息--执行中或者暂停
        /// </summary>
        /// <param name="lineNo"></param>
        /// <returns></returns>
        public static PGWorkOrder GetPGWorkOrder(string lineNo)
        {
            var order = new SqlHelper<PGWorkOrder>().Get(a => a.S_PLineNo.Trim() == lineNo && (a.S_WorkState == "执行中"), a => a.T_CREATE, true);
            return order;
        }
 
        public static List<WorkOrder> GetWorkOrder1(string lineNo)
        {
            var db = new SqlHelper<WorkOrder>().GetInstance();
            var order = db.Queryable<WorkOrder>().Where(a => a.S_PLineNo.Trim() == lineNo && a.S_WorkState == "执行中").ToList();
            return order;
        }
 
        public static ItemRel GetItemrel(string itemcode, string itemmodel)
        {
            var db = new SqlHelper<ItemRel>().GetInstance();
            var order = db.Queryable<ItemRel>().Where(a => a.S_ITEM_CODE == itemcode && a.S_ITEM_MODEL == itemmodel).First();
 
            return order;
        }
 
 
        internal static bool DaMingShanInsertAnalysisMoveLib(DaMingShanAnalysisMoveLib info)
        {
            var db = new SqlHelper<DaMingShanAnalysisMoveLib>().GetInstance();
            var oldinfo = db.Queryable<DaMingShanAnalysisMoveLib>().Where(a => a.DeviceName == info.DeviceName && a.Batch == info.Batch && a.RowNo == info.RowNo).First();
            if (oldinfo == null)
            {
                return db.Insertable(info).ExecuteCommand() > 0;
            }
            else
            {
                return true;
            }
        }
 
        /// <summary>
        /// 通过产线号结束自动移库工单 并删除中间表信息
        /// </summary>
        /// <param name="WorkOrder"></param>
        internal void EndYiKuWorkOrder(string S_PLineNo, string BatchNo, string oldbatch)
        {
            var db = new SqlHelper<object>().GetInstance();
            var info = db.Deleteable<DaMingShanAnalysisMoveLib>().Where(a => a.DeviceName == S_PLineNo && a.Batch == oldbatch).ExecuteCommand();
            var workorder = db.Queryable<WorkOrder>().Where(a => a.S_PLineNo == S_PLineNo && a.S_BatchNo == BatchNo && a.S_WorkState.Trim() == "执行中" && a.S_ORDER_TYPE.Trim() == "自动移库").ToList();
            workorder.ForEach(a =>
            {
                a.S_WorkState = "已完成";
                db.Updateable(a).UpdateColumns(it => new { it.S_WorkState }).ExecuteCommand();
            });
        }
 
        internal static void UpdateDaMingShanInsertAnalysisMoveLib(string endbit)
        {
            var db = new SqlHelper<object>().GetInstance();
            var oldinfo = db.Queryable<Location>().Where(a => a.S_LOC_CODE.Trim() == endbit).First();
            if (oldinfo != null)
            {
                string rowNo = oldinfo.N_ROW;
                var info = db.Queryable<Location>().Where(a => a.N_ROW == rowNo && a.N_CURRENT_NUM > 0).First();
                if (info == null)
                {
                    //删除中间表对应的数据
                    var Libinfo = db.Queryable<DaMingShanAnalysisMoveLib>().Where(a => a.RowNo == rowNo).First();
                    if (Libinfo != null)
                    {
                        db.Deleteable<DaMingShanAnalysisMoveLib>().Where(a => a.RowNo == rowNo).ExecuteCommand();
                    }
                }
            }
        }
        #endregion
    }
}