1
pulg
2025-07-06 44fe437ed95b89a38fc78b2905073e085eeebf51
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
using HH.WCS.QingXigongchang.util;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
 
namespace HH.WCS.QingXigongchang.wms
{
    /// <summary>
    /// 工单、设备状态管理
    /// </summary>
    public class WCSHelper
    {
        static WCSHelper()
        {
        }
 
        /// <summary>
        /// 查询工单
        /// </summary>
        /// <param name="lineNo"></param>
        /// <returns></returns>
        public static WorkOrder GetWorkOrder(string lineNo)
        {
            //|| a.SQL_State == "暂停"
            var order = new SqlHelper<WorkOrder>().Get(a => a.SQL_PLineNo == lineNo && (a.SQL_State == "执行中"), a => a.T_CREATE, true);
            return order;
        }
 
        //public static 
 
        public static List<WorkOrder> GetWorkOrder(Expression<Func<WorkOrder, bool>> expression)
        {
            //|| a.SQL_State == "暂停"
            var order = new SqlHelper<WorkOrder>().GetInstance().Queryable<WorkOrder>().Where(expression);
            return order.ToList();
        }
        /// <summary>
        /// 查询PG工单
        /// </summary>
        /// <param name="lineNo"></param>
        /// <returns></returns>
        public static PGWorkOrder GetPGWorkOrder(string lineNo)
        {
            var order = new SqlHelper<PGWorkOrder>().Get(a => a.SQL_PLineNo == lineNo && (a.SQL_State == "执行中"), a => a.T_CREATE, true);
            return order;
        }
 
        public static List<PGWorkOrder> GetPGWorkOrder(Expression<Func<PGWorkOrder, bool>> expression)
        {
            var order = new SqlHelper<PGWorkOrder>().GetInstance().Queryable<PGWorkOrder>().Where(expression);
            return order.ToList();
        }
 
        public static List<TurnWorkOrder> GetWorkOrder2(string lineNo = "")
        {
            //|| a.SQL_State == "暂停"
            //var order = new SqlHelper<TurnWorkOrder>().GetInstance().Queryable<TurnWorkOrder>().Where(a => a.Turn_Type == "手动移库" && (a.SQL_State == "执行中" || (a.SQL_State == "完成" && a.Note == "执行中。。。")));
            var order = new SqlHelper<TurnWorkOrder>().GetInstance().Queryable<TurnWorkOrder>().Where(a => (a.SQL_State == "执行中" || (a.SQL_State == "完成" && a.Note == "执行中。。。")));
            //var order = new SqlHelper<TurnWorkOrder>().GetInstance().Queryable<TurnWorkOrder>().Where(a => a.Turn_Type == "手动移库" && a.SQL_State == "执行中");
            return order.OrderBy(x => x.SQL_State == "完成" ? 0 : 1).ToList();
        }
 
        public static void Do(Action<SqlSugarClient> action)
        {
            action(new SqlHelper<TurnWorkOrder>().GetInstance());
        }
        public static List<TurnWorkOrder> GetWorkOrder2(Expression<Func<TurnWorkOrder, bool>> expression)
        {
            //|| a.SQL_State == "暂停"
            var order = new SqlHelper<TurnWorkOrder>().GetInstance().Queryable<TurnWorkOrder>().Where(expression);
            return order.ToList();
        }
        /// <summary>
        /// 查询审核的工单
        /// </summary>
        /// <param name="lineNo"></param>
        /// <returns></returns>
        public static WorkOrder GetWorkOrderVerify(string lineNo)
        {
            var order = new SqlHelper<WorkOrder>().Get(a => a.SQL_PLineNo == lineNo && a.SQL_State == "审核中", a => a.T_CREATE, true);
            return order;
        }
        public static WorkOrder GetWorkOrderByOrderNo(string orderNo)
        {
            var order = new SqlHelper<WorkOrder>().Get(a => a.SQL_WorkNo == orderNo);
            return order;
        }
        internal static bool UpdateWorkOrderAutoCompleteFalse(WorkOrder workOrder)
        {
            var db = new SqlHelper<object>().GetInstance();
            workOrder.SQL_AutoComplete = "否";
            return db.Updateable(workOrder).UpdateColumns(it => new { it.SQL_AutoComplete }).ExecuteCommand() > 0;
        }
        /// <summary>
        /// 更新工单数量
        /// </summary>
        /// <param name="workOrder"></param>
        /// <param name="trayType"></param>
        internal static void UpdateWorkOrder(WorkOrder workOrder, int trayType)
        {
            try
            {
                var qty = string.IsNullOrEmpty(workOrder.SQL_PCNumber) ? 0 : int.Parse(workOrder.SQL_PCNumber);
                var total = string.IsNullOrEmpty(workOrder.SQL_Total) ? 0 : int.Parse(workOrder.SQL_Total);
                var usingNowTotal = string.IsNullOrEmpty(workOrder.SQL_UsingNowTotal) ? 0 : int.Parse(workOrder.SQL_UsingNowTotal);
                var current = string.IsNullOrEmpty(workOrder.SQL_Current) ? 0 : int.Parse(workOrder.SQL_Current);
                var db = new SqlHelper<object>().GetInstance();
                workOrder.SQL_Current = (current + qty).ToString();
                //如果数量满了,并且没有切换过,可以结束,如果切换过,数量满了不结束,一直生产
                if (current + qty == total && (string.IsNullOrEmpty(workOrder.SQL_AutoComplete) || workOrder.SQL_AutoComplete.Trim() == "是"))
                {
                    //工单完成
                    workOrder.SQL_State = "已完成";
                    db.Updateable(workOrder).UpdateColumns(it => new { it.SQL_Current, it.SQL_State }).ExecuteCommand();
                }
                else
                {
                    db.Updateable(workOrder).UpdateColumns(it => new { it.SQL_Current }).ExecuteCommand();
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("UpdateWorkOrder fail " + ex.Message, ex);
            }
 
        }
    }
}