wxw
2025-05-12 c7c2f7aa20427204944ba80a2704232b2f281582
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
using System;
using System.Collections.Generic;
using System.Text;
using SqlSugar;
using WMS.DAL;
using WMS.Entity.Context;
using WMS.Entity.DataEntity;
using WMS.IBLL.IDataServer;
 
namespace WMS.BLL.DataServer
{
    public class DataBoxInfoServer: DbHelper<DataBoxInfo>,IDataBoxInfoServer
    {
        private static readonly SqlSugarScope Db = DataContext.Db;
        public DataBoxInfoServer():base(Db)
        {
        }
 
        #region 导出箱码明细
        /// <summary>
        /// 导出箱码明细
        /// </summary>
        /// <param name="id">id</param>
        /// <param name="skuNo">物料号</param>
        /// <param name="skuName">物料名称</param>
        /// <param name="palletNo">托盘号</param>
        /// <param name="lotNo">批次号</param>
        /// <param name="boxNo">箱码</param>
        /// <param name="status">箱支状态</param>
        /// <param name="inspectMark">检验标记</param>
        /// <param name="bitBoxMark">零箱标记</param>
        /// <param name="inspectStatus">质量状态</param>
        /// <returns></returns>
        public List<DataBoxInfo> GetDataBoxInfoDaoChu(string id, string skuNo, string skuName, string palletNo, string lotNo, string boxNo, string status, string inspectMark, string bitBoxMark, string inspectStatus)
        {
            string str = "select PalletNo,PalletNo2,PalletNo3,BoxNo,BoxNo2,BoxNo3,Status,LotNo,Qty,FullQty,SkuNo,SkuName,LotText,ProductionTime,InspectMark,BitBoxMark,InspectStatus,InspectTime from DataBoxInfo Where IsDel = @isdel";
            //判断id是否为空
            if (!string.IsNullOrEmpty(id))
            {
                str += " and StockDetailId = @id";
            }
            //判断物料号是否为空
            if (!string.IsNullOrEmpty(skuNo))
            {
                str += " and SkuNo like @skuno";
            }
            //判断物料名称是否为空
            if (!string.IsNullOrEmpty(skuName))
            {
                str += " and SkuName like @skuname";
            }
            //判断托盘号是否为空
            if (!string.IsNullOrEmpty(palletNo))
            {
                str += " and PalletNo like @palletno";
            }
            //判断批次是否为空
            if (!string.IsNullOrEmpty(lotNo))
            {
                str += " and LotNo like @lotno";
            }
            //判断箱码是否为空
            if (!string.IsNullOrEmpty(boxNo))
            {
                str += " and BoxNo like @boxno";
            }
            //判断箱支状态是否为空
            if (!string.IsNullOrEmpty(status))
            {
                str += " and Status = @status";
            }
            //判断检验标记是否为空
            if (!string.IsNullOrEmpty(inspectMark))
            {
                str += " and InspectMark = @inspectmark";
            }
            //判断零箱标记是否为空
            if (!string.IsNullOrEmpty(bitBoxMark))
            {
                str += " and BitBoxMark = @bitboxmark";
            }
            //判断质量状态是否为空
            if (!string.IsNullOrEmpty(inspectStatus))
            {
                str += " and InspectStatus = @inspectstatus";
            }
            //排序
            str += " order by LotNo,PalletNo,SkuNo";
            List<DataBoxInfo> boxInfor = Db.Ado.SqlQuery<DataBoxInfo>(str, new
            {
                isdel = "0", //是否删除
                id, //id
                skuno = "%" + skuNo + "%", //物料号
                skuname = "%" + skuName + "%", //物料名称
                palletno = "%" + palletNo + "%", //托盘
                lotno = "%" + lotNo + "%", //批次号
                boxno = "%" + boxNo + "%", //箱码
                status, //箱支状态
                inspectmark = inspectMark, //检验标记
                bitboxmark = bitBoxMark, //零箱标记
                inspectstatus = inspectStatus //质量状态
            });
 
            List<DataBoxInfo> box = new List<DataBoxInfo>();
            foreach (var b1 in boxInfor)
            {
                //判断box是否为空
                if (box.Count <= 0)
                {
                    //无数据获取第一条
                    box.Add(b1);
                    continue;
                }
                int i = 0;
                foreach (var b2 in box)
                {
                    if (b2.BoxNo == b1.BoxNo)
                    {
                        b2.Qty += b1.Qty;
                        break;
                    }
                    i += 1;
                }
                if (i == box.Count)
                {
                    box.Add(b1);
                    continue;
                }
            }
 
            foreach (var item in box)
            {
                //物料编码,加上单引号是防止导出到excel自动把前面的0给去掉
                if (!string.IsNullOrEmpty(item.SkuNo) && item.SkuNo.Substring(0, 1) == "0")
                {
                    item.SkuNo = $"'{item.SkuNo}";
                }
                //箱码,加上单引号是防止导出到excel纯数字太长
                if (!string.IsNullOrEmpty(item.BoxNo))
                {
                    item.BoxNo = $"'{item.BoxNo}";
                }
                //抽检标记
                switch (item.InspectMark)
                {
                    case "0":
                        item.InspectMark = "否";
                        break;
                    case "1":
                        item.InspectMark = "是";
                        break;
                    default:
                        break;
                }
                //零箱标记
                switch (item.BitBoxMark)
                {
                    case "0":
                        item.BitBoxMark = "否";
                        break;
                    case "1":
                        item.BitBoxMark = "是";
                        break;
                    default:
                        break;
                }
                //质检状态
                switch (item.InspectStatus)
                {
                    case "0":
                        item.InspectStatus = "待检验";
                        break;
                    case "1":
                        item.InspectStatus = "检验合格";
                        break;
                    case "2":
                        item.InspectStatus = "不合格";
                        break;
                    case "4":
                        item.InspectStatus = "放置期";
                        break;
                    default:
                        break;
                }
            }
            return box;
        }
        #endregion
    }
}