using System.Data; using System.Data.SqlClient; using Masuit.Tools; using Microsoft.SqlServer.Server; using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using NewPdaSqlServer.entity.Base; using SqlSugar; namespace NewPdaSqlServer.service.Wom; public class WomdaaManager : Repository { //当前类已经继承了 Repository 增、删、查、改的方法 //这里面写的代码不会给覆盖,如果要重新生成请删除 WomdaaManager.cs //获取工单号 public List GetProductionPickDaa001(WarehouseQuery query) { var sql = "SELECT DAA001 FROM WOMDAA A LEFT JOIN (SELECT COUNT(1) UN_NUM, PID FROM WOMDAB WHERE DAB006 > DAB007 GROUP BY DAB002) B ON A.GUID = B.daaGuid WHERE DAA001 = " + query.daa001 + " and DAA018 != '完工' AND DAA022 = 1 AND UN_NUM > 0 AND ROWNUM <= 10 order by a.id desc"; return Db.Ado.SqlQuery(sql); } //根据工单号返回产品型号和待领物料 public ProductionPickDto GetItemsByDaa001(WarehouseQuery query) { return getDaa001(query); } 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.daa001.IsNullOrEmpty()) throw new Exception("领料单号不允许为空"); if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空"); using (var cmd = new SqlCommand("[prc_pda_SCLL]", 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(); } } } } //prC_pda_SCLL_CF 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 = ""; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { using (var cmd = new SqlCommand("[prc_pda_SCLL_CF]", conn)) { try { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new("@outMsg", SqlDbType.NVarChar, 300), new("@outSum", 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; 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); var dto = new ProductionPickDto { daa001 = query.daa001, barcode = query.barcode }; return dto; } catch (Exception ex) { throw new Exception(ex.Message); } finally { conn.Close(); } } } } private ProductionPickDto getDaa001(WarehouseQuery query) { if (string.IsNullOrEmpty(query.daa001)) throw new Exception("工单号为空"); var womdaa = Db.Queryable((a, i) => new JoinQueryInfos(JoinType.Left, a.Daa002 == i.ItemId.ToString())) .Where((a, i) => a.Daa001 == query.daa001 && a.Fstatus == 1) .Select((a, i) => new { a.Daa001, a.CaaGuid }).First(); if (womdaa?.Daa001 == null) throw new Exception("工单号不存在"); //var womdabs = Db.Queryable( // (a, b, c, d) => // new JoinQueryInfos( // JoinType.Left, // a.Guid == b.DaaGuid, // JoinType.Inner, // c.Id.ToString() == // b.Dab003, // JoinType.Inner, b.Erpid == d.Erpid // )) // .Where((a, b, c, d) => // a.Daa001 == query.daa001 && d.Iss1ueType == "1") // .Select((a, b, c, d) => new ItemDetailModel // { // ItemNo = c.ItemNo, // ItemName = c.ItemName, // ItemModel = c.ItemModel, // FQty = b.Dab006, // 申请数量 // SQty = b.Dab007, // 已扫数量 // DSQty = b.Dab006 - b.Dab007, // 已扫数量 // }) // .ToList(); var sql =string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.dab006 FQty,b.dab007 SQty,b.dab006 - b.dab007 DSQty , dbo.F_QX_GETRECODEPOTSE(B.dab003) as RecoKw FROM WOMDAB B LEFT JOIN WOMDAA A ON A.guid = B.daaGuid LEFT JOIN MES_ITEMS C ON B.dab003 = C.item_id LEFT JOIN WOMCAB D ON B.erpid = D.ERPID WHERE daa001 = '{0}' AND ISSUE_TYPE = 1 ORDER BY DAB002", query.daa001); var womdabs = Db.Ado.SqlQuery(sql); var DS_list = womdabs.Where(s => s.DSQty > 0).ToList(); var YS_list = womdabs.Where(s => s.SQty > 0).ToList(); var mesInvItemOutCDetailsList = Db .Queryable ((a, b, c) => new JoinQueryInfos( JoinType.Inner, a.ItemId == b.Id, JoinType.Inner, c.DepotId == a.DepotId )) .Where((a, b, c) => a.WorkNo == query.daa001) .Select((a, b, c) => new MesInvItemOutCDetails { ItemName = b.ItemName, ItemNo = b.ItemNo, ItemId = a.ItemId, DepotId = a.DepotId, WorkNo = a.WorkNo, DepotName = c.DepotName, Quantity = a.Quantity }) .ToList(); var womcaa = Db.Queryable().Where(s => s.Guid == womdaa.CaaGuid) .First(); if (womcaa == null) { throw new Exception("生产任务单不存在"); } var dto = new ProductionPickDto { daa001 = womdaa.Daa001, PlanNo = womcaa.Caa020, items = DS_list, Ysitems = YS_list // yisao = mesInvItemOutCDetailsList }; return dto; } /// /// 获取工单条码信息 /// /// /// public dynamic getZsBarInfo(dynamic query) { var sql = string.Format(@"SELECT TOP 1 A.barCode AS zsBarcode, D.name AS lineName, D.line_no, B.daa001, C.item_no, C.item_name, C.item_model, A.quantity as barQty, B.daa008 as sumQty, isnull((SELECT count(1) FROM WORK_COLLECT WHERE processNo = '{0}' AND ABOUT_GUID = A.ABOUT_GUID),0) AS finQty, isnull((SELECT TOP 1 processNo FROM WORK_COLLECT WHERE WORK_COLLECT.barCode = '{1}' AND checkResult = '√' ORDER BY WORK_COLLECT.createDate DESC ),'') AS lastGx FROM WORK_TRAC_CODE A LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid LEFT JOIN MES_ITEMS C ON B.daa002 = C.item_id LEFT JOIN MES_WORKSHOP_LINE D ON A.lineId = D.id WHERE A.barCode = '{1}'", query.GX, query.Zsbarcode); var ZsBarInfo = Db.Ado.SqlQuery(sql); if (ZsBarInfo.Count < 1) { throw new Exception($"该追溯码{query.Zsbarcode}不存在不存在"); } return ZsBarInfo; } //获取生产 public dynamic getTraceability(dynamic query) { var sql = string.Format(@"SELECT processNo, A.barCode, B.lineId, line_no, name AS lineName, checkResult, C.USER_NAME FROM WORK_COLLECT A LEFT JOIN WORK_TRAC_CODE B ON A.barCode = B.barCode LEFT JOIN SYS_USER C ON C.ACCOUNT = A.createBy LEFT JOIN MES_WORKSHOP_LINE D ON B.lineId = D.id WHERE A.barCode = '{0}'", query.Zsbarcode); var Traceability = Db.Ado.SqlQuery(sql); return Traceability; } }