using Hh.Mes.Common.Infrastructure; using Hh.Mes.Common.log; using Hh.Mes.Common.Request; using Hh.Mes.POJO.Entity; using Hh.Mes.POJO.Response; using Hh.Mes.Service.Repository; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using Hh.Mes.Pojo.System; using Hh.Mes.POJO.WebEntity.bus; using Hh.Mes.POJO.WMSEntity; using System.Text; namespace Hh.Mes.Service.Configure { /// <summary> /// sn项目信息头表 WMS推送 /// </summary> public class BusSnProjectInfoWmsService : RepositorySqlSugar<bus_sn_project_info_wms_head> { public dynamic Load(PageReq pageReq, bus_sn_project_info_wms_head entity) { return ExceptionsHelp.Instance.ExecuteT(() => { var result = new Response(); var expression = LinqWhere(entity); //先组合查询表达式(多表查询查看IOT 设备列表案例) var query = Context.Queryable<bus_sn_project_info_wms_head>().Where(expression); //Exel false 分页 if (!entity.Exel) { int total = 0; result.Result = query.Select(x => new { x.id, x.keys, x.correlatedCode, x.equipmentType, x.sn, snStatus = SqlFunc.Subqueryable<base_equipment>().Where(s => s.equipmentCode == x.sn).Any(), userName = SqlFunc.Subqueryable<sys_user>().Where(s => s.account == x.userBy).Select(s => s.name), x.userBy, x.createBy, x.createTime, }).ToOffsetPage(pageReq.page, pageReq.limit, ref total); result.Count = total; } else { result.Result = query.ToList(); result.Count = result.Result.Count; } return result; }, catchRetrunValue: "list"); } public dynamic Ins(bus_sn_project_info_wms_head entity) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); entity.createBy = sysWebUser.Account; entity.createTime = DateTime.Now; response.Status = Add(entity); if (!response.Status) response.Message = SystemVariable.dataActionError; return response; }); } public dynamic Upd(bus_sn_project_info_wms_head entity) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); //entity.updateBy = sysWebUser.Account; //entity.updateTime = DateTime.Now; response.Status = Update(entity); if (!response.Status) response.Message = SystemVariable.dataActionError; return response; }); } public dynamic DelByIds(int[] ids) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); Context.Deleteable<bus_sn_project_info_wms_head>(t => ids.Contains(t.id)).ExecuteCommand(); return response; }); } /// <summary> /// //获取明细列表 支持导出查询 /// </summary> public Response LoadDesc(PageReq pageReq, bus_sn_project_info_wms_detail model) { var totalCount = 0; var result = new Response(); var query = base.Context.Queryable<bus_sn_project_info_wms_detail>(); var data = model.headkeysList != null ? query.In(x => x.headKey, model.headkeysList).ToList() : query.Where(x => x.headKey == model.headKey).OrderBy(x => x.createTime).ToOffsetPage(pageReq.page, pageReq.limit, ref totalCount); //页码,页数 result.Result = data; result.Count = totalCount; return result; } public Response ExportData(bus_sn_project_info_wms_head entity) { return ExceptionsHelp.Instance.ExecuteT(() => { Response result = Load(null, entity); if (result.Count == 0) { result.Result = null; result.Message = SystemVariable.queryNotData; result.Code = -1; return result; } var guids = new List<Guid>(); foreach (var item in result.Result) { guids.Add((Guid)item.keys); } var data = LoadDesc(null, new bus_sn_project_info_wms_detail { headkeysList = guids }); result.Result = new { head = result.Result, body = data.Result }; return result; }, catchRetrunValue: "list"); } public Expression<Func<bus_sn_project_info_wms_head, bool>> LinqWhere(bus_sn_project_info_wms_head model) { try { var exp = Expressionable.Create<bus_sn_project_info_wms_head>(); //数据过滤条件 //if (!string.IsNullOrWhiteSpace(model.XXX)) exp.And(x => x.XXX.Contains(model.XXX)); if (!string.IsNullOrWhiteSpace(model.sn)) { exp.And(x => x.sn.Contains(model.sn)); } if (!string.IsNullOrWhiteSpace(model.correlatedCode)) { exp.And(x => x.correlatedCode.Contains(model.correlatedCode)); } if (!string.IsNullOrWhiteSpace(model.equipmentType)) { exp.And(x => x.equipmentType.Contains(model.equipmentType)); } return exp.ToExpression();//拼接表达式 } catch (Exception ex) { throw new Exception($"{ex.Message}"); } } public dynamic GetTreeList() { return ExceptionsHelp.Instance.ExecuteT(() => { var stringBuilder = new StringBuilder(); var nodes = new List<dynamic>(); var rootNode = new { id = Guid.NewGuid(), name = "根节点", keys = "r-1", parentId = "0", isok = false, projectKeys = Guid.Empty, }; var tempNode1 = new { id = Guid.NewGuid().ToString("N"), name = "IOT已使用", keys = "r-2", parentId = rootNode.keys, isok = false, }; var tempNode2 = new { id = Guid.NewGuid().ToString("N"), name = "IOT未使用", keys = "r-3", parentId = rootNode.keys, isok = false, }; var temp1 = Context.Queryable<bus_sn_project_info_wms_head>() .Where(x => SqlFunc.Subqueryable<base_project>().Where(s => s.projectCode == x.correlatedCode).Any()) .OrderBy(x => x.correlatedCode).Select(x => x.correlatedCode).Distinct().ToList(); var temp2 = Context.Queryable<bus_sn_project_info_wms_head>() .Where(x => SqlFunc.Subqueryable<base_project>().Where(s => s.projectCode == x.correlatedCode).NotAny()) .OrderBy(x => x.correlatedCode).Select(x => x.correlatedCode).Distinct().ToList(); var data1 = temp1.Select(code => new { id = Guid.NewGuid().ToString("N"), name = code, keys = code, parentId = tempNode1.keys, isok = true, }).ToList(); var data2 = temp2.Select(code => new { id = Guid.NewGuid().ToString("N"), name = code, keys = code, parentId = tempNode2.keys, isok = true, }).ToList(); nodes.Add(rootNode); nodes.Add(tempNode1); nodes.Add(tempNode2); nodes.AddRange(data1); nodes.AddRange(data2); return nodes; }); } } }