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 NPOI.POIFS.FileSystem; namespace Hh.Mes.Service.Base { public class BaseSimService : RepositorySqlSugar<base_sim> { public dynamic Load(PageReq pageReq, base_sim entity) { return ExceptionsHelp.Instance.ExecuteT(() => { var result = new Response<List<base_sim>>(); var expression = LinqWhere(entity); //先组合查询表达式 var query = Context.Queryable<base_sim>().Where(expression); //Exel为ture就不分页,因为导出的话是全部导出 if (pageReq != null) { int total = 0; result.Result = query.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(base_sim 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(base_sim entity) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); //判断如果关联了设备,禁止修改卡号 var historySimInfo = Context.Queryable<base_sim, base_sim_equipment_rel>((x, y) => x.simNumber == y.simNumber) .Where((x, y) => x.id == entity.id) .Select((x, y) => new { x.id, x.simNumber }) .First(); if (historySimInfo != null && entity.simNumber != historySimInfo.simNumber) { response.Code = 500; response.Status = false; response.Message = $"当前sim卡已经关联了设备,禁止修改卡号【{historySimInfo.simNumber}】,如果要修改请先解绑sim卡关联的设备!"; return 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(string[] ids) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); //判断如果关联了设备,禁止删除 var simNumber = ids[0]; var isSimInfo = Context.Queryable<base_sim_equipment_rel>().Any(x => x.simNumber == simNumber); if (isSimInfo) { response.Code = 500; response.Status = false; response.Message = "当前sim卡已经关联了设备,禁止删除卡号,如果要修改请先解绑sim卡关联的设备!"; return response; } Context.Deleteable<base_sim>(t => ids.Contains(t.simNumber)).ExecuteCommand(); return response; }); } public Response ExportData(base_sim entity) { return Load(null, entity); } public Expression<Func<base_sim, bool>> LinqWhere(base_sim model) { try { var exp = Expressionable.Create<base_sim>(); //数据过滤条件 //if (!string.IsNullOrWhiteSpace(model.XXX)) exp.And(x => x.XXX.Contains(model.XXX)); if (!string.IsNullOrWhiteSpace(model.simNumber)) { exp.And(x => x.simNumber.Contains(model.simNumber)); } if (!string.IsNullOrWhiteSpace(model.ip)) { exp.And(x => x.ip.Contains(model.ip)); } if (!string.IsNullOrWhiteSpace(model.suppliersInfo)) { exp.And(x => x.suppliersInfo.Contains(model.suppliersInfo)); } return exp.ToExpression();//拼接表达式 } catch (Exception ex) { throw new Exception($"{ex.Message}"); } } public dynamic BindEquipment(string simNumber, bool checkeds, string equipmentCode, string projectKeys) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); string[] strArray = equipmentCode.Split(new char[] { ',' }); var simBindCount = Context.Queryable<base_sim_equipment_rel>().Where(x => x.simNumber == simNumber).ToList().Count; if (strArray != null && strArray.Length > 0) { foreach (var item in strArray) { if (checkeds) { var isHave = Context.Queryable<base_sim_equipment_rel>() .Any(x => x.simNumber == simNumber && x.projectKey == new Guid(projectKeys) && x.equipmentCode == item); if (isHave) continue; //添加 if (simBindCount < 250 && !isHave) { base_sim_equipment_rel bser = new base_sim_equipment_rel(); bser.simNumber = simNumber; bser.equipmentCode = item; bser.projectKey = new Guid(projectKeys); Context.Insertable(bser).AddQueue(); response.Status = Context.SaveQueues() > 0; if (!response.Status) { response.Message = "添加SIM卡关联设备数据失败!"; return response; } } else { response.Message = "不可重复绑定!一张SIM卡只允许绑定250个设备,请选择其它SIM卡绑定"; return response; } } else { Context.Deleteable<base_sim_equipment_rel>(x => x.simNumber == simNumber && x.projectKey == new Guid(projectKeys) && x.equipmentCode == item).AddQueue(); response.Status = Context.SaveQueues() > 0; if (!response.Status) { response.Message = "删除sim卡与设备绑定关系数据失败!"; return response; } } } } response.Message = "业务数据操作成功,稍后刷新列表数据!"; return response; }); } } }