using System.Data;
|
using System.Data.SqlClient;
|
using Masuit.Tools;
|
using NewPdaSqlServer.DB;
|
using NewPdaSqlServer.Dto.service;
|
using NewPdaSqlServer.entity;
|
using SqlSugar;
|
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
|
|
namespace NewPdaSqlServer.service.Warehouse;
|
|
public class MesXkyShdManager : Repository<MesCgthSq>
|
{
|
|
public dynamic GetShdhItems(dynamic unity)
|
{
|
//// 使用参数化查询防止SQL注入
|
var sqlParams = new List<SugarParameter> { new("@shdh", unity.shdh) };
|
|
var sql1 = @"select 1 from DELIVERY_NOTICE WHERE delivery_no = @shdh ";
|
|
var shdh = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams);
|
if (shdh.Count < 1)
|
throw new Exception($"送货单号【{unity.shdh}】不存在或未同步!");
|
|
// var sql3 = @"SELECT ISNULL((SELECT SUM(delivery_qty) FROM DELIVERY_NOTICE_DETAIL WHERE delivery_no = @shdh), 0) -
|
//ISNULL((SELECT SUM(include_qty) FROM TBL_BARCODE_INFORMATION WHERE delivery_no = @shdh), 0) AS Diffnum ";
|
|
// var diffNum = Db.Ado.SqlQuery<dynamic>(sql3, sqlParams).First();
|
|
// if (diffNum.Diffnum != 0)
|
// throw new Exception($"送货单号【{unity.shdh}】条码未全部打印或未同步,无法收货!");
|
|
var sql2 = @"select D.item_no,
|
D.item_name,
|
D.item_model,
|
A.delivery_qty AS shsl,
|
ISNULL(E.quantity, 0) as ysl,
|
A.delivery_qty - ISNULL(E.quantity, 0) as dssl,
|
A.po_erp_no,
|
C.PURCHASE_ORDER_LINE_NUMBER,
|
B.GUID AS DDHID
|
from DELIVERY_NOTICE_DETAIL A
|
LEFT JOIN dbo.MES_INV_ITEM_ARN B on B.paper_bill_no = A.delivery_no
|
LEFT JOIN MES_ROH_IN_DATA C ON A.po_line_no = C.EBELN_K3ID
|
LEFT JOIN MES_ITEMS D ON C.ITEM_ID = D.item_id
|
LEFT JOIN dbo.MES_INV_ITEM_ARN_DETAIL E on E.parent_Guid = B.guid AND E.line_k3id = A.po_line_no
|
WHERE A.delivery_no = @shdh";
|
|
var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams);
|
if (XcslItem.Count < 1)
|
throw new Exception($"送货单号【{unity.shdh}】送货明细不存在或未同步!");
|
|
return XcslItem; // 返回第一行数据,如果没有则返回 null
|
}
|
|
public dynamic GetShdhBar(dynamic unity)
|
{
|
|
//// 使用参数化查询防止SQL注入
|
var sqlParams = new List<SugarParameter> { new("@shdh", unity.shdh) };
|
|
var sql2 = @"SELECT A.small_barcode,
|
D.item_no,
|
D.item_name,
|
D.item_model,
|
A.include_qty,
|
A.po_erp_no,
|
ISNULL(B.OLDQTY,0) AS ysl
|
FROM TBL_BARCODE_INFORMATION A
|
LEFT JOIN MES_INV_ITEM_BARCODES B ON a.small_barcode = b.ITEM_BARCODE
|
LEFT JOIN MES_ROH_IN_DATA C ON C.EBELN_K3ID = A.po_line_no
|
LEFT JOIN MES_ITEMS D ON D.item_id = C.item_id
|
WHERE A.delivery_no = @shdh";
|
|
var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams);
|
|
if (XcslItem.Count < 1)
|
throw new Exception($"送货单号【{unity.shdh}】条码明细不存在或未同步!");
|
|
return XcslItem; // 返回第一行数据,如果没有则返回 null
|
}
|
|
|
public MesInvItemBarcodes GetBarInfo(WarehouseQuery unity)
|
{
|
return Db.Queryable<MesInvItemBarcodes>()
|
.Where(s => s.ItemBarcode == unity.barcode)
|
.First(); // 返回第一行数据,如果没有则返回 null
|
}
|
|
public MesItems GetItemNo(decimal strItemId)
|
{
|
return Db.Queryable<MesItems>()
|
.Where(s => s.Id == strItemId)
|
.First();
|
}
|
|
public string ScanBar(dynamic unity)
|
{
|
var _strMsg = "";
|
var _intSum = "";
|
using (var conn = new SqlConnection(DbHelperSQL.strConn))
|
{
|
// 新增空对象校验
|
if (unity == null) throw new ArgumentNullException(nameof(unity), "参数对象不能为 null");
|
|
// 参数校验增强
|
if (string.IsNullOrEmpty(unity.userName?.ToString()))
|
throw new ArgumentException("用户账户不允许为空", nameof(unity.userName));
|
|
if (string.IsNullOrEmpty(unity.shdh?.ToString()))
|
throw new ArgumentException("送货单号不允许为空", nameof(unity.shdh));
|
|
if (string.IsNullOrEmpty(unity.barcode?.ToString()))
|
throw new ArgumentException("条码不允许为空", nameof(unity.barcode));
|
|
using (var cmd = new SqlCommand("[prc_pda_inv_dhdsh]", conn))
|
{
|
try
|
{
|
conn.Open();
|
cmd.CommandType = CommandType.StoredProcedure;
|
SqlParameter[] parameters =
|
{
|
new("@po_outMsg", SqlDbType.NVarChar, 300) { Direction = ParameterDirection.Output },
|
new("@po_outSum", SqlDbType.NVarChar, 300) { Direction = ParameterDirection.Output },
|
new("@pi_user", SqlDbType.NVarChar) { Value = unity.userName.ToString() }, // 显式类型转换
|
new("@pi_barcode", SqlDbType.NVarChar) { Value = unity.barcode.ToString() },
|
new("@pi_shdh", SqlDbType.NVarChar) { Value = unity.shdh.ToString() }
|
};
|
parameters[0].Direction = ParameterDirection.Output;
|
parameters[1].Direction = ParameterDirection.Output;
|
|
foreach (var parameter in parameters)
|
cmd.Parameters.Add(parameter);
|
cmd.ExecuteNonQuery();
|
_strMsg = parameters[0].Value.ToString();
|
_intSum = parameters[1].Value.ToString();
|
|
var result = Convert.ToInt32(_intSum);
|
if (result <= 0) throw new Exception(_strMsg);
|
|
return _strMsg;
|
|
//return 0;
|
|
}
|
catch (Exception ex)
|
{
|
throw new Exception(ex.Message);
|
}
|
finally
|
{
|
conn.Close();
|
}
|
}
|
}
|
}
|
}
|