FleetLineTemplateServiceImpl.java 4.41 KB
package com.ruoyi.template.service.impl;

import com.alibaba.fastjson2.JSON;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.template.domain.FleetLineTemplate;
import com.ruoyi.template.mapper.FleetLineTemplateMapper;
import com.ruoyi.template.service.IFleetLineTemplateService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 车队与线路对应模板Service业务层处理
 *
 * @author guzijian
 * @date 2023-12-04
 */
@Slf4j
@Service
public class FleetLineTemplateServiceImpl implements IFleetLineTemplateService {
    @Autowired
    private FleetLineTemplateMapper fleetLineTemplateMapper;

    @Autowired
    private RedisCache redisCache;

    private static final String CONFIG_LINE = "config:fleet:line:template";

    /**
     * 查询车队与线路对应模板
     *
     * @param id 车队与线路对应模板主键
     * @return 车队与线路对应模板
     */
    @Override
    public FleetLineTemplate selectFleetLineTemplateById(String id) {
        return fleetLineTemplateMapper.selectFleetLineTemplateById(id);
    }

    /**
     * 查询车队与线路对应模板列表
     *
     * @param fleetLineTemplate 车队与线路对应模板
     * @return 车队与线路对应模板
     */
    @Override
    public List<FleetLineTemplate> selectFleetLineTemplateList(FleetLineTemplate fleetLineTemplate) {
        return fleetLineTemplateMapper.selectFleetLineTemplateList(fleetLineTemplate);
    }

    @Override
    public List<FleetLineTemplate> selectFleetLineTemplateList() {
        List<FleetLineTemplate> fleetLineTemplates = getFleetLineTemplateOfRedis();
        if (CollectionUtils.isEmpty(fleetLineTemplates)) {
            fleetLineTemplates = selectFleetLineTemplateList(new FleetLineTemplate());
            if (CollectionUtils.isNotEmpty(fleetLineTemplates)) {
                redisCache.setCacheObject(CONFIG_LINE, JSON.toJSONString(fleetLineTemplates));
            }
        }

        return fleetLineTemplates;
    }

    /**
     * 新增车队与线路对应模板
     *
     * @param fleetLineTemplate 车队与线路对应模板
     * @return 结果
     */
    @Override
    public int insertFleetLineTemplate(FleetLineTemplate fleetLineTemplate) {
        fleetLineTemplate.setCreateTime(DateUtils.getNowDate());
        fleetLineTemplate.setCreateBy(SecurityUtils.getUsername());
        return fleetLineTemplateMapper.insertFleetLineTemplate(fleetLineTemplate);
    }

    /**
     * 修改车队与线路对应模板
     *
     * @param fleetLineTemplate 车队与线路对应模板
     * @return 结果
     */
    @Override
    public int updateFleetLineTemplate(FleetLineTemplate fleetLineTemplate) {
        fleetLineTemplate.setUpdateTime(DateUtils.getNowDate());
        fleetLineTemplate.setUpdateBy(SecurityUtils.getUsername());
        return fleetLineTemplateMapper.updateFleetLineTemplate(fleetLineTemplate);
    }

    /**
     * 批量删除车队与线路对应模板
     *
     * @param ids 需要删除的车队与线路对应模板主键
     * @return 结果
     */
    @Override
    public int deleteFleetLineTemplateByIds(String[] ids) {
        return fleetLineTemplateMapper.deleteFleetLineTemplateByIds(ids);
    }

    /**
     * 删除车队与线路对应模板信息
     *
     * @param id 车队与线路对应模板主键
     * @return 结果
     */
    @Override
    public int deleteFleetLineTemplateById(String id) {
        return fleetLineTemplateMapper.deleteFleetLineTemplateById(id);
    }

    @Override
    public void deleteAllTemplate() {
        fleetLineTemplateMapper.deleteAllTemplate();
    }

    @Override
    public void insertBatch(List<FleetLineTemplate> templateList) {
        fleetLineTemplateMapper.insertBatch(templateList);
    }

    private List<FleetLineTemplate> getFleetLineTemplateOfRedis() {
        try {
            String json = redisCache.getCacheObject(CONFIG_LINE);
            if (StringUtils.isNotEmpty(json)) {
                return JSON.parseArray(json, FleetLineTemplate.class);
            }
        } catch (Exception e) {
            log.error("从redis中获取数据异常[{}]", CONFIG_LINE, e);
        }
        return null;
    }
}