using Ant.Data; using Ant.ORM; using Ant.SuperSocket.Common; using Ant.Service.Common; using Ant.Service.Common.Enums; using MES.Production.Entity; using MES.Production.Entity.Entity; using MES.Production.Entity.Enum; using MES.Production.Entity.Extensions; using MES.Production.Entity.ResponseMod.DeviceMgt; using Ant.Service.Mongodb; using ChangFa.Machinery.WebPage.Controllers; using MongoDB.Driver.Builders; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Web; using System.Web.Mvc; using JsonHelper = Ant.Service.Common.JsonHelper; namespace ChangFa.Machinery.WebPage.Areas.SysManage.Controllers { public class DeviceMgtController : BaseController { /// /// 设备列表 /// /// /// [UserAuthorize(ModuleAlias = "DeviceMgtInfo", OperaAction = "View")] public ActionResult Index() { try { #region 加载列表 using (Ant.ORM.AntORM orm = new Ant.ORM.AntORM()) { orm.db = Ant.Data.DataAccessFactory.CreateDataConnection("CyclingItem"); Ant.ORM.RequestModel request = new Ant.ORM.RequestModel(); request.newSt = new Ant.ORM.SqlNote() { Author = "smj", NewSt = new System.Diagnostics.StackTrace(true), SqlDesc = "DeviceMgtController-Index" }; var query = orm.Queryable().Where(p => p.IsDelete == 0); // 检索条件 query = query.WhereIf(!string.IsNullOrEmpty(keywords), p => p.Name.Contains(keywords)); // 分页查询 var skipLimit = PageCollection.GetSkipLimit(base.page, base.pagesize); // 具体查询 var list = query.OrderByDesc(o => o.ModifyDT).Skip(skipLimit.Item1).Top(skipLimit.Item2).ToList(request); // 查出总数 var total = query.Count(); List devices = list.ResultModel; var result = devices?.Select(device => new DeviceMgtIndexDto() { Id = device.Id, Name = device.Name, Code = device.Code, Address = device.Address }).ToList(); #region 查询出设备的部品和打包盒信息 var deviceIds = devices?.Select(p => p.Id).ToList(); if (deviceIds?.Count() > 0) { // 查询设备打包盒信息 var devicePacking = orm.Queryable().Where(p => deviceIds.Contains(p.DeviceId)); var packing = orm.Queryable(); //连表查询 var ss1 = devicePacking.InnerJoin(packing, (dp, p) => dp.PackingId == p.Id).Select((dp, p) => new DeviceMgtIndexDto { Id = dp.DeviceId, DevicePackingId = dp.Id, PackingId = p.Id, PackingName = p.Name, PackingCapacity = dp.Capacity, PackingStock = dp.Stock }).ToList(request); List pcakings = ss1?.ResultModel; // 查询设备商品信息 var deviceProduct = orm.Queryable().Where(p => deviceIds.Contains(p.DeviceId)); var product = orm.Queryable(); //连表查询 List products = deviceProduct.InnerJoin(product, (dp, p) => dp.ProductId == p.Id).Select((dp, p) => new DeviceMgtIndexDto { Id = dp.DeviceId, DeviceProductId = dp.Id, ProductId = p.Id, ProductName = p.Name, ProductPrice = dp.Price, ProductStock = dp.Stock }).ToList(request)?.ResultModel; result?.ForEach(item => { var currentPacking = pcakings?.FirstOrDefault(p => p.Id == item.Id); if (currentPacking != null) { item.DevicePackingId = currentPacking.DevicePackingId; item.PackingId = currentPacking.PackingId; item.PackingName = currentPacking.PackingName; item.PackingCapacity = currentPacking.PackingCapacity; item.PackingStock = currentPacking.PackingStock; } var currentProduct = products?.FirstOrDefault(p => p.Id == item.Id); if (currentProduct != null) { item.DeviceProductId = currentProduct.DeviceProductId; item.ProductId = currentProduct.ProductId; item.ProductName = currentProduct.ProductName; item.ProductPrice = currentProduct.ProductPrice; item.ProductStock = currentProduct.ProductStock; } }); } #endregion var resultDto = new PageInfo(base.page, base.pagesize, total, result); ViewBag.Search = base.keywords; return View(resultDto); } #endregion } catch (Exception e) { WriteLog(enumOperator.Select, "加载设备列表:", e); throw e.InnerException; } } // GET: SysManage/Device public ActionResult DeviceManage() { PageInfo pageInfo = new PageInfo(base.page, base.pagesize, 0, JsonConverter.JsonClass(new List())); using (AntORM orm = new AntORM()) { orm.db = DataAccessFactory.CreateDataConnection("CyclingItem"); RequestModel res = new RequestModel(); res.newSt = new SqlNote() { Author = "季健国", NewSt = new System.Diagnostics.StackTrace(true), SqlDesc = "查询菜单的单个实体方法" }; int pageno = (page - 1) * pagesize; var q = orm.Queryable(); if (!keywords.IsEmpty()) { q = q.Where(p => p.IMEI.Contains(keywords)); } var result = q.OrderByDesc(p => p.LastOnlineTime).Skip(pageno).Top(pagesize).ToList(res); if (result.IsSuccess) { result.RecordNum = q.Count(); } else { result = new ResponseModel(); result.RecordNum = 0; result.ResultModel = new List(); } pageInfo = new PageInfo(base.page, base.pagesize, result.RecordNum, JsonConverter.JsonClass(result.ResultModel)); } ViewBag.Search = base.keywords; return View(pageInfo); } } }