using System.Data; using System.Data.SqlClient; using Masuit.Tools; using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using NewPdaSqlServer.entity.Base; using SqlSugar; namespace NewPdaSqlServer.service.Warehouse; public class MesCgthSqManager : Repository { public List GetMesCgthSq() { return Db.Queryable() .Where(s => s.Status == true) .OrderByDescending(s => s.CreateDate) .ToList(); } public ProductionPickDto GetSumItem(WarehouseQuery query) { if (string.IsNullOrEmpty(query.billNo)) throw new Exception("申请单号为空"); var mesInvItemOuts = base.GetSingle(it => it.BillNo == query.billNo && it.Status == true); if (mesInvItemOuts == null) throw new Exception("采购退货申请单不存在或未审核"); var sql = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,A.SQ_NUM FQty,A.YS_NUM SQty,A.SQ_NUM - A.YS_NUM DSQty, dbo.F_QX_GETRECODEPOTSE(A.ITEM_ID,A.depot_id,'','') as RecoKw fROM MES_CGTH_SQ_DETAIL A LEFT JOIN MES_CGTH_SQ B ON A.MID = B.ID LEFT JOIN MES_ITEMS C ON A.ITEM_ID = C.item_id WHERE B.BILL_NO = '{0}'", query.billNo); var womdabs = Db.Ado.SqlQuery(sql); if(womdabs.Count < 1) { throw new Exception("该采购退货申请单明细不存在"); } var DS_list = womdabs.Where(s => s.DSQty > 0).ToList(); var YS_list = womdabs.Where(s => s.SQty > 0).ToList(); var dto = new ProductionPickDto { //daa001 = womdaa.Daa001, //PlanNo = womcaa.Caa020, items = DS_list, Ysitems = YS_list }; return dto; } public List GetItems(WarehouseQuery query) { // 尝试将query.id转换为Guid类型,如果转换失败,则抛出异常 var parsedGuid = Guid.Empty; if (string.IsNullOrEmpty(query.id)) return new List(); // 如果query.id为空,则返回空列表 var isValid = Guid.TryParse(query.id, out parsedGuid); if (!isValid) throw new ApplicationException("GUID转换错误"); // 如果转换失败,则抛出异常 // 使用SqlSugar框架查询MesInvItemOutItems和MesItems表,根据ItemId进行内连接 var mesInvItemOutItemsList = Db.Queryable( (c, s) => new object[] { JoinType.Inner, c.ItemId == s.Id // 内连接条件 }).Where((c, s) => c.Mid == parsedGuid) // 根据ItemOutId过滤 .Select((c, s) => new MesCgthSqDetail // 选择并映射到MesInvItemOutItems对象 { Id = c.Id, Mid = c.Mid, InvBillNo = c.InvBillNo, InvWorkLine = c.InvWorkLine, Ebeln = c.Ebeln, Eid = c.Eid, Erpid = c.Erpid, SqNum = c.SqNum, YsNum = c.YsNum, RkmxGuid = c.RkmxGuid, Remark = c.Remark, ItemNo = s.ItemNo, // 从MesItems表中获取ItemNo ItemName = s.ItemName, // 从MesItems表中获取ItemName ItemModel = s.ItemModel, // 从MesItems表中获取ItemModel ItemId = c.ItemId }).ToList(); // 将查询结果转换为列表 return mesInvItemOutItemsList; // 返回处理后的列表 } public ProductionPickDto ScanCode(WarehouseQuery query) { var _strMsg = ""; var _intSum = ""; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { if (query.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空"); if (query.billNo.IsNullOrEmpty()) throw new Exception("领料单号不允许为空"); if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空"); using (var cmd = new SqlCommand("[prc_pda_CGTH]", 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.billNo), 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, result = result.ToString() }; return dto; } catch (Exception ex) { throw new Exception(ex.Message); } finally { conn.Close(); } } } } public ProductionPickDto ScanCodeCF(WarehouseQuery query) { if (query.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空"); if (query.daa001.IsNullOrEmpty()) throw new Exception("领料单号不允许为空"); if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空"); if (query.Num is null or 0) throw new Exception("条码拆分数不允许为空或者为0"); var _strMsg = ""; var _intSum = ""; var _cfBar = "";//拆分后条码 using (var conn = new SqlConnection(DbHelperSQL.strConn)) { using (var cmd = new SqlCommand("[prc_pda_CGTH_CF]", conn)) { try { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new("@outMsg", SqlDbType.NVarChar, 2000), new("@outSum", SqlDbType.NVarChar, 300), new("@outCfBar", SqlDbType.NVarChar, 300), new("@c_User", query.userName), new("@p_biLL_no", query.daa001), new("@p_item_barcode", query.barcode), new("@num", query.Num) }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Direction = ParameterDirection.Output; parameters[2].Direction = ParameterDirection.Output; foreach (var parameter in parameters) cmd.Parameters.Add(parameter); cmd.ExecuteNonQuery(); _strMsg = parameters[0].Value.ToString(); _intSum = parameters[1].Value.ToString(); _cfBar = parameters[2].Value.ToString(); var result = Convert.ToInt32(_intSum); if (result <= 0) throw new Exception(_strMsg); var dto = new ProductionPickDto { daa001 = query.daa001, barcode = query.barcode,//原条码 cfBarcode = _cfBar//拆分后条码 }; return dto; } catch (Exception ex) { throw new Exception(ex.Message); } finally { conn.Close(); } } } } }