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<GatewaySer> listDeviceSer(String companyId, String deptId, String parentId) {
|
|
QueryWrapper<GatewaySer> 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<GatewaySer> 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<GatewaySer> 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<String> keys = redisCache.keys(patten);
|
if (null == keys) {
|
return null;
|
}
|
|
List<GatewaySer> 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<String> keys = redisCache.keys(patten);
|
if (null == keys) {
|
return null;
|
}
|
|
List<GatewaySer> 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<GatewaySer> 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<GatewaySer> 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);
|
}
|
|
}
|