using Masuit.Tools; using MES.Service.Models; using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using NewPdaSqlServer.entity.Base; using NewPdaSqlServer.util; using OracleInternal.Sharding; using SqlSugar; using SqlSugar.Extensions; using System.Data; using System.Data.SqlClient; using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace NewPdaSqlServer.service.Warehouse; public class MesSttlManager : Repository { /// /// 获取受托退料申请列表 /// /// 受托退料申请列表 public List GetSttlBillNo(WarehouseQuery query) { var list = Db.Queryable() .Where(s => s.IsCheck == true && s.IsFinish == false) .Select(s => s.BillNo).ToList(); return list; } /// /// 根据单号获取MES物料表明细 /// /// 仓库查询参数 /// 物料明细列表 public List GetMesItemDetailByBillNo( WarehouseQuery query) { // 关联查询物料表、物料明细表和物料基础信息表 var mesItemTblDetails = Db .Queryable( (a, b, c) => new JoinQueryInfos( JoinType.Left, a.Guid == b.PGuid, JoinType.Left, b.FMaterialId == c.Id.ToString()) ).Where((a, b, c) => a.BillNo == query.billNo && a.IsCheck == true) .Select((a, b, c) => new ItemDetailModel { ItemNo = c.ItemNo, ItemName = c.ItemName, ItemModel = c.ItemModel, FQty = b.FQty, // 申请数量 SQty = b.SQty, // 已扫数量 Pid = b.PGuid.ToString(), FMaterialId = b.FMaterialId, Id = b.Guid.ToString() }).ToList(); // 筛选出待退数量大于已退数量的记录 //var itemTblDetails = mesItemTblDetails // .Where(s => (s.Tld005 ?? 0) - (s.Tld006 ?? 0) > 0).ToList(); return mesItemTblDetails; } /// /// 受托退料入库 /// /// /// /// public ProductionPickDto SttlScanBarcode(WarehouseQuery query) { var _strMsg = ""; var _intSum = ""; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { if (query.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空"); if (query.daa001.IsNullOrEmpty()) throw new Exception("申请单号不允许为空"); if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空"); using (var cmd = new SqlCommand("[prc_pda_STTL]", conn)) { try { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new("@outMsg", SqlDbType.NVarChar, 300), new("@outSum", SqlDbType.NVarChar, 300), new("@barcode_num", SqlDbType.NVarChar, 300), new("@split_num", SqlDbType.NVarChar, 300), new("@c_User", query.userName), new("@p_biLL_no", query.daa001), new("@p_item_barcode", query.barcode) }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Direction = ParameterDirection.Output; parameters[2].Direction = ParameterDirection.Output; parameters[3].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 barcodeNum = parameters[2].Value.ToString(); var splitNum = parameters[3].Value.ToString(); var result = Convert.ToInt32(_intSum); if (result <= 0) throw new Exception(_strMsg); var dto = new ProductionPickDto { daa001 = query.daa001, barcodeNum = barcodeNum, splitNum = splitNum, barcode = query.barcode, strMsg = _strMsg, result = _intSum }; return dto; } catch (Exception ex) { throw new Exception(ex.Message); } finally { conn.Close(); } } } } }