1
pengmn
2025-05-29 f2518583da4cc3d3737986e112b92154535aea4d
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
 
using HH.WCS.HangYang.models.other;
using HH.WCS.HangYang.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static HH.WCS.HangYang.dispatch.NDC;
 
namespace HH.WCS.HangYang.wms
{
    /// <summary>
    /// 容器帮助类
    /// </summary>
    internal class ContainerHelper
    {
        internal static string GenerateCntrNo()
        {
            var id = SYSHelper.GetSerialNumber("托盘号", "TP");
            var date = DateTime.Now.ToString("yyMMdd");
            return $"TP{date}{id.ToString().PadLeft(4, '0')}";
        }
 
 
        /// <summary>
        /// 根据容器号获取容器信息
        /// </summary>
        /// <param name="cntr"></param>
        /// <returns></returns>
        internal static Container GetCntr(string cntr, bool create = false)
        {
            //1.0 查货位容器表
            var db = new SqlHelper<object>().GetInstance();
            var old = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First();
            if (old == null && create)
            {
                var model = new Container { S_CODE = cntr };
                if (db.Insertable(model).ExecuteCommand() > 0)
                {
                    old = model;
                }
            }
            return old;
 
        }
 
        /// <summary>
        /// 根据容器获取物料信息
        /// </summary>
        /// <param name="cntr"></param>
        /// <returns></returns>
        internal static List<CntrItemDetail> GetCntrItemRel(string cntr)
        {
            var db = new SqlHelper<object>().GetInstance();
            var list = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntr).ToList();
            return list;
        }
 
        #region 杭氧货位容器物料帮助方法
 
        /// <summary>
        /// 修改容器表容器去向字段
        /// </summary>
        /// <param name="trayCode">托盘号</param>
        /// <param name="abouts">容器去向</param>
        /// <returns></returns>
        internal static bool UpdateCntrAbouts(string trayCode, string abouts)
        {
            var res = false;
            var db = new SqlHelper<object>().GetInstance();
            var model = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == trayCode).First();
            if (model != null)
            {
                model.S_ACTION_SRC = abouts;
                model.T_MODIFY = DateTime.Now;
                res = db.Updateable(model).UpdateColumns(it => new { it.S_ACTION_SRC, it.T_MODIFY }).ExecuteCommand() > 0;
            }
            return res;
        }
 
        /// <summary>
        /// 修改容器物料表入库时间
        /// </summary>
        /// <param name="trayCode">托盘号</param>
        /// <returns></returns>
        internal static bool UpdateCntrItem(string trayCode)
        {
            var res = false;
            var db = new SqlHelper<object>().GetInstance();
            var model = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == trayCode).ToList();
            foreach (var item in model)
            {
                if (item.T_INBOUND_TIME == null)
                {
                    item.T_INBOUND_TIME = DateTime.Now;
                    res = db.Updateable(item).UpdateColumns(it => new { it.T_INBOUND_TIME }).ExecuteCommand() > 0;
                }
            }
            return res;
        }
 
 
        /// <summary>
        /// 查询被标记的托盘
        /// </summary>
        /// <param name="areaCode">库区</param>
        /// <param name="abouts">标记</param>
        /// <returns></returns>
        internal static List<LocCntrRel> GetCntrAbouts(string areaCode, string abouts)
        {
            var db = new SqlHelper<object>().GetInstance();
            var model = db.Queryable<Location>().LeftJoin<LocCntrRel>((p, m) => p.S_CODE == m.S_LOC_CODE)
                .Where((p, m) => p.S_AREA_CODE == areaCode && p.S_LOCK_STATE == "无")
                .Where((p, m) => m.S_ACTION_SRC == abouts)
                .Select((p, m) => m)
                .ToList();
            return model;
        }
 
        internal static LocCntrRel GetCntrLoc(string trayCode)
        {
            var db = new SqlHelper<object>().GetInstance();
            var model = db.Queryable<LocCntrRel>().Where(s => s.S_CNTR_CODE == trayCode).First();
            return model;
        }
 
        internal static LocCntrRel GetLocCntr(string loc)
        {
            var db = new SqlHelper<object>().GetInstance();
            var model = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == loc).First();
            return model;
        }
 
        internal static bool GetLocItemRel(string loc)
        {
            bool result = false;
            var db = new SqlHelper<object>().GetInstance();
            var model = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == loc).First();
            if (model != null)
            {
                var list = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.S_CNTR_CODE).ToList();
                result = list.Any() ? false : true;
            }
            return result;
        }
 
        #endregion
 
 
    }
}