jinpengyong
2021-09-10 c8aa05fd65cc788abc0f44494338b04993e3b4be
screen-manage/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
New file
@@ -0,0 +1,222 @@
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.GovMonitorPoint;
import com.moral.api.entity.SysArea;
import com.moral.api.mapper.GovMonitorPointMapper;
import com.moral.api.mapper.SysAreaMapper;
import com.moral.api.service.GovMonitorPointService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.constant.ResponseCodeEnum;
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.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * <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;
    /*
     * 从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(govMonitorPoint.getName()+";").append(":").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;
    }
}