package com.moral.api.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.moral.api.entity.Device;
|
import com.moral.api.entity.GovMonitorPoint;
|
import com.moral.api.entity.Organization;
|
import com.moral.api.entity.SysArea;
|
import com.moral.api.mapper.DeviceMapper;
|
import com.moral.api.mapper.GovMonitorPointMapper;
|
import com.moral.api.mapper.SysAreaMapper;
|
import com.moral.api.service.DeviceService;
|
import com.moral.api.service.GovMonitorPointService;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.moral.api.service.OrganizationService;
|
import com.moral.api.util.LogUtils;
|
import com.moral.constant.Constants;
|
import com.moral.constant.RedisConstants;
|
import com.moral.constant.ResponseCodeEnum;
|
import com.moral.util.RegionCodeUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author moral
|
* @since 2021-09-09
|
*/
|
@Service
|
public class GovMonitorPointServiceImpl extends ServiceImpl<GovMonitorPointMapper, GovMonitorPoint> implements GovMonitorPointService {
|
|
@Autowired(required = false)
|
private GovMonitorPointMapper govMonitorPointMapper;
|
|
@Autowired(required = false)
|
private SysAreaMapper sysAreaMapper;
|
|
@Autowired(required = false)
|
private RedisTemplate redisTemplate;
|
|
@Autowired
|
private LogUtils logUtils;
|
|
@Resource
|
private OrganizationService organizationService;
|
|
@Autowired(required = false)
|
private DeviceMapper deviceMapper;
|
|
/*
|
* 从redis获取设备信息
|
* */
|
private Map<String, Object> getGovMonitorPointInfoFromRedis(String id) {
|
return (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.GOV_MONITOR_POINT, id);
|
}
|
|
/*
|
* 设备信息存入redis
|
*/
|
private void setGovMonitorPointInfoToRedis(String id, GovMonitorPoint govMonitorPointInfo) {
|
redisTemplate.opsForHash().put(RedisConstants.GOV_MONITOR_POINT, id, govMonitorPointInfo);
|
}
|
|
/*
|
* 从redis删除设备信息
|
*/
|
private void delGovMonitorPointInfoFromRedis(String id) {
|
redisTemplate.opsForHash().delete(RedisConstants.GOV_MONITOR_POINT, id);
|
}
|
|
@Override
|
public Map<String, Object> getDataByCondition(Map map) {
|
Map<String, Object> resultMap = new HashMap<>();
|
if (!map.containsKey("current") || !map.containsKey("size")) {
|
resultMap.put("code", ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
|
resultMap.put("msg", ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
|
return resultMap;
|
}
|
int current = Integer.parseInt(map.get("current").toString());
|
int size = Integer.parseInt(map.get("size").toString());
|
Page<GovMonitorPoint> page = new Page<>(current, size);
|
QueryWrapper<GovMonitorPoint> wrapper_Condition = new QueryWrapper<>();
|
wrapper_Condition.eq("is_delete", Constants.NOT_DELETE);
|
if (!ObjectUtils.isEmpty(map.get("name"))) {
|
wrapper_Condition.like("name", map.get("name").toString());
|
}
|
if (!ObjectUtils.isEmpty(map.get("stationLevel"))) {
|
wrapper_Condition.like("station_level", map.get("stationLevel").toString());
|
}
|
wrapper_Condition.orderByDesc("create_time");
|
Page resultPage = govMonitorPointMapper.selectPage(page, wrapper_Condition);
|
int totalNumber = govMonitorPointMapper.selectCount(wrapper_Condition);
|
List<GovMonitorPoint> govMonitorPoints = resultPage.getRecords();
|
SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
List<Map<String, Object>> govMonitorPointList = new ArrayList<>();
|
for (GovMonitorPoint govMonitorPoint : govMonitorPoints) {
|
Map govMonitorPointMap = JSON.parseObject(JSON.toJSONString(govMonitorPoint), Map.class);
|
String createTime = SDF.format(govMonitorPoint.getCreateTime());
|
String updateTime = SDF.format(govMonitorPoint.getUpdateTime());
|
govMonitorPointMap.put("createTime", createTime);
|
govMonitorPointMap.put("updateTime", updateTime);
|
String position = "";
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getProvinceCode())) {
|
QueryWrapper<SysArea> wrapper_province = new QueryWrapper<>();
|
wrapper_province.eq("area_code", govMonitorPoint.getProvinceCode());
|
SysArea sysArea_provice = sysAreaMapper.selectOne(wrapper_province);
|
if (!ObjectUtils.isEmpty(sysArea_provice)) {
|
position = position + sysArea_provice.getAreaName();
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getCityCode())) {
|
QueryWrapper<SysArea> wrapper_city = new QueryWrapper<>();
|
wrapper_city.eq("area_code", govMonitorPoint.getCityCode());
|
SysArea sysArea_city = sysAreaMapper.selectOne(wrapper_city);
|
if (!ObjectUtils.isEmpty(sysArea_city)) {
|
position = position + "/" + sysArea_city.getAreaName();
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getAreaCode())) {
|
QueryWrapper<SysArea> wrapper_area = new QueryWrapper<>();
|
wrapper_area.eq("area_code", govMonitorPoint.getAreaCode());
|
SysArea sysArea_area = sysAreaMapper.selectOne(wrapper_area);
|
if (!ObjectUtils.isEmpty(sysArea_area)) {
|
position = position + "/" + sysArea_area.getAreaName();
|
}
|
}
|
}
|
}
|
}
|
}
|
govMonitorPointMap.put("position", position);
|
govMonitorPointList.add(govMonitorPointMap);
|
}
|
resultMap.put("govMonitorPointList", govMonitorPointList);
|
resultMap.put("totalNumber", totalNumber);
|
resultMap.put("current", current);
|
int totalPageNumber = totalNumber / size;
|
if (totalNumber % size != 0) {
|
totalPageNumber += 1;
|
}
|
resultMap.put("totalPageNumber", totalPageNumber);
|
return resultMap;
|
}
|
|
@Transactional
|
@Override
|
public void insert(GovMonitorPoint govMonitorPoint) {
|
int count = govMonitorPointMapper.insert(govMonitorPoint);
|
//数据插入redis
|
setGovMonitorPointInfoToRedis(govMonitorPoint.getId().toString(), selectGovMonitorPointInfoById(govMonitorPoint.getId()));
|
if (count > 0) {
|
//操作日志记录
|
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
|
StringBuilder content = new StringBuilder();
|
content.append("添加了政府站点:").append("id:").append(govMonitorPoint.getId() + ";").append("name:").append(govMonitorPoint.getName() + ";").append("guid:").append(govMonitorPoint.getGuid() + ";");
|
logUtils.saveOperationForManage(request, content.toString(), Constants.INSERT_OPERATE_TYPE);
|
}
|
}
|
|
@Transactional
|
@Override
|
public void update(GovMonitorPoint govMonitorPoint) {
|
Integer id = govMonitorPoint.getId();
|
GovMonitorPoint oldGovMonitorPoint = govMonitorPointMapper.selectById(id);
|
govMonitorPointMapper.updateById(govMonitorPoint);
|
//删除redis
|
delGovMonitorPointInfoFromRedis(id.toString());
|
//更新redis
|
setGovMonitorPointInfoToRedis(id.toString(), selectGovMonitorPointInfoById(id));
|
//操作日志记录
|
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
|
StringBuilder content = new StringBuilder();
|
content.append("修改了政府站点:").append("id:").append(govMonitorPoint.getId() + ";");
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getGuid())) {
|
content.append("guid:").append(oldGovMonitorPoint.getGuid()).append("->").append(govMonitorPoint.getGuid()).append(";");
|
}
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getName())) {
|
content.append("name:").append(oldGovMonitorPoint.getName()).append("->").append(govMonitorPoint.getName()).append(";");
|
}
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getLongitude())) {
|
content.append("longitude:").append(oldGovMonitorPoint.getLongitude()).append("->").append(govMonitorPoint.getLongitude()).append(";");
|
}
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getLatitude())) {
|
content.append("latitude:").append(oldGovMonitorPoint.getLatitude()).append("->").append(govMonitorPoint.getLatitude()).append(";");
|
}
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getProvinceCode())) {
|
content.append("provinceCode:").append(oldGovMonitorPoint.getProvinceCode()).append("->").append(govMonitorPoint.getProvinceCode()).append(";");
|
}
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getCityCode())) {
|
content.append("cityCode:").append(oldGovMonitorPoint.getCityCode()).append("->").append(govMonitorPoint.getCityCode()).append(";");
|
}
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getAreaCode())) {
|
content.append("areaCode:").append(oldGovMonitorPoint.getAreaCode()).append("->").append(govMonitorPoint.getAreaCode()).append(";");
|
}
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getStationLevel())) {
|
content.append("stationLevel:").append(oldGovMonitorPoint.getStationLevel()).append("->").append(govMonitorPoint.getStationLevel()).append(";");
|
}
|
if (!ObjectUtils.isEmpty(govMonitorPoint.getDesc())) {
|
content.append("desc:").append(oldGovMonitorPoint).append("->").append(govMonitorPoint.getDesc()).append(";");
|
}
|
logUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE);
|
}
|
|
@Override
|
public void delete(Integer id) {
|
UpdateWrapper<GovMonitorPoint> wrapper_delete = new UpdateWrapper<>();
|
wrapper_delete.eq("id", id).set("is_delete", Constants.DELETE);
|
govMonitorPointMapper.update(null, wrapper_delete);
|
//删除redis
|
delGovMonitorPointInfoFromRedis(id.toString());
|
//操作日志记录
|
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
|
StringBuilder content = new StringBuilder();
|
content.append("删除了设备:").append("id:").append(id).append(";");
|
logUtils.saveOperationForManage(request, content.toString(), Constants.DELETE_OPERATE_TYPE);
|
}
|
|
@Override
|
public GovMonitorPoint selectGovMonitorPointInfoById(int id) {
|
GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectById(id);
|
return govMonitorPoint;
|
}
|
|
@Override
|
public List<Map<String, Object>> selectGovMonitorPoints(String regionCode) {
|
QueryWrapper<GovMonitorPoint> queryWrapper = new QueryWrapper<>();
|
queryWrapper.select("guid", "name").eq("is_delete", Constants.NOT_DELETE);
|
if (!ObjectUtils.isEmpty(regionCode)) {
|
String regionName = RegionCodeUtils.regionCodeConvertToName(Integer.parseInt(regionCode));
|
queryWrapper.eq(regionName, regionCode);
|
}
|
return govMonitorPointMapper.selectMaps(queryWrapper);
|
}
|
|
@Override
|
public List<GovMonitorPoint> selectGovMonitorPointsByOrgid(Map map) {
|
//根据组织id获取子组织
|
List<Organization> organizations = organizationService.getAllChildrenOrganization(Integer.parseInt(map.get("organization_id").toString()));
|
Set<Integer> organization_ids = organizations.stream().map(organization -> organization.getId()).collect(Collectors.toSet());
|
//先获取组织下所有设备
|
QueryWrapper<Device> wrapper_device = new QueryWrapper<>();
|
wrapper_device.in("organization_id",organization_ids).eq("is_delete",Constants.NOT_DELETE);
|
List<Device> devices = deviceMapper.selectList(wrapper_device);
|
//用集合存放所有设备的id
|
Set<String> guids = devices.stream().map(device -> device.getGuid()).collect(Collectors.toSet());
|
//获取所有政府站点信息
|
QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>();
|
wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE).in("guid",guids);
|
List<GovMonitorPoint> govMonitorPointList = govMonitorPointMapper.selectList(wrapper_govMonitorPoint);
|
return govMonitorPointList;
|
}
|
}
|