package com.ld.igds.common.impl;
|
|
import com.ld.igds.common.CoreSnapService;
|
import com.ld.igds.common.mapper.SnapSerMapper;
|
import com.ld.igds.constant.Constant;
|
import com.ld.igds.models.SnapSer;
|
import com.ld.igds.util.ContextUtil;
|
import com.ld.igds.util.RedisUtil;
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.*;
|
|
@Component(CoreSnapService.BEAN_ID)
|
public class CoreSnapServiceImpl implements CoreSnapService {
|
|
|
/**
|
* 抓拍分机缓存前缀
|
*/
|
private String CACHE_KEY_PRE = "SNAP_SER";
|
|
/**
|
* 断电抓拍标记前缀
|
*/
|
private String CACHE_KEY_TAG = "SNAP_TAG";
|
|
@Autowired
|
private SnapSerMapper snapSerMapper;
|
|
@Autowired
|
private RedisUtil redisUtil;
|
|
|
@Override
|
public void setCacheSer(SnapSer snapSer) {
|
if (null == snapSer.getDeptId()) snapSer.setDeptId("0000");
|
String key = CACHE_KEY_PRE + ":" + snapSer.getDeptId() + ":" + snapSer.getSn();
|
redisUtil.set(key, snapSer);
|
}
|
|
@Override
|
public SnapSer getCacheSer(String deptId) {
|
String patten = Constant.APP_NAME + ":" + CACHE_KEY_PRE;
|
Set<String> keys = redisUtil.keys(patten);
|
for (String key : keys) {
|
if (key.indexOf(deptId) >= 0) {
|
return (SnapSer) redisUtil.get(key);
|
}
|
}
|
return null;
|
}
|
|
@Override
|
public SnapSer getCacheSerBySn(String sn) {
|
Set<String> keys = redisUtil.keys(CACHE_KEY_PRE);
|
for (String key : keys) {
|
if (key.indexOf(sn) >= 0) {
|
return (SnapSer) redisUtil.get(key);
|
}
|
}
|
return null;
|
}
|
|
@Override
|
public int updateBySn(String status, String ip, Integer port, String sn) {
|
return snapSerMapper.updateBySn(status, ip, port, sn);
|
}
|
|
@Override
|
public void allOffLine(String companyId) {
|
snapSerMapper.allOffLine(companyId);
|
}
|
|
@Override
|
public void offLine(String sn) {
|
snapSerMapper.offLine(sn);
|
}
|
|
@Override
|
public void connectAdd(String sn, String ip, int port) {
|
int result = updateBySn(Constant.YN_Y, ip, port, sn);
|
|
if (result == 0) {
|
SnapSer ser = new SnapSer();
|
ser.setCompanyId(ContextUtil.getDefaultCompanyId());
|
ser.setId(ContextUtil.getUUID());
|
ser.setName("自动添加");
|
ser.setPort(port);
|
ser.setSn(sn);
|
ser.setIp(ip);
|
ser.setStatus(Constant.YN_Y);
|
ser.setUpdateTime(new Date());
|
snapSerMapper.addSer(ser);
|
|
//添加设备
|
this.setCacheSer(ser);
|
}
|
}
|
|
@Override
|
public void setSnapTag(SnapSer snapSer, String warnId) {
|
String key = CACHE_KEY_TAG + ":" + snapSer.getSn();
|
Map<String, String> map = new HashMap<>();
|
map.put("deptId", snapSer.getCompanyId());
|
map.put("companyId", snapSer.getCompanyId());
|
map.put("outId", warnId);
|
map.put("snapSn", snapSer.getSn());
|
map.put("start", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm"));
|
|
//默认存8个小时,后面不管上不上电不在抓拍
|
redisUtil.set(key, map, 8 * 60 * 60);
|
}
|
|
@Override
|
public void removeSnapTag(SnapSer snapSer) {
|
String key = CACHE_KEY_TAG + ":" + snapSer.getSn();
|
redisUtil.del(key);
|
}
|
|
@SuppressWarnings("unchecked")
|
@Override
|
public List<Map<String, String>> getCacheSnapTag() {
|
List<Map<String, String>> array = new ArrayList<>();
|
Set<String> keys = redisUtil.keys(CACHE_KEY_TAG);
|
Map<String, String> result;
|
for (String key : keys) {
|
result = (Map<String, String>) redisUtil.get(key);
|
if (null != result) array.add(result);
|
}
|
return array.size() > 0 ? array : null;
|
}
|
}
|