package com.fzzy.igds.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fzzy.igds.constant.Constant; import com.fzzy.igds.constant.RedisConst; import com.fzzy.igds.domain.GatewaySer; import com.fzzy.igds.mapper.GatewaySerMapper; import com.fzzy.igds.utils.ContextUtil; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.service.ISysDeptService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; /** * @Description * @Author CZT * @Date 2025/12/10 16:48 */ @Slf4j @Service public class GatewaySerService { @Resource private GatewaySerMapper gatewaySerMapper; @Resource private ISysDeptService iSysDeptService; @Resource private RedisCache redisCache; /** * 根据条件查询分机信息 * * @param companyId * @param deptId * @param parentId * @return */ public List listDeviceSer(String companyId, String deptId, String parentId) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (StringUtils.isNotBlank(companyId)) { queryWrapper.eq("company_id", companyId); } if (StringUtils.isNotBlank(deptId)) { queryWrapper.eq("dept_id", deptId); } if (StringUtils.isNotBlank(parentId)) { queryWrapper.likeRight("dept_id", parentId); } return gatewaySerMapper.selectList(queryWrapper); } /** * 查询分机列表 * * @return */ public List getAllSer() { SysUser user = ContextUtil.getLoginUser(); SysDept userDept = iSysDeptService.selectDeptById(user.getDeptId()); if (Constant.DEPT_TYPE_20.equals(userDept.getType())) { return this.listDeviceSer(null, user.getDeptId() + "", null); } else { return this.listDeviceSer(null, null, user.getDeptId() + ""); } } /** * 根据条件查询分机信息 * * @param id * @return */ public GatewaySer getById(String id) { if(StringUtils.isBlank( id)){ return null; } return gatewaySerMapper.selectById(id); } /** * 更新保存分机 * * @param ser */ public void saveSer(GatewaySer ser) { if (null == ser.getSn()) { ser.setSn(ser.getId()); } if(null == ser.getOrderNum()){ ser.setOrderNum(1); } if (StringUtils.isEmpty(ser.getCompanyId())) { ser.setCompanyId(ContextUtil.getCompanyId()); } if (StringUtils.isEmpty(ser.getDeptId())) { ser.setDeptId(ContextUtil.subDeptId(null)); } if (StringUtils.isBlank(ser.getUpdateBy())) { ser.setCreateBy(ContextUtil.getLoginUserName()); ser.setCreateTime(new Date()); ser.setUpdateBy(ContextUtil.getLoginUserName()); ser.setUpdateTime(new Date()); gatewaySerMapper.insert(ser); } else { ser.setUpdateBy(ContextUtil.getLoginUserName()); ser.setUpdateTime(new Date()); gatewaySerMapper.updateById(ser); } refreshCache(ser.getCompanyId()); } /** * 更新保存分机 * * @param ser */ public void delSer(GatewaySer ser) { gatewaySerMapper.deleteById(ser); //删除缓存 delCache(ser); } /** * 根据分机ID获取分机信息 * * @param companyId * @param deptId * @return */ public List getCacheSerByDeptId(String companyId, String deptId) { if (StringUtils.isEmpty(deptId)) { return null; } if (StringUtils.isEmpty(companyId)) { companyId = ContextUtil.getCompanyId(); } String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST, deptId) + "*"; Collection keys = redisCache.keys(patten); if (null == keys) { return null; } List list = new ArrayList<>(); for (String key : keys) { list.add((GatewaySer) redisCache.getCacheObject(key)); } return list; } /** * 根据分机ID获取分机信息 * * @param companyId * @param id * @return */ public GatewaySer getCacheSerById(String companyId, String id) { if (StringUtils.isEmpty(id)) { return null; } if (StringUtils.isEmpty(companyId)) { companyId = ContextUtil.getCompanyId(); } String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST) + "*"; Collection keys = redisCache.keys(patten); if (null == keys) { return null; } List list = new ArrayList<>(); GatewaySer ser = null; for (String key : keys) { ser = (GatewaySer) redisCache.getCacheObject(key); if(id.equals(ser.getId())){ break; } } if(null == ser){ ser = getById(id); this.setCacheSer(ser); } return ser; } /** * 刷新缓存 * * @param companyId */ public void refreshCache(String companyId) { if (StringUtils.isEmpty(companyId)) { companyId = ContextUtil.getCompanyId(); } List list = this.listDeviceSer(companyId, null, null); this.setCacheSer(list); } /** * 设置缓存 * @param data */ public void setCacheSer(GatewaySer data) { if (null == data) { return; } String key = RedisConst.buildKey(data.getCompanyId(), RedisConst.KEY_GATEWAY_SER_LIST, data.getDeptId(), data.getId()); redisCache.setCacheObject(key, data); } /** * 设置缓存 * @param data */ public void setCacheSer(List data) { if (null == data) { return; } for (GatewaySer ser : data) { this.setCacheSer( ser); } } /** * 删除缓存信息 * @param ser */ public void delCache(GatewaySer ser) { if (null == ser) { return; } String key = RedisConst.buildKey(ser.getCompanyId(), RedisConst.KEY_GATEWAY_SER_LIST, ser.getDeptId(), ser.getId()); redisCache.deleteObject(key); } }