schangxiang@126.com
2025-09-17 60dd1afc3e8f94aa1b23211b6738d35b47294382
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
using FineUIPro;
using iWareCommon.Common.Entity;
using iWareDataCore.BASE.Entity;
using iWareDataCore.BASE.EnumType;
using iWareDataCore.BASE.Service;
using iWareExcel.EXCEL.Service;
using iWareWms.Code.Excel.Service;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections.ObjectModel;
 
namespace iWareWms.View.InOut
{
    public partial class CreateInOut : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            tbListNo.Text = DateTime.Now.ToFileTime().ToString();
            
        }
 
        protected override Grid GetGrid()
        {
            return InOutMaterialGrid;
        }
 
        protected override DropDownList GetPageSizeDropDownList()
        {
            return ddlPageSize;
        }
 
        protected void btCreatCode_Click(object sender, EventArgs e)
        {
            tbListNo.Text = DateTime.Now.ToFileTime().ToString();
        }
 
        
 
        protected override Window GetWindow()
        {
            return Window2;
        }
 
 
        protected override List<object> GetDataSource(int pageIndex, int pageSize, out string msg, out int totalNum, out int currentPage)
        {
            var materials = InputMaterialService.GetInstance().QueryByParam(new QueryParam
            {
                Filter = new Dictionary<string,object> { { "Status", "未生成" } },
                PageIndex = pageIndex,
                PageSize = pageSize
            }, out msg, out totalNum, out currentPage);
            var material = new List<object>();
            materials.ForEach(x => material.Add(x));
            return material;
        }
 
        protected override FineUIPro.Timer GetTimer()
        {
            return timer1;
        }
 
        protected void FileUpload1_FileSelected(object sender, EventArgs e)
        {
            string msg;
            if (!FileUpload1.HasFile)
            {
                Alert.ShowInTop("请选择上传文件!");
                return;
            }
            var dt = DateTime.Now;
            string path = string.Format(@"c:\importExcel\{0}\{1}\{2}\{3}\", dt.Year, dt.Month, dt.Day, (long)(dt - Convert.ToDateTime("1970-01-01 08:00:00")).TotalMilliseconds); ;
            path += FileUpload1.FileName;
            FileUpload1.SaveAs(path);
            var workBooks = WorkBookService.GetInstance().QueryByParam(new QueryParam { Filter = new Dictionary<string, object> { { "Name", "生成出入库单" } } }, out msg);
            InputMaterialService.GetInstance().DeleteAll();
            InOutListDetailViewService.GetInstance().ImportExcel(path, workBooks[0], out msg);
            Alert.ShowInTop(string.IsNullOrEmpty(msg) ? "导入成功" : msg);
            btCreatCode_Click(sender, e);
            Query(1);
            AddBtn.Enabled = true;
        }
 
        /// <summary>
        /// 生成出入库单(确认是入库还是出库,入库的话确认不在库存中,且不在主任务中,出库的话也应该是必须在库中,而且两者都必须不在刚生成的未完成的出入库单明细中)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void AddBtn_Click(object sender, EventArgs e)
        {
            string msg;
            string typeName = ddlTypeName.SelectedValue;
            var inputmaterials = InputMaterialService.GetInstance().QueryByParam(new QueryParam { Filter = new Dictionary<string, object> { { "Status", "未生成" } } }, out msg);
            if (inputmaterials != null && inputmaterials.Count > 0)
            {
                var placeMaterial = PlaceMaterialViewService.GetInstance().QueryByParam(new QueryParam { }, out msg);
                var inoutdetails = InOutListDetailViewService.GetInstance().QueryByParam(new QueryParam { }, out msg);
                List<string> codes = new List<string>();
                inputmaterials.ForEach(x => codes.Add(x.Code));
                List<int> ids = new List<int>();
                var materials = InputMaterialService.GetInstance().GetIds(codes);
                List<InOutListDetailEntity> detail = new List<InOutListDetailEntity>();
                for (int i = 0; i < materials.Count; i++)
                {
                    if (typeName == "入库")
                    {
 
                        if (placeMaterial.Select(x => x.MaterialId).Contains(materials[i].id))
                        {
                            msg = materials[i].code + "已存在立库中,不能添加到入库单明细中!";
                            break;
                        }
                        if (inoutdetails.Select(x => x.MaterialId).Contains(materials[i].id))
                        {
                            msg = materials[i].code + "已存在之前的入库单明细中,不能添加到当前入库单明细中!";
                                break;
                        }
                  
                    }
                    else
                    {
                        if (!placeMaterial.Select(x => x.MaterialId).Contains(materials[i].id)) 
                        {
                            msg = materials[i].code + "不在立库中,不能添加到出库单明细中!";
                            break;
                        }
                        if (inoutdetails.Select(x => x.MaterialId).Contains(materials[i].id))
                        {
                            var inoutdeta=inoutdetails.FirstOrDefault(x=>x.MaterialId==materials[i].id);
                            if (inoutdeta.TypeName=="出库")
                            {
                                msg = materials[i].name + "已存在之前的出库单明细中,不能添加到当前出库单明细中!";
                                break;
                            }
                        }
                    }
                    InOutListDetailEntity inoutdetail = new InOutListDetailEntity()
                    {
                        MaterialId = materials[i].id,
                        IsFinish = 0
                    };
                    detail.Add(inoutdetail);
                }
                if (!string.IsNullOrEmpty(msg))
                {
                    Alert.Show(msg);
                    return;
                }
                InOutListService.GetInstance().CreateListAndDetial(
                    new InOutListEntity
                    {
                        ListNo = tbListNo.Text,
                        CreateTime = DateTime.Now,
                        TypeName = ddlTypeName.SelectedText,
                        Status = 0,
                        Remark = "",
                        InOutListDetail = detail
                    }, out msg);
                Alert.ShowInTop("生成" + ddlTypeName.SelectedText + "单成功");
                InOutMaterialGrid.DataSource = null;
                InOutMaterialGrid.DataBind();
                InputMaterialService.GetInstance().DeleteAll();
            }
            else 
            {
                Alert.ShowInTop("请先确保出入库单物料明细不为空!");
            }
           
        }
 
        protected override void GridRowCommand(object sender, GridCommandEventArgs e)
        {
 
            var grid = InOutMaterialGrid;
            //删除出入库单号
            if (e.CommandName == "Delete")
            {
                int id = Convert.ToInt32(grid.Rows[e.RowIndex].DataKeys[0].ToString());
                string msg;
                int count = InputMaterialService.GetInstance().Delete(id, out msg);
                if (count >= 0)
                {
                    Alert.ShowInTop("删除成功!");
                    Query(1);
                }
            }
        }
 
    }
}