| | |
| | | using NewPdaSqlServer.service.@base; |
| | | using NewPdaSqlServer.util; |
| | | using SqlSugar; |
| | | using System.Text; |
| | | using System.Data; |
| | | using System.Data.SqlClient; |
| | | using System.Dynamic; |
| | | using static Microsoft.EntityFrameworkCore.DbLoggerCategory; |
| | | |
| | | namespace NewPdaSqlServer.service.Warehouse; |
| | | |
| | |
| | | // if (c_mes_inv_item_barcodes == null) |
| | | // throw new Exception("002[条码不存在,请核对!"); |
| | | |
| | | if (c_mes_inv_item_barcodes.Memo != "期初") |
| | | if (c_mes_inv_item_barcodes.Memo != "初期物料") |
| | | throw new Exception("002[条码不是期初条码,无法用期初入库!"); |
| | | |
| | | var wmsManager = new WmsBaseMangeer(); |
| | |
| | | transactionNo: "601" // 事务类型与存储过程匹配 |
| | | ); |
| | | |
| | | if (checkResult.result < "1") |
| | | if ( Convert.ToInt32(checkResult.result) < 1) |
| | | throw new Exception($"入库校验失败:{checkResult.strMsg}"); |
| | | |
| | | UseTransaction(db => |
| | |
| | | // 返回成功信息 |
| | | return query; |
| | | } |
| | | |
| | | |
| | | public dynamic GetDepoptsInfo(dynamic unity) |
| | | { |
| | | |
| | | //// 使用参数化查询防止SQL注入 |
| | | var sqlParams = new List<SugarParameter> { new("@sectionCode", unity.sectionCode) }; |
| | | |
| | | var sql2 = @" SELECT TOP 1 B.depot_code + '('+B.depot_name+')' depotsInfo, |
| | | B.FSubsidiary, |
| | | C.FNumber + '('+C.NAME+')' orgInfo |
| | | FROM MES_DEPOT_SECTIONS A |
| | | LEFT JOIN |
| | | MES_DEPOTS B ON A.depot_guid = B.Guid |
| | | LEFT JOIN SYS_ORGANIZATION C ON C.FID = B.FSubsidiary |
| | | WHERE a.depot_section_code = @sectionCode;"; |
| | | |
| | | var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams).FirstOrDefault(); |
| | | |
| | | // 检查结果有效性 |
| | | if (XcslItem == null) |
| | | { |
| | | throw new Exception($"库位 [{unity.sectionCode}] 不存在,或所属仓库状态异常(可能被禁用或删除)。"); |
| | | } |
| | | |
| | | return XcslItem; // 返回第一行数据,如果没有则返回 null |
| | | } |
| | | |
| | | |
| | | |
| | | public dynamic GetItemsList(dynamic unity) |
| | | { |
| | | var sqlParams = new List<SugarParameter> { new("@orgId", unity.orgId) }; |
| | | |
| | | var sql2 = new StringBuilder(@" |
| | | SELECT TOP 20 item_id, item_no, item_name, item_model,item_no+'---'+item_name AS wlInfo |
| | | FROM MES_ITEMS |
| | | WHERE FSubsidiary = @orgId"); |
| | | |
| | | if (!string.IsNullOrWhiteSpace(unity.selectKey?.ToString())) |
| | | { |
| | | sqlParams.Add(new("@selectKey", unity.selectKey)); |
| | | sql2.Append(@" |
| | | AND (item_no LIKE '%' + @selectKey + '%' |
| | | OR item_name LIKE '%' + @selectKey + '%' |
| | | OR item_model LIKE '%' + @selectKey + '%')"); |
| | | } |
| | | |
| | | var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams); |
| | | |
| | | if (XcslItem == null) |
| | | { |
| | | throw new Exception("该条件下无对应物料信息,请重新输入!"); |
| | | } |
| | | |
| | | return XcslItem; |
| | | } |
| | | |
| | | public List<dynamic> ExecuteBeginBar(dynamic query) |
| | | { |
| | | if (query == null) |
| | | throw new ArgumentNullException(nameof(query), "参数对象不能为null"); |
| | | |
| | | // 增强参数校验 |
| | | if (string.IsNullOrEmpty(query.userName?.ToString())) |
| | | throw new ArgumentException("用户账号不能为空", nameof(query.userName)); |
| | | |
| | | if (string.IsNullOrEmpty(query.itemid?.ToString())) |
| | | throw new ArgumentException("物料ID不能为空", nameof(query.itemid)); |
| | | |
| | | var resultList = new List<dynamic>(); |
| | | |
| | | using (var conn = new SqlConnection(DbHelperSQL.strConn)) |
| | | using (var cmd = new SqlCommand("rpt_BeginBar", conn)) |
| | | { |
| | | cmd.CommandType = CommandType.StoredProcedure; |
| | | cmd.Parameters.AddRange(new[] |
| | | { |
| | | new SqlParameter("@inUser", SqlDbType.NVarChar, 50) { Value = query.userName }, |
| | | new SqlParameter("@inItemId", SqlDbType.NVarChar, 50) { Value = query.itemid }, |
| | | new SqlParameter("@isDesign", SqlDbType.Int) { Value = 0 }, |
| | | new SqlParameter("@in4", SqlDbType.NVarChar, 20) { Value = query.in4 ?? DBNull.Value }, |
| | | new SqlParameter("@in5", SqlDbType.NVarChar, 20) { Value = query.num ?? DBNull.Value } |
| | | }); |
| | | |
| | | try |
| | | { |
| | | conn.Open(); |
| | | using (var reader = cmd.ExecuteReader()) |
| | | { |
| | | while (reader.Read()) |
| | | { |
| | | var barcode = reader.GetString(0); |
| | | |
| | | // 构建符合方法签名的参数对象 |
| | | var scanQuery = new WarehouseQuery |
| | | { |
| | | barcode = barcode, |
| | | DepotCode = query.sectionCode, // 从原始query获取库位编码 |
| | | userName = query.userName // 从原始query获取用户账号 |
| | | }; |
| | | |
| | | try |
| | | { |
| | | // 调用正式签名方法 |
| | | ScanBarcode(scanQuery); |
| | | var printData = GetPrintBar(barcode); |
| | | resultList.Add(printData); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception($"期初条码打印入库存在异常{ex.Message},请重新打印!"); |
| | | } |
| | | } |
| | | } |
| | | return resultList; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception($"生成期初条码失败:{ex.Message}"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public dynamic GetPrintBar(string barcode) |
| | | { |
| | | var sqlParams = new List<SugarParameter> { new("@barcode", barcode) }; |
| | | |
| | | var sql1 = @" SELECT TOP 1 C.ITEM_NO,C.item_name,C.item_model,B.OLDQTY as QUANTITY,B.CREATE_DATE, '期初条码' AS BarType,A.ITEM_BARCODE,GETDATE() as print_date |
| | | FROM MES_INV_ITEM_STOCKS A |
| | | LEFT JOIN MES_INV_ITEM_BARCODES B ON A.ITEM_BARCODE = B.ITEM_BARCODE |
| | | LEFT JOIN MES_ITEMS C ON C.item_id = B.ITEM_ID |
| | | WHERE B.ITEM_BARCODE = @barcode"; |
| | | |
| | | var XcslItem = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams).First(); |
| | | |
| | | return XcslItem; |
| | | } |
| | | } |