zzr99
2022-04-12 3e02cd0efd250e502655103921252bf28bfa7e5b
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
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebAPI.Models;
using NPOI;
using NPOI.OOXML;
using NPOI.OpenXml4Net;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.Web;
using System.Net.Http.Headers;
 
namespace WebAPI.Controllers.SCGL
{
    public class Sc_PackUnionBillController : ApiController
    {
        public DBUtility.ClsPub.Enum_BillStatus BillStatus;//单据状态(新增,修改,浏览,更新单价,变更)
        private json objJsonResult = new json();
        public DataSet ds = new DataSet();
        public SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
        public DAL.ClsSc_PackUnionBill BillNew0 = new DAL.ClsSc_PackUnionBill();   //
        public DAL.ClsSc_PackUnionBill BillOld0 = new DAL.ClsSc_PackUnionBill();   //
 
 
        #region [组托单查询功能]
        /// <summary>
        /// 组托单查询功能
        /// </summary>
        /// <returns></returns>
        [Route("Sc_PackUnionBill/Get_PackUnionBillList")]
        [HttpGet]
        public object Get_PackUnionBillList(int page, int limit, string sWhere,string user)
        {
            List<object> columnNameList = new List<object>();
            try
            {
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("Sc_PackUnionBill_Query",1,false,user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限查询!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
 
                int count = 0;
                int pageNum = page;
                int pageSize = limit;
                if (sWhere == null || sWhere.Equals(""))
                {
                    sWhere = " where 1=1 ";
                }
                else
                {
                    sWhere = " where 1=1" + sWhere;
                }
 
                DataSet ds0 = oCn.RunProcReturn("select count(*) CountNum from h_v_PackUnionBillList "+sWhere+"", "h_v_PackUnionBillList");
                count = int.Parse(ds0.Tables[0].Rows[0]["CountNum"].ToString());
                //string sql = string.Format(@"select top " + pageSize + " hmainid,日期,单据号,箱号条形码,净重,毛重,皮重,生产组织,部门,操作员,客户标签号,物料代码,物料名称,计量单位代码,计量单位名称,数量,制单人,制单日期 from(select row_number() over (order by hmainid desc) as RowNumber,hmainid,日期,单据号,箱号条形码,净重,毛重,皮重,生产组织,部门,操作员,客户标签号,物料代码,物料名称,计量单位代码,计量单位名称,数量,制单人,制单日期 from h_v_PackUnionBillList " + sWhere + ")   as A where RowNumber >" + pageSize + " *(" + pageNum + "-1)");
                string sql = string.Format(@"select hmainid,日期,单据号,箱号条形码,条码,净重,毛重,皮重,生产组织,部门,操作员,客户标签号,物料代码,物料名称,计量单位代码,计量单位名称,数量,制单人,制单日期 from h_v_PackUnionBillList " + sWhere + " order by hmainid desc  offset ((" + pageNum + "-1)*" + pageSize + ") rows fetch next " + pageSize + " rows only");
                ds = new SQLHelper.ClsCN().RunProcReturn(sql, "h_v_PackUnionBillList");
                string aa = ds.Tables[0].Columns[0].ToString();
 
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
 
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
 
                //if (ds.Tables[0].Rows.Count > 0)
                //{
                objJsonResult.code = "1";
                objJsonResult.count = count;
                objJsonResult.Message = "返回记录成功!";
                objJsonResult.data = JsonConvert.DeserializeObject<DataTable>(JsonConvert.SerializeObject(ds.Tables[0], new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" }));  //序列化DataSet中的时间格式,然后再反序列化回来
                objJsonResult.list = columnNameList;
                return objJsonResult;
                //}
                //else
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "暂无记录!";
                //    objJsonResult.data = null;
                //    objJsonResult.list = columnNameList;
                //    return objJsonResult;
                //}
            }
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + ex.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
 
        #endregion
 
        #region [组托单删除功能]
        /// <summary>
        /// 组托单删除功能
        /// </summary>
        /// <returns></returns>
        [Route("Sc_PackUnionBill/set_DeleteBill")]
        [HttpGet]
        public object set_DeleteBill(string HInterID, string user)
        {
            try
            {
                //编辑权限
                if (!DBUtility.ClsPub.Security_Log_second("Sc_PackUnionBill_Drop", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无删除权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
 
                string s = "";
                Int64 lngBillKey = 0;
                lngBillKey = DBUtility.ClsPub.isLong(HInterID);
                if (lngBillKey == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据ID为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                DAL.ClsSc_PackUnionBill oBill = new DAL.ClsSc_PackUnionBill();
                if (oBill.ShowBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo))
                {
                    if (oBill.omodel.HBillStatus > 1)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据当前处于不能删除状态,不能删除!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (oBill.omodel.HChecker != "" && oBill.omodel.HChecker != null)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据已经审核,不能删除!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (!DBUtility.Xt_BaseBillFun.Fun_AllowDeleteBill(oBill, ref s))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = s + ",不允许删除";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    ds = oCn.RunProcReturn("Select * from Sc_PackUnionBillMain where HinterID=" + lngBillKey, "Sc_PackUnionBillMain");
                    var HBarCode_Pack = ds.Tables[0].Rows[0]["HBarCode_Pack"].ToString();
                    if (ds.Tables.Count < 1)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "不存在箱码";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        //判断是否入库 
                        ds = oCn.RunProcReturn("select * from Sc_ScanLineInStock where HBarCode_Pack='" + HBarCode_Pack + "'", "Sc_ScanLineInStock");
                        if (ds != null && ds.Tables[0].Rows.Count > 0)
                        {
                            objJsonResult.code = "-1";
                            objJsonResult.Message = "该箱条码已入库不允许取消!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
 
                        ds = oCn.RunProcReturn("Select 1 from Gy_BarCodeBill where HBarCode='" + HBarCode_Pack + "'", "Gy_BarCodeBill");
                        if (ds == null && ds.Tables[0].Rows.Count == 0)
                        {
                            objJsonResult.code = "-1";
                            objJsonResult.Message = "无效箱条码!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        ds = oCn.RunProcReturn("Select 1 from Gy_BarCodeBill where HBarCode='" + HBarCode_Pack + "' and HStopflag='1'", "Gy_BarCodeBill");
                        if (ds != null && ds.Tables[0].Rows.Count > 0)
                        {
                            objJsonResult.code = "-1";
                            objJsonResult.Message = "此箱条码已作废!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
 
                    oCn.BeginTran();
                    oCn.RunProc("Update  Gy_BarCodeBill set HStopflag='1'  where HBarCode='" + HBarCode_Pack + "'");
                    oCn.RunProc("Delete From Sc_PackUnionBillSub_Sum  where HBarCode_Pack='" + HBarCode_Pack + "'");
                    oCn.RunProc("Delete From Sc_PackUnionBillSub  where HInterID='" + lngBillKey + "'");
                    oCn.RunProc("Delete From Sc_PackUnionBillMain  where HInterID='" + lngBillKey + "'");
                    oCn.Commit();
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "删除成功";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据未找到";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                oCn.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = e.Message;
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
 
        #endregion
 
        #region[组托单编辑时获取表头数据]
        [Route("Sc_PackUnionBill/Sc_PackUnionBillListCheckDetai")]
        [HttpGet]
        public ApiResult<DataSet> Sc_PackUnionBillListCheckDetai(string HID)
        {
            if (string.IsNullOrEmpty(HID))
                return new ApiResult<DataSet> { code = -1, msg = "ID不能为空" };
            SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
 
            var dataSet = oCN.RunProcReturn("select top 1 * from h_v_PackUnionBillList  where hmainid= " + HID + " ", "h_v_PackUnionBillList");
            if (dataSet == null || dataSet.Tables[0].Rows.Count == 0)
                return new ApiResult<DataSet> { code = -1, msg = "不存在单号" };
 
            return new ApiResult<DataSet> { code = 1, msg = "查询成功", data = dataSet };
        }
        #endregion
 
        #region 标准工时单列表
 
        [Route("Sc_PackUnionBill/GetSc_StationInBillList")]
        [HttpGet]
        public object GetSc_StationInBillList(string sWhere)
        {
            try
            {
                ds = oCn.RunProcReturn("select * from h_v_Sc_StationInBillListMain"+sWhere+ "order by hmainid desc", "h_v_Sc_StationInBillListMain");
               
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "返回记录成功!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + ex.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
 
        #endregion
 
        #region 标准工时导出Excel表格数据
        [Route("Sc_PackUnionBill/Sc_StationInBillSetExcel")]
        [HttpGet]
        public HttpResponseMessage Sc_StationInBillSetExcel(string sWhere)
        {
            HSSFWorkbook workbook = new HSSFWorkbook();
            ISheet sheet = workbook.CreateSheet("sheet1");
            IRow row = sheet.CreateRow(0); 
            
 
            row.CreateCell(0).SetCellValue("进站生产订单号");
            row.CreateCell(1).SetCellValue("流转卡号");
            row.CreateCell(2).SetCellValue("进出站所用时间");
            row.CreateCell(3).SetCellValue("工时");
            row.CreateCell(4).SetCellValue("工序名");
            row.CreateCell(5).SetCellValue("不良数量");
            row.CreateCell(6).SetCellValue("报废数量");
            row.CreateCell(7).SetCellValue("进站数量");
            row.CreateCell(8).SetCellValue("出站数量");
            row.CreateCell(9).SetCellValue("出站时间");
            row.CreateCell(10).SetCellValue("进站时间");
            row.CreateCell(11).SetCellValue("制单人");
            row.CreateCell(12).SetCellValue("制单日期");
            //精确控制列宽
            sheet.SetColumnWidth(1, 5000);
            sheet.SetColumnWidth(2, 5000);
            sheet.SetColumnWidth(3, 5000);
            sheet.SetColumnWidth(4, 5000);
            sheet.SetColumnWidth(5, 5000);
            sheet.SetColumnWidth(6, 5000);
            sheet.SetColumnWidth(7, 5000);
            sheet.SetColumnWidth(8, 5000);
            sheet.SetColumnWidth(9, 5000);
            sheet.SetColumnWidth(10, 5000);
            sheet.SetColumnWidth(11, 5000);
 
            DataSet ds = oCn.RunProcReturn("select * from h_v_Sc_StationInBillListMain" + sWhere + " order by hmainid desc", "h_v_Sc_StationInBillListMain");
            for (var i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                IRow row1 = sheet.CreateRow(i + 1);
                row1.CreateCell(0).SetCellValue(ds.Tables[0].Rows[i]["进站生产订单号"].ToString());
                row1.CreateCell(1).SetCellValue(ds.Tables[0].Rows[i]["流转卡号"].ToString());
                row1.CreateCell(2).SetCellValue(ds.Tables[0].Rows[i]["进出站所用时间"].ToString());
                row1.CreateCell(3).SetCellValue(ds.Tables[0].Rows[i]["工时"].ToString());
                row1.CreateCell(3).SetCellValue(ds.Tables[0].Rows[i]["工序名"].ToString());
                row1.CreateCell(4).SetCellValue(ds.Tables[0].Rows[i]["不良数量"].ToString());
                row1.CreateCell(5).SetCellValue(ds.Tables[0].Rows[i]["报废数量"].ToString());
                row1.CreateCell(6).SetCellValue(ds.Tables[0].Rows[i]["进站数量"].ToString());
                row1.CreateCell(7).SetCellValue(ds.Tables[0].Rows[i]["出站数量"].ToString());
                row1.CreateCell(8).SetCellValue(ds.Tables[0].Rows[i]["出站时间"].ToString());
                row1.CreateCell(9).SetCellValue(ds.Tables[0].Rows[i]["进站时间"].ToString());
                row1.CreateCell(10).SetCellValue(ds.Tables[0].Rows[i]["制单人"].ToString());
                row1.CreateCell(11).SetCellValue(ds.Tables[0].Rows[i]["制单日期"].ToString());
            }
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            workbook.Write(ms);
            ms.Position = 0;
 
            var response = new HttpResponseMessage(HttpStatusCode.OK);
            response.Content = new StreamContent(ms);
 
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            var fileName = "标准工时.xls";
 
            response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = System.Web.HttpUtility.UrlEncode(fileName)
            };
            return response;
        }
 
        #endregion
    }
}