using iWareCommon.Utils; using iWareLog.ORM; using iWareLog.Report.Helper; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareLog.Report.Service { public class InOutService { private static object Lock = new object(); private static InOutService Instance = null; /// /// 获取单例的方法 /// /// 单例实体 public static InOutService GetInstance() { if (Instance == null) { lock (Lock) { if (Instance == null) { Instance = new InOutService(); } } } return Instance; } /// /// 根据出入库类型,物料类型查询 /// /// /// /// public List GetMaterial(DateTime start, DateTime end, int type) { using (DbModelLog context = new DbModelLog()) { try { string sql = @"select count(B.typename)quantity,B.typename materialcode from InOutStorageDetail A left join WGQ_WB19011_CORE.[dbo].[BASEMaterialView] B on A.materialid=B.id where A.type=@p0 and A.updatetime>=@p1 and A.updatetime<@p2 group by B.typename"; List data = context.Database.SqlQuery(sql, type, start, end).ToList(); return data; } catch (Exception ex) { LogTextHelper.WriteLine("InOutService", "GetInMaterial", ex.ToString()); return null; } } } /// /// 查询出入库明细及物料信息(联查 InOutStorageDetail 和 BASEMaterialView) /// /// 返回包含型材编码、船号、分段号、业务标识、库位、时间等信息的列表 public List GetInOutStorageDetailListForMes() { using (DbModelLog context = new DbModelLog()) { try { string sql = @" SELECT A.id AS Id, B.code AS Code, B.issueprojectno AS IssueProjectNo, B.serialno AS SerialNo, A.type AS BusinessFlag, A.toplacecode AS PlaceCode, A.createtime AS Timestamp, A.createtime AS OccurrenceTime FROM InOutStorageDetail A INNER JOIN WGQ_WB19011_CORE.[dbo].[BASEMaterialView] B ON A.materialid = B.id And A.isSendToMes=1 "; // 执行 SQL 查询,并映射到自定义类 InOutStorageDetailResult var data = context.Database.SqlQuery(sql).ToList(); return data; } catch (Exception ex) { // 记录异常日志(和你原有方法保持一致) LogTextHelper.WriteLine("InOutService", "GetInOutStorageDetailList", ex.ToString()); return null; // 或者返回 new List(),根据你的业务需求 } } } } }